如何创建带有特殊字符的 algorithmicx 块?

如何创建带有特殊字符的 algorithmicx 块?

algorithmicx包中,您可以使用命令定义自己的算法块\algblock。如何在这样的块的定义中使用特殊字符?我想创建一个德语版本的 for 循环。德语中“for”的单词是“für”。诸如 等标准方法{\"u}不起作用。

最小工作示例:

\documentclass{article}

\usepackage{algorithm}
\usepackage{algorithmicx}
\usepackage{algpseudocode}
\algblock[<block>]{für}{endfur}
\algtext*{endfur}

\begin{document}

\begin{algorithm}
\begin{algorithmic}
\für x
\State y
\endfur
\end{algorithmic}
\end{algorithm}

\end{document}

答案1

如果您不想在 For 循环中使用 End 标记,则在其他情况下也不需要它。

\documentclass{article}

\usepackage{algorithm}
%\usepackage{algorithmicx}% not along with algpseudocode
\usepackage[noend]{algpseudocode}

\algrenewcommand\algorithmicfor{\textbf{für}}


\begin{document}

\begin{algorithm}
\begin{algorithmic}
\For{x}
\State y
\EndFor
\end{algorithmic}
\end{algorithm}

\end{document}

在此处输入图片描述

答案2

好吧,我找到了一个(相当丑陋的)解决方法。我只在定义中使用字母“f”,并将其余部分添加为粗体文本:

\documentclass{article}

\usepackage{algorithm}
\usepackage{algorithmicx}
\usepackage{algpseudocode}
\algblock[<block>]{f}{endfur}
\algtext*{endfur}

\begin{document}

\begin{algorithm}
\begin{algorithmic}
\f\textbf{\"ur} x
\State y
\endfur
\end{algorithmic}
\end{algorithm}

\end{document}

虽然它可以工作,但是它确实不够优雅。

相关内容