有谁知道我应该如何或从 .tex 文件中发出哪些命令,以便 tex 编译器生成一个描述符文件,指向生成的 PDF 的元数据(例如文档上感兴趣区域的像素位置以及文档中包含的其他有用信息)。到目前为止,我得到的最佳建议是创建自己的样式文件,定义新命令(位置处理程序命令),“用于返回使用处理程序命令的笛卡尔像素位置”。提前致谢
答案1
欢迎来到 TeX.SE!据我所知,Ti钾Z 在文件中存储绝对坐标aux
。这基本上就是它rememer picture
的工作原理。为了更清楚地说明这一点,让我们看看 MWE
\documentclass{article}
\usepackage{lipsum}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
\lipsum[1]
\tikzmark{a}Hello world!\tikzmark{b}
\end{document}
生成一个aux
文件
\relax
\savepointas{a}{pgfid1}{0pt}{0pt}
\savepicturepage{pgfid1}{1}
\pgfsyspdfmark {pgfid1}{9782558}{33796915}
\savepointas{b}{pgfid2}{0pt}{0pt}
\savepicturepage{pgfid2}{1}
\pgfsyspdfmark {pgfid2}{13243229}{33796915}
这里,的条目 \pgfsyspdfmark
有解释
\pgfsyspdfmark{pgfid<n>}{<x>}{<y>}
其中n
是 id,即整数,和x
是y
页面绝对坐标乘以65536
( =2^16
)。这可以通过扩展的 MWE 来验证
\documentclass{article}
\usepackage{lipsum}
\usepackage{tikz}
\usetikzlibrary{tikzmark,calc}
\begin{document}
\lipsum[1]
\tikzmark{a}Hello world!\tikzmark{b}
\tikz[overlay,remember picture]{
\draw[latex-] let \p1=($(pic cs:a)-(current page.south west)$),
\n1={978.2558/\x1},\n2={3379.6915/\y1} in
(pic cs:a) -- ++(0,-1) node[below] {$(\x1,\y1)\to(\n1,\n2) $};
\draw[latex-] let \p1=($(pic cs:b)-(current page.south west)$),
\n1={1324.3229/\x1},\n2={3379.6915/\y1} in
(pic cs:b) -- ++(6,-1) node[below] {$(\x1,\y1)\to(\n1,\n2) $};
}
\end{document}
我必须除以因子 10^4(因为我不想加载另一个包/库来处理这么大的数字)。
因此,结果是tikzmark
您可以将“有趣点”的绝对位置写入文件aux
。您可以使用一些外部程序读取这些位置,并将它们用于您想要的任何目的。