当 parbox 跟随时,tcolorbox 测量错误的高度

当 parbox 跟随时,tcolorbox 测量错误的高度

不久前,我学会了测量 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}

表明

标记 2 的高度不正确

(为什么我在 tcolorbox 里面有一个 parbox?不管是好是坏,因为我用了一些答案来这个问题

我如何确保 y 坐标测量正确?或者我不应该在 tcolorbox 中使用 parbox?

相关内容