我想使用algorithmic
未编号的包。
我尝试用 来做到这一点\renewcommand{\thealgorithm}{}
,但似乎 floatname Algorithm 和 caption great 之间的空间太大了。
这是我的 MWE:
\documentclass{article}
\usepackage{algorithmic}
\usepackage{algorithm}
\begin{document}
\begin{algorithm}[H]
\caption{great}
\begin{algorithmic}
\STATE dummy
\end{algorithmic}
\end{algorithm}
\renewcommand{\thealgorithm}{}
\begin{algorithm}[H]
\caption{great}
\begin{algorithmic}
\STATE dummy
\end{algorithmic}
\end{algorithm}
\end{document}
输出:
答案1
使用未编号算法需要删除两个位置的编号。第一个是在算法中\caption
,第二个是在目录中。下面的补丁正是删除了这一点:
\usepackage{etoolbox}
\makeatletter
% Remove \thealgorithm from ToC
\patchcmd{\@float@c@algorithm}% <cmd>
{\@nameuse{the#1}}% <search>
{}% <replace>
{}{}% <succes><failure>
% Remove \thealgorithm from \caption
\renewcommand{\fnum@algorithm}{\fname@algorithm}
\makeatother
以下示例显示了差异:
\documentclass{article}
\usepackage{algorithm}
\usepackage{etoolbox}
\begin{document}
\listofalgorithms
\begin{algorithm}[H]
\caption{great}
\end{algorithm}
\makeatletter
% Remove \thealgorithm from ToC
\patchcmd{\@float@c@algorithm}% <cmd>
{\@nameuse{the#1}}% <search>
{}% <replace>
{}{}% <succes><failure>
% Remove \thealgorithm from \caption
\renewcommand{\fnum@algorithm}{\fname@algorithm}
\makeatother
\begin{algorithm}[H]
\caption{great}
\end{algorithm}
\end{document}
请注意,算法计数器仍然是步进的,但如果全部你的算法应该是无编号的。如果你只想让某些算法无编号,最好创建一个单独的环境来区分这些类型。
如果您希望目录中的间距也进行调整,以便边距和算法标题之间没有太大间隙,那么您可以使用此补丁删除整个\numberline
插入内容.loa
:
\makeatletter
% Remove \thealgorithm from ToC
\patchcmd{\@float@c@algorithm}% <cmd>
{\protect\numberline{\@nameuse{the#1}}}% <search>
{}% <replace>
{}{}% <succes><failure>
% Remove \thealgorithm from \caption
\renewcommand{\fnum@algorithm}{\fname@algorithm}
\makeatother
加载中subcaption
干扰上述更新。具体来说, 不是\caption
以通常的方式设置的。因此,我们可以在加载之前捕获通常algorithm
的,并将其替换为对 的第一次调用:\caption
subcaption
\begin{algorithm}
\usepackage{algorithm}
\makeatletter
\let\alg@caption\caption% Store \caption in \alg@caption
\makeatother
\usepackage{subcaption}
\usepackage{etoolbox}
\makeatletter
% Remove \thealgorithm from ToC
\patchcmd{\@float@c@algorithm}% <cmd>
{\@nameuse{the#1}}% <search>
{}% <replace>
{}{}% <succes><failure>
% Remove \thealgorithm from \caption
\renewcommand{\fnum@algorithm}{\fname@algorithm}
% Redeploy \caption at \begin{algorithm}
\g@addto@macro\fst@algorithm{\let\caption\alg@caption}
\makeatother
答案2
如果无论如何使用subcaption
(或)包,则可以使用包选项:caption
caption
labelformat=unnumbered
\documentclass{article}
\usepackage{algorithmic}
\usepackage{algorithm}
\usepackage{subcaption}
\captionsetup[algorithm]{labelformat=unnumbered}
\begin{document}
\begin{algorithm}[H]
\caption{great}
\begin{algorithmic}
\STATE dummy
\end{algorithmic}
\end{algorithm}
\end{document}