获取实际位置

获取实际位置

是否有任何命令可以获取文本中的当前位置?
我的意思是:

\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}

两次编译运行后的结果:

结果

相关内容