![当 parbox 跟随时,tcolorbox 测量错误的高度](https://linux22.com/image/417141/%E5%BD%93%20parbox%20%E8%B7%9F%E9%9A%8F%E6%97%B6%EF%BC%8Ctcolorbox%20%E6%B5%8B%E9%87%8F%E9%94%99%E8%AF%AF%E7%9A%84%E9%AB%98%E5%BA%A6.png)
不久前,我学会了测量 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?