algorithmisches Einrücken außerhalb eines Blocks

algorithmisches Einrücken außerhalb eines Blocks

Ich möchte die horizontale Position des gesamten Codes ändern. Wenn möglich, entfernen Sie die Polsterung. Wie kann ich das machen?

\begin{algorithm}[t!]
\algrenewcommand\algorithmicindent{.1em}%
\caption{With intent no indent}
    \begin{algorithmic}%\
    \Function{\publish[$c, data$]}{}
        \State{algorithmicindent works inside this block only}
    \EndFunction
    \end{algorithmic}%\
\end{algorithm}

Bildbeschreibung hier eingeben

Antwort1

algorithmicxrichtet die gesamte algorithmicUmgebung einListeStruktur am Anfang der Umgebung. Es wird davon ausgegangen, dass eine Zeilennummerierung vorhanden sein wird, und daher bleibt ein horizontaler Einzug. Wenn Sie niemals Zeilennummerierung verwenden möchten, können Sie einfach Folgendes \leftmarginerstellen \labelwidthund \labelsepein0ptxpatchvon \algorithmic:

Bildbeschreibung hier eingeben

\documentclass{article}

\usepackage{algorithm,algpseudocode}
\usepackage{xpatch}

\makeatletter
\xpatchcmd{\algorithmic}{\ALG@tlm\z@}{\ALG@tlm\z@\leftmargin 0pt}{}{}
\makeatother

\begin{document}

\begin{algorithm}
  \caption{With intent no indent}
  \begin{algorithmic}
  \Function{Publish[$c$, \textit{data}]}{}
    \State algorithmicindent works inside this block only
  \EndFunction
  \end{algorithmic}
\end{algorithm}

\end{document}

\xpatchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}Die Einstellung von wird unmittelbar danach angehängt . \leftmargin 0ptBeim \ALG@tlm\z@Erstellen der Liste geschieht dies unmittelbar, nachdem alle Messungen der Listenumgebung festgelegt wurden.

Hier ist eine Ansicht der algorithmicUmgebung, wie sie definiert ist inalgorithmicx.sty, zusammen mit der Stelle, an der oben \xpatchcmdder Code eingefügt wird:

\newenvironment{algorithmic}[1][0]%
   {%
   \edef\ALG@numberfreq{#1}%
   \def\@currentlabel{\theALG@line}%
   %
   \setcounter{ALG@line}{0}%
   \setcounter{ALG@rem}{0}%
   %
   \let\\\algbreak%
   %
   \expandafter\edef\csname ALG@currentblock@\theALG@nested\endcsname{0}%
   \expandafter\let\csname ALG@currentlifetime@\theALG@nested\endcsname\relax%
   %
   \begin{list}%
      {\ALG@step}%
      {%
      \rightmargin\z@%
      \itemsep\z@ \itemindent\z@ \listparindent2em%
      \partopsep\z@ \parskip\z@ \parsep\z@%
      \labelsep 0.5em \topsep 0.2em%\skip 1.2em 
      \ifthenelse{\equal{#1}{0}}%
         {\labelwidth 0.5em}%
         {\labelwidth 1.2em}%
      \leftmargin\labelwidth \addtolength{\leftmargin}{\labelsep}% Ok. the perfect leftmargin :-))
      \ALG@tlm\z@% <----- resetting of \leftmargin 0pt inserted here
      }%
   \setcounter{ALG@nested}{0}%
   \ALG@beginalgorithmic%
   }%
   {% end{algorithmic}
   % check if all blocks are closed
   \ALG@closeloops%
   \expandafter\ifnum\csname ALG@currentblock@\theALG@nested\endcsname=0\relax%
   \else%
      \PackageError{algorithmicx}{Some blocks are not closed!!!}{}%
   \fi%
   \ALG@endalgorithmic%
   \end{list}%
   }%

verwandte Informationen