![如何创建带有特殊字符的 algorithmicx 块?](https://linux22.com/image/378081/%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E5%B8%A6%E6%9C%89%E7%89%B9%E6%AE%8A%E5%AD%97%E7%AC%A6%E7%9A%84%20algorithmicx%20%E5%9D%97%EF%BC%9F.png)
在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}
虽然它可以工作,但是它确实不够优雅。