algorithmicx 中如何获取罗马行号?计数器名称是什么?

algorithmicx 中如何获取罗马行号?计数器名称是什么?

我尝试获取罗马数字,但在软件包文档中找不到如何更改它。经过一番研究,我弄清楚了如何使用软件包来实现这一点algorithm2e。(使用algonl可选命令,然后\renewcommand{\theAlgoLine}{\Roman{AlgoLine}})。

如果我知道包的计数器名称,algorithmicx我就可以添加\renewcommand{thecountername}{\Roman{countername}}命令。

我已经编写了 8 个算法,因此如果可能的话,我想避免使用该algorithm2e包重写它们。

我的例子:

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

\begin{document}

\begin{algorithm}
\caption{Algo-name}
\label{arnoldi}
\begin{algorithmic}[1]
\State algo
\end{algorithmic}
\end{algorithm}

\end{document}

答案1

罗马行号?您真的认为这是个好主意吗?阿拉伯行号是硬编码的。您必须重新定义\ALG@step\alglinenumber

\documentclass{article}
\usepackage[section]{algorithm}
\usepackage{algpseudocode}
\makeatletter
%\renewcommand\alglinenumber[1]{\footnotesize\Roman{ALG@line}:}%alternative
\def\ALG@step%
   {%
   \addtocounter{ALG@line}{1}%
   \addtocounter{ALG@rem}{1}%
   \ifthenelse{\equal{\arabic{ALG@rem}}{\ALG@numberfreq}}%
      {\setcounter{ALG@rem}{0}\alglinenumber{\Roman{ALG@line}}}%<---
      {}%
   }%
\makeatletter
\begin{document}

\begin{algorithm}
\caption{Algo-name}
\label{arnoldi}
\begin{algorithmic}[1]
\State algo
\State algo
\State algo
\State algo
\State algo
\State algo
\State algo
\State algo
\State algo
\State algo
\State algo
\State algo
\State algo
\State algo
\State algo
\State algo
\State algo
\State algo
\State algo
\State algo
\end{algorithmic}
\end{algorithm}

\end{document}

相关内容