现在我有一个算法,我想在整个文本中引用它。
但是,引用该算法的方式很尴尬。见上图。使用\autoref
,该算法被简单地称为“算法 1”。我希望引用包含算法 1 的表格,并让读者查看表格。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsthm}
\usepackage{amsmath}
\usepackage{thmtools}
\setlength\parindent{0pt}
\usepackage[linesnumbered,ruled]{algorithm2e}
\usepackage{hyperref}
\begin{document}
\section{Introduction}
{\LinesNumberedHidden
\begin{algorithm}
\SetKwInOut{Input}{Input}
\SetKwInOut{Output}{Output}
\SetAlgorithmName{Algorithm}{}
Initialize: $x^0$ = 0;
\begin{enumerate}
\item Pour hot coal on $f(x)$
\item Freeze coal until $\|f(x)\|_\infty < \epsilon$
\end{enumerate}
\caption{Meta-Coal Algorithm}
\label{algo:Coal Meta-Heuristic}
\end{algorithm}}
Look at my beautiful algorithm in \autoref{algo:Coal Meta-Heuristic}
\end{document}
相反,我想要这样的东西:
现在我引用的是包含在表中的算法,我觉得这样引用这个表更自然。表的名称可以放在算法的顶部或底部(如当前所示)。该表的标题可以称为“Meta Coal 算法描述”或只是“Meta Coal 算法”(如当前所示)。
但是,如果我尝试将算法块放在里面,\begin{table}
整个程序就会编译失败!
\begin{table}
{\LinesNumberedHidden
\begin{algorithm}
\SetKwInOut{Input}{Input}
\SetKwInOut{Output}{Output}
\SetAlgorithmName{Algorithm}{}
Initialize: $x^0$ = 0;
\begin{enumerate}
\item Pour hot coal on $f(x)$
\item Freeze coal until $\|f(x)\|_\infty < \epsilon$
\end{enumerate}
\caption{Meta-Coal Algorithm}
\label{algo:Coal Meta-Heuristic}
\end{algorithm}}
\end{table}
有谁知道是否有办法以最小的努力实现我的目标?
答案1
使用H
说明符,这样算法就不再是一个浮动对象,而可以放在表中。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsthm}
\usepackage{amsmath}
\usepackage{thmtools}
\setlength\parindent{0pt}
\usepackage[linesnumbered,ruled]{algorithm2e}
\usepackage{hyperref}
\begin{document}
\section{Introduction}
\begin{table}
{\LinesNumberedHidden
\begin{algorithm}[H]
\SetKwInOut{Input}{Input}
\SetKwInOut{Output}{Output}
\SetAlgorithmName{Algorithm}{}
Initialize: $x^0$ = 0;
\begin{enumerate}
\item Pour hot coal on $f(x)$
\item Freeze coal until $\|f(x)\|_\infty < \epsilon$
\end{enumerate}
\caption{Meta-Coal Algorithm}
\end{algorithm}}
\caption{Meta-Coal Algorithm}
\label{algo:Coal Meta-Heuristic}
\end{table}
Look at my beautiful algorithm in \autoref{algo:Coal Meta-Heuristic}
\end{document}
答案2
\captionof
请参阅本文末尾的替代解决方案。
我建议使用cleveref
和其\label[othercountername]{...}
功能和\Cref{...}
或\cref{...}
代替,即
\label[table]{yourlabelname}
在浮点数中嵌套浮点数是很麻烦的,而且无论如何也行不通。
如果引用的计数器的名称应该出现在\Cref
或\cref
使用的提供的链接中\usepackage[nameinlink]{cleveref}
。
请cleveref
稍后加载hyperref
!
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsthm}
\usepackage{amsmath}
\usepackage{thmtools}
\setlength\parindent{0pt}
\usepackage[linesnumbered,ruled]{algorithm2e}
\usepackage{hyperref}
\usepackage{cleveref}
\begin{document}
\section{Introduction}
{\LinesNumberedHidden
\begin{algorithm}
\SetKwInOut{Input}{Input}
\SetKwInOut{Output}{Output}
\SetAlgorithmName{Algorithm}{}
Initialize: $x^0$ = 0;
\begin{enumerate}
\item Pour hot coal on $f(x)$
\item Freeze coal until $\|f(x)\|_\infty < \epsilon$
\end{enumerate}
\caption{Meta-Coal Algorithm}
\label[table]{algo:CoalMeta-Heuristic}
\end{algorithm}}
Look at my beautiful algorithm in \Cref{algo:CoalMeta-Heuristic}
\end{document}
\captionof
使用来自包的替代解决方案caption
:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsthm}
\usepackage{amsmath}
\usepackage{thmtools}
\setlength\parindent{0pt}
\usepackage[linesnumbered,ruled]{algorithm2e}
\usepackage{caption}
\usepackage{hyperref}
\begin{document}
\section{Introduction}
{\LinesNumberedHidden
\begin{algorithm}
\SetKwInOut{Input}{Input}
\SetKwInOut{Output}{Output}
\SetAlgorithmName{Algorithm}{}
Initialize: $x^0$ = 0;
\begin{enumerate}
\item Pour hot coal on $f(x)$
\item Freeze coal until $\|f(x)\|_\infty < \epsilon$
\end{enumerate}
\captionof{table}{Meta-Coal Algorithm}
\label{algo:CoalMeta-Heuristic}
\end{algorithm}}
Look at my beautiful algorithm in \autoref{algo:CoalMeta-Heuristic}
\end{document}