是否有任何命令可以获取文本中的当前位置?
我的意思是:
\the\currentposition
text text text text \newline
\the\currentposition
text text text text \newline
\the\currentposition
输出:
0pt
文本 文本 文本 文本
12pt
文本 文本 文本 文本
24pt
或者更好的是 - 如何获取列表中某些文本或环境(即列或块的左上角)的实际(x,y)位置?
答案1
PDF 模式下的 pdfTeX 提供\pdfsavepos
,它存储了可写入.aux
文件并在下次 TeX 运行中使用的当前位置。XeTeX 和 LuaTeX 也提供此功能。有一些限制:
- XeTeX 的从右到左模式有些损坏。
不使用 pdfTeX 接口(
\pdfsetmatrix
、\pdfsave
、\pdfrestore
)的图形状态变化会干扰位置记录。绝对值没有明确定义,因此更倾向于使用相对值。
zref-savepos
项目包zref
提供了定位功能的接口:
\documentclass{article}
\usepackage{zref-savepos}
\newcommand*{\currpos}[1]{%
\zsavepos{#1}%
(\zposx{#1}sp, \zposy{#1}sp) =
(\the\dimexpr\zposx{#1}sp\relax, \the\dimexpr\zposy{#1}sp\relax)%
}
\begin{document}
\leavevmode
\currpos{posA}
text text text text \newline
\currpos{posB}
text text text text \newline
\currpos{posC}
\end{document}
两次编译运行后的结果: