阿尔帕斯卡体?

阿尔帕斯卡体?

我正在仔细阅读 AlgPascal 包的文档http://tug.ctan.org/macros/latex/contrib/algorithmicx/algorithmicx.pdf

我的问题是当我使用

\For{k\gets 1}{K}
<command>

AlgPascal 提供的默认 for 循环

如何得到 :

\For{k\gets 1}{K}
<body>
\EndFor

这样,它就不打算向身体发出任何单一的命令了吗?

\For{k\gets 1}{K} 
\Begin
% \begin{ALC@g}
\State $\mu_B \leftarrow \frac{1}{m}\sum_{i=1}^m x_i$
\State $\sigma_B^2 \leftarrow \frac{1}{m}\sum_{i=1}^m (x_i-\mu_B)^2$
\State $\hat{x_i} \leftarrow \frac{x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}}$
\State $ y_i \leftarrow \gamma\hat{x_i} + \beta \equiv BN_{\gamma,\beta}(x_i)$
\State Using $\gamma$ and $\beta$ obtained from forward pass update:
\State  \hskip1.5em $\hat{y_i} \leftarrow \frac{y_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}}$
\State  \hskip1.5em $y_i = BN_{\gamma,\beta}(y_i)$  
\End
% \end{ALC@g}

运行上述代码片段

这似乎工作正常,但打印开始和结束(我不想要)。 Hskip 可以解决问题,但每次都这样做很痛苦(在这里写一篇长论文)。

答案1

我建议您使用来自同一个包( )的algpseudocode而不是,它与以下选项一起使用似乎可以更好地满足您的要求:algpascalalgorithmicxnoend

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage[noend]{algpseudocode}


\begin{document}

\begin{algorithmic}
    \For{$k\gets 1$ \textbf{to} $K$}
        \State $\mu_B \leftarrow \frac{1}{m}\sum_{i=1}^m x_i$
        \State $\sigma_B^2 \leftarrow \frac{1}{m}\sum_{i=1}^m (x_i-\mu_B)^2$
        \State $\hat{x_i} \leftarrow \frac{x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}}$
        \State $ y_i \leftarrow \gamma\hat{x_i} + \beta \equiv BN_{\gamma,\beta}(x_i)$
        \State Using $\gamma$ and $\beta$ obtained from forward pass update:
        \State  \hskip1.5em $\hat{y_i} \leftarrow \frac{y_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}}$
        \State  \hskip1.5em $y_i = BN_{\gamma,\beta}(y_i)$  
    \EndFor
\end{algorithmic}

\end{document}

使用带 noend 的 algpseudocode 进行输出

请注意,您必须用此命令重写 for 循环(参见上面的代码)。如果您更频繁地需要这种类型的循环,您可以决定使用经过调整的命令:

\algdef{SE}[FORto]{ForTo}{EndForTo}[2]{\algorithmicfor\ \(#1\) \textbf{to} \(#2\) \algorithmicdo}{}

\For这是基于algpseudocode.sty,但已根据algpascal.sty允许第二个参数并使用数学模式来排版其参数。在这种情况下,该noend选项已在宏定义期间考虑在内。修改后的 MWE 如下所示:

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage[noend]{algpseudocode}

\algdef{SE}[FORto]{ForTo}{EndForTo}[2]{\algorithmicfor\ \(#1\) \textbf{to} \(#2\) \algorithmicdo}{}


\begin{document}

\begin{algorithmic}
    \ForTo{k\gets 1}{K}
        \State $\mu_B \leftarrow \frac{1}{m}\sum_{i=1}^m x_i$
        \State $\sigma_B^2 \leftarrow \frac{1}{m}\sum_{i=1}^m (x_i-\mu_B)^2$
        \State $\hat{x_i} \leftarrow \frac{x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}}$
        \State $ y_i \leftarrow \gamma\hat{x_i} + \beta \equiv BN_{\gamma,\beta}(x_i)$
        \State Using $\gamma$ and $\beta$ obtained from forward pass update:
        \State  \hskip1.5em $\hat{y_i} \leftarrow \frac{y_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}}$
        \State  \hskip1.5em $y_i = BN_{\gamma,\beta}(y_i)$  
    \EndForTo
\end{algorithmic}

\end{document}

相关内容