从 latex 生成的 pdf 中提取特定像素位置

从 latex 生成的 pdf 中提取特定像素位置

有谁知道我应该如何或从 .tex 文件中发出哪些命令,以便 tex 编译器生成一个描述符文件,指向生成的 PDF 的元数据(例如文档上感兴趣区域的像素位置以及文档中包含的其他有用信息)。到目前为止,我得到的最佳建议是创建自己的样式文件,定义新命令(位置处理程序命令),“用于返回使用处理程序命令的笛卡尔像素位置”。提前致谢

答案1

欢迎来到 TeX.SE!据我所知,TiZ 在文件中存储绝对坐标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,即整数,和xy页面绝对坐标乘以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。您可以使用一些外部程序读取这些位置,并将它们用于您想要的任何目的。

相关内容