我有一个解决方案\pageref,但用于页面的顶部/中部/底部;但是,使用IEEEtran
会\maketitle
干扰确定文本区域的左上角作为参考位置。
您将在此 MWE 中看到问题:没有\maketitle
,\location
显示到文本区域开头的垂直距离;但是,使用\maketitle
,它显示到文本开头的垂直距离在\maketitle
块之后,尽管我希望\AtBeginDocument
先执行。我可以添加\hspace{0}pt
before\zsavepos{loc:ref}
以强制 LaTeX 进入水平模式,结果似乎是正确的。但是,这会在输出中添加一个空白页,我无法摆脱它,否则会再次影响位置。
\documentclass{IEEEtran}
\usepackage[savepos]{zref}
\AtBeginDocument{%
% \hspace{0pt}%
\zsavepos{loc:ref}}
\usepackage{calc}
\newcounter{counter}
\newlength{\diff}
\newcommand{\location}{%
\hspace{0pt}%
\stepcounter{counter}%
\zsavepos{here\thecounter}%
\setlength{\diff}{\zposy{loc:ref}sp-\zposy{here\thecounter}sp}%
\the\diff}
\title{A long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long title}
\usepackage[columnwise,switch]{lineno}
\linenumbers
\usepackage{pgffor}
\begin{document}
% \maketitle
\foreach \n in {1,...,58}{\location
}
\end{document}
答案1
这是一个好的解决方案吗?对我来说似乎有效:
\documentclass{IEEEtran}
\usepackage{atbegshi}
\usepackage[savepos]{zref}
\AtBeginShipoutFirst{\zsavepos{loc:ref}}
\usepackage{calc}
\newcounter{counter}
\newlength{\diff}
\newcommand{\location}{%
\hspace{0pt}%
\stepcounter{counter}%
\zsavepos{here\thecounter}%
\setlength{\diff}{\zposy{loc:ref}sp-\zposy{here\thecounter}sp}%
\the\diff}
\title{A long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long title}
\usepackage{pgffor}
\begin{document}
\maketitle
\foreach \n in {1,...,58}{\location
}
\end{document}