在以下 MWE 中,
\documentclass{article}
\usepackage{multicol}
\usepackage{hyperref}
\newcounter{counterForCalcul}
\setcounter{counterForCalcul}{0}
\def\incrementCounterForCalcul{\refstepcounter{counterForCalcul}}
\begin{document}
\begin{multicols}{2}
\incrementCounterForCalcul Test
\incrementCounterForCalcul Test
\incrementCounterForCalcul Test
\incrementCounterForCalcul Test
\incrementCounterForCalcul Test
\incrementCounterForCalcul Test
\incrementCounterForCalcul Test
\incrementCounterForCalcul Test
\end{multicols}
\end{document}
应该有两列,但只有一列。
我该如何解决这个问题?
答案1
multicol
TeX Live 2020(或更高版本)、版本 1.8y 和hyperref
版本 v7.00k中不会出现这种情况。
这种情况发生在 TeX Live 2019hyperref
版本 7.00d 中。
您可以通过在\leavevmode
之前发射来解决该问题\refstepcounter
,无论如何我都会推荐它,因为它会在预期的位置产生锚点。
\documentclass{article}
\usepackage{multicol}
\usepackage{hyperref}
\newcounter{counterForCalcul}
\setcounter{counterForCalcul}{0}
\newcommand\incrementCounterForCalcul{%
\leavevmode
\refstepcounter{counterForCalcul}%
}
\begin{document}
\begin{multicols}{2}
\incrementCounterForCalcul Test
\incrementCounterForCalcul Test
\incrementCounterForCalcul Test
\incrementCounterForCalcul Test
\incrementCounterForCalcul Test
\incrementCounterForCalcul Test
\incrementCounterForCalcul Test
\incrementCounterForCalcul Test
\end{multicols}
\end{document}
我通过运行 TeX Live 2012 生成了该图片,因此它对于所有后续版本来说都应该是安全的。
避免\def
在文档中使用它,除非你有特殊原因要使用它。请参阅趣味:我们如何在 LaTeX 中生成有趣/意想不到的消息?举一个有趣的例子。