在 LaTeX 中对齐伪代码

在 LaTeX 中对齐伪代码

我的算法类遵循伪代码的严格指导原则。假设我有以下内容:

y = 0
for i = n downto 0
    y = a_i + x * y

我希望它在页面上左对齐并带有行号。该algorithmic包似乎接近我想要的,但它不符合我的类的伪代码约定。有没有一种非常简单的方法可以将其破解到 LaTeX 中?

我刚刚学习 LaTeX,因此如果这是一个简单的问题,我深感抱歉。

答案1

如果我是你,绝对地确定算法包不是可行的方法,我会使用类似这样的方法:

\begin{align*}
  &y = 0 \\
  &\text{for $i = n$ downto 0} \\
  & \hspace{1cm} y = a_i + x * y
\end{align*}

这导致

上述 LaTeX 代码片段的渲染

答案2

我从未使用过 Latex 中的算法包,我所做的是使用环境verbatim并在文本编辑器中手动缩进代码。

\begin{verbatim}
1 y=0
2 for i = n downto 0
3     y = a_i + x * y
\end{verbatim}

这会将您在环境中输入的内容准确显示在输出中,包括空格。如果您需要花哨的 Latex(如下标等),请检查包alltt

Verbatim 信息

答案3

编辑2:抱歉,从您的代码摘录和另一个答案来看,我不知何故以为您想要逐字文本。

我已经成功使用了algorithmicx。它可以根据您的需要进行定制。

文档(PDF)

\usepackage{algorithm}
\usepackage[noend]{algpseudocode}

\begin{algorithm}
\begin{algorithmic}
\State $y \gets 0$
\For{$i \gets n, 0$}
  \State $y \gets a_i + xy$
\EndFor
\end{algorithmic}
\caption{Example algorithm.}
\label{examplealgorithm}
\end{algorithm}

修改 1:查看我的一些旧报告,这里有两个针对环境的示例自定义Verbatim。有关更多详细信息,请参阅文档 PDF(下面的链接)。

\usepackage{fancyvrb}
\usepackage{color}
\RecustomVerbatimEnvironment{Verbatim}{Verbatim}{fontsize=\small,
   frame=single, rulecolor=\color{blue}, framerule=0.5mm, framesep=1mm, 
   xleftmargin=2mm}
%\RecustomVerbatimEnvironment{Verbatim}{Verbatim}{fontsize=\scriptsize, 
   %numbers=left, numbersep=8pt, baselinestretch=1, xleftmargin=5mm, 
   %commandchars=\~\{\}}

\begin{Verbatim}
y = 0
for i = n downto 0
    y = a_i + x * y
\end{Verbatim}

原文:我推荐使用软件包Verbatim中的环境fancyvrb,不要将其与内置verbatim环境混淆。它完全满足您的需要。

文档。(PDF)

答案4

由于原始海报没有提到问题到底是什么algorithmic(“它不遵循我的课程的伪代码约定”),因此很难更准确地说明。

尝试推断什么可能不是你的惯例,似乎你不想万一结束于等部分,这就是[noend]选项(加载包时,如\usepackage[noend]{algorithmic})的用途是:它可以让您节省垂直空间,这对于提交具有严格页数限制的论文尤其重要。

我建议您将默认水平缩进从 增加到1em,例如,2em如果您省略结束标记。您可以\algsetup{indent=2em}随时使用或indent=2em在加载包时传递该选项。

相关内容