
Ich versuche, mithilfe der Vorlage auf ihrer Website ein IEEE Access-Dokument zu schreiben. Aber ich habe Probleme beim Schreiben meiner Pseudocodes, da in ihrer Vorlage kein Pseudocodebeispiel vorhanden ist. Wenn ich die IEEEAccess-Vorlage verwende, erhalte ich Fehlermeldungen wie:
"Zusätzlicher \endcsname. \State",
"Undefinierte Steuersequenz. \doWhile",
"Fehlender \endcsname eingefügt. \State".
Außerdem sieht das Ergebnis nicht so aus, wie es sein sollte. So sind beispielsweise alle Zeilennummern im Pseudocode Nullen. Außerdem erhielt ich nach dem Kompilieren der .tex-Datei statt "input" und "output" "require" und "ensure".
Fehlt mir ein Benutzerpaket? (obwohl ich viele Kombinationen ausprobiert habe, immer noch kein Ergebnis erzielt) Kann mir bitte jemand ein Beispiel für IEEEAccess-Pseudocode zusammen mit den erforderlichen Benutzerpaketen geben?
\documentclass{ieeeaccess}
\usepackage{cite}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{graphicx}
\usepackage{textcomp}
\usepackage[section]{placeins}
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{algorithmicx}
\algdef{SE}[DOWHILE]{Do}{doWhile}{\algorithmicdo}[1]{\algorithmicwhile\ #1}%
\begin{document}
\begin{algorithm}[H]
\caption{Algorithm 1}\label{Alg-Decap}
\begin{algorithmic}[1]
\Require{$(C,S_k)$}
\Ensure{ HashSession$(1,\underbar r,C)$ or HashSession$(0,\rho,C))$ }
\State $c\leftarrow$ Decode$(\underbar c)$
\State $c.(3f)\in\mathcal{R}/q$
\State $e\leftarrow $ (Rounded$(c.(3f))$ mod 3) $\in \mathcal{R}/3$
\State $e.(1/g)\in\mathcal{R}/3$
\State $r'\leftarrow$ Lift($e.(1/g)$) $\in\mathcal{R}/q$
\State $h.r'\in\mathcal{R}/q$
\State $c'\leftarrow$ Round$(h.r')$
\State $\underbar c'\leftarrow$ Encode$(c')$
\State $C'\leftarrow(\underbar c',$ HashConfirm$(\underbar r',\underbar h))$
\If{$C'==C$}
\State \textbf{return} HashSession$(1,\underbar r,C)$
\Else
\State \textbf{ return} HashSession$(0,\rho,C))$
\EndIf
\end{algorithmic}
\end{algorithm}
\end{document}
Antwort1
Sie dürfen nicht sowohl algorithmic
als auch laden algpseudocode
. Da Sie die Syntax des letzteren verwenden, lassen Sie das erstere weg.
Falls Sie es wollenEingangUndAusgabe, definieren Sie die Infrastruktur für sie.
Wechseln Sie außerdem nicht in den Mathematikmodus und wieder heraus, und verwenden Sie nicht \underbar
, sondern \underline
.
\documentclass{ieeeaccess}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{algorithm}
\usepackage{algpseudocode}
\algdef{SE}[DOWHILE]{Do}{doWhile}{\algorithmicdo}[1]{\algorithmicwhile\ #1}%
\algnewcommand\algorithmicinput{\textbf{Input:}}
\algnewcommand\algorithmicoutput{\textbf{Output:}}
\algnewcommand\Input{\item[\algorithmicinput]}
\algnewcommand\Output{\item[\algorithmicoutput]}
% no in and out of math mode!
\newcommand{\Fun}[1]{\mathrm{#1}}
\begin{document}
\begin{algorithm}[htp]
\caption{Algorithm 1}\label{Alg-Decap}
\begin{algorithmic}[1]
\Input{$(C,S_k)$}
\Output{$\Fun{HashSession}(1,\underbar r,C)$ or $\Fun{HashSession}(0,\rho,C))$}
\State $c\leftarrow \Fun{Decode}(\underbar c)$
\State $c.(3f)\in\mathcal{R}/q$
\State $e\leftarrow (\Fun{Rounded}(c.(3f))\bmod 3)\in \mathcal{R}/3$
\State $e.(1/g)\in\mathcal{R}/3$
\State $r'\leftarrow \Fun{Lift}(e.(1/g)) \in\mathcal{R}/q$
\State $h.r'\in\mathcal{R}/q$
\State $c'\leftarrow \Fun{Round}(h.r')$
\State $\underline{c}'\leftarrow \Fun{Encode}(c')$
\State $C'\leftarrow(\underline{c}', \Fun{HashConfirm}(\underline{r}',\underline{h}))$
\If{$C'==C$}
\State \textbf{return} $\Fun{HashSession}(1,\underline{r},C)$
\Else
\State \textbf{return} $\Fun{HashSession}(0,\rho,C))$
\EndIf
\end{algorithmic}
\end{algorithm}
\EOD
\end{document}