不久前,我学会了测量 y 坐标在我的 pdf 中。我最近遇到了 parbox、tcolorbox 和 XeLaTeX 的组合,结果很糟糕。
在以下示例中,\showheight{uniqueLabel}
在页面中打印其高度(第二次编译后)。“Mark 2”是异常结果,似乎取决于该行之后发生的情况。
% !TEX program = XeLaTeX
\documentclass{article}
\usepackage{tcolorbox}
\usepackage{lipsum}
\newcounter{marks}
\makeatletter
\newcommand{\showheight}[1]{%
\stepcounter{marks}
This line (mark \arabic{marks}) is
\ifcsname myyloc#1\endcsname% 4718592 sp/in = 65536 sp/pt * 72 pt/in
\the\numexpr10*\csname myyloc#1\endcsname/4718592\relax/10
\else%
??
\fi%
inches from the bottom of the page
%\strut
\pdfsavepos%
\write\@auxout{\protect\gdef\string\myyloc#1{\the\pdflastypos}}%
}
\makeatother
\begin{document}
\showheight{before} % mark 1
\begin{tcolorbox}
\showheight{inbox}\\ % mark 2
\parbox[t]{\linewidth}{\lipsum[1-3]}% Mark 2 is 3.5 inches from the bottom
%\parbox{\linewidth}{\lipsum[1-3]} % Mark 2 is 6.1 inches from the bottom
%\parbox[b]{\linewidth}{\lipsum[1-3]} % Mark 2 is 8.6 inches from the bottom
%\lipsum[1-3] % Mark 2 is 8.6 inches from the bottom
%\mbox{}\\[-\baselineskip] % fixes the measuring problem, causes underfull hbox
\end{tcolorbox}
\showheight{after} % mark 3
\end{document}
表明
(为什么我在 tcolorbox 里面有一个 parbox?不管是好是坏,因为我用了一些答案来这个问题。
我如何确保 y 坐标测量正确?或者我不应该在 tcolorbox 中使用 parbox?