如何在算法包中一行打印某些 If 条件或 For 循环?

如何在算法包中一行打印某些 If 条件或 For 循环?

如何打印

\FOR{$j:=0,\ldots,i-1$} 
         \STATE{$\C_{ij}:=\C_{ii}\cdot\C_{ij}$};
         \ENDFOR

一行而不是两行?

答案1

您应该定义自己的命令,将算法内容放在一行上。建议考虑:

\newcommand{\LINEFOR}[2]{%
    \STATE\algorithmicfor\ {#1}\ \algorithmicdo\ {#2} \algorithmicend\ \algorithmicfor%
}

algorithmic它打印在 for 语句构造中使用的常规包关键字( \algorithmicfor\algorithmicdo等),但所有这些都在单个\STATE语句(或行)中完成。

这是一个完整的最小示例,说明了结果:

在此处输入图片描述

\documentclass{article}
\usepackage{algorithmic}%
\begin{document}

\newcommand{\LINEFOR}[2]{%
    \STATE\algorithmicfor\ {#1}\ \algorithmicdo\ {#2} \algorithmicend\ \algorithmicfor%
}

\begin{algorithmic}
    \STATE \ldots
    \FOR{$j:=0,\ldots,i-1$}%
        \STATE $\mathcal{C}_{ij}:=\mathcal{C}_{ii}\cdot\mathcal{C}_{ij}$;%
        \ENDFOR%
    \STATE \ldots
    \LINEFOR{$j:=0,\ldots,i-1$}{$\mathcal{C}_{ij}:=\mathcal{C}_{ii}\cdot\mathcal{C}_{ij}$}%
    \STATE \ldots
\end{algorithmic}

\end{document}

相关内容