如何使用 TikZ 或 \pdfsavepos 或其他方法找到页面上几个点的坐标?

如何使用 TikZ 或 \pdfsavepos 或其他方法找到页面上几个点的坐标?

我需要使用 XeLaTeX 排版页面上的几个单词结尾的坐标,相对于页面的左下角。例如,我需要一个\getposition{label}可以按以下方式使用的宏:

\documentclass{article}
\begin{document}
Blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla
blabla blabla\getposition{abc} blabla blabla blabla blabla blabla\getposition{def} blabla blabla blabla
blabla blabla blabla\getposition{ghi} blabla blabla blabla blabla blabla blabla blabla
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla
blabla blabla.\getposition{jkl}
\end{document}

因此,我需要在日志文件或其他文件中列出标签和坐标(以 sp 为单位),如下所示:

abc:1562354sp,78944895sp
def:2562153sp,78944895sp
ghi:1326435sp,64253484sp
jkl:645435sp,13264356sp

我尝试了\pdfsavepos、和\pdflastxpos,但它在日志文件中只写入零(因为它只知道发货时间的信息,但我如何跟踪多个“最后位置”?)。\pdflastypos\message

当然,我可以进入 XDV 文件并计算每个点的位置,但这意味着要处理 DVI 堆栈并计算所有水平元素的宽度,直到标记点。我知道有实用程序dvipos可以做到这一点,但它似乎不适用于 XDV 文件。

还有其他方法可以直接获取信息吗,也许使用 TikZ 或其他方法?

答案1

在此处输入图片描述

\documentclass{article}
\makeatletter
\def\getposition#1{%
\pdfsavepos
\write\@auxout{%
  \gdef\string\X#1{\the\pdflastxpos}%
  \gdef\string\Y#1{\the\pdflastypos}}%
}
\makeatother
\begin{document}
Blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla
blabla blabla\getposition{abc} blabla blabla blabla blabla blabla\getposition{def} blabla blabla blabla
blabla blabla blabla\getposition{ghi} blabla blabla blabla blabla blabla blabla blabla
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla
blabla blabla.\getposition{jkl}

\ifdefined\Xabc abc is at (\Xabc,\Yabc)\else\typeout{re-run latex}\fi

\ifdefined\Xghi ghi is at (\Xghi,\Yghi)\else\typeout{re-run latex}\fi

\end{document}

你把它们全部写入辅助文件,然后在第二次运行时将它们取出

答案2

zref提供 David 代码的用户界面(如果您使用其他默认纸张格式,则系统上的值可能会有所不同):

\documentclass[11pt]{article}
\usepackage{zref-savepos}
\begin{document}

some text\zsavepos{label1}  

some longer text\zsavepos{label2}


text one is at (\zposx{label1},\zposy{label1}) 

and text two is at (\zposx{label2},\zposy{label2})

\end{document}

在此处输入图片描述

相关内容