如何将 \edef 中的 \zpageref 替换为页码

如何将 \edef 中的 \zpageref 替换为页码

我想使用zref包将对象的位置转储到外部文件中。我可以转储zposxzposy,但不能转储zrefpage

梅威瑟:

\documentclass{article}

\usepackage[user,savepos]{zref}

\begin{document}

ABC \zlabel{page}\zsavepos{pos}
page: \zpageref{page}

\edef\temp{page \zpageref{page} position \zposx{pos} \zposy{pos}}

\newwrite\writer
\openout\writer=position.pos\relax
\write\writer{\temp}
\closeout\writer

\end{document}

经过两次编译后转储的 position.pos 文件:

page \zpageref {page} position 11430063 42091806

\zpageref仍然存在。

如何\zpageref{page}用页码替换?

答案1

灵感来自https://tex.stackexchange.com/a/209195/143504,我意识到可能也\zref不能用于\edef

通过阅读zref文档,我弄清楚了如何获取编号。使用zref@extractdefault获取页码,但不能zpageref

梅威瑟:

\documentclass{article}

\usepackage[user,savepos]{zref}


\begin{document}

ABC \zlabel{page-label}\zsavepos{pos}

\makeatletter
\edef\temp{page \zref@extractdefault{page-label}{page}{0} position \zposx{pos} \zposy{pos}}
\makeatother

\newwrite\writer
\openout\writer=position.pos\relax
\write\writer{\temp}
\closeout\writer

\end{document}

还有position.pos

page 1 position 11430063 42091806

相关内容