使用 zref 测量文本的左上角和右下角

使用 zref 测量文本的左上角和右下角


我想获取文本左上角的位置和文本右下角的位置。现在我正在使用下面的代码,它对图像有效,但对文本无效,因为它会破坏文本流(见下图。备注:边框说明了由两个测量点创建的矩形,并不在实际输出中)

图像

\begin{tabular}{c c c}
\zlabel{Overlay\arabic{overlay}} \zsavepos{Overlay\arabic{overlay}1} & & \\
& Testquery test test test & \\
& & \zsavepos{Overlay\arabic{overlay}2}\\
\end{tabular} 

我如何改进上述代码并避免文本流中断?

答案1

这个答案可能不合适,因为除了X-左上角和右下角的位置,它只给出dz文本,即相对的在某一方面的变化从短语的开头开始,而不是页面上的绝对坐标。它使用tabto,而不是zref

我根据我在在文本背景上绘制 Tikz 突出显示,虽然这里的结果可能看起来有点混乱,但它可以向您详细展示正在做的事情。

此处,命令\Ohighlight{}界定了我们希望“测量”的内联文本。红色文本是相对于预先存在的文本设置的(即从中间行开始,带有换行、段落等)。

\Ohighlight第二次被叫之前的任何时间点,我可以回忆起X-文本开始和结束的坐标以及dz文本使用。我创建宏\demo来显示这一点。它重叠了高度规则dz向左移动;然后设置测量的框(青色),正确使用其中线起点。在设置的框下方,它会缩进到文本开头的开头(\tmpx} 并在文本结尾处创建一条规则(\tmpy),表明它记住了文本的开始和结束位置。

在这个图形演示下面,它打印了dzx1, 和x2

\documentclass{minimal}
\usepackage{xcolor}
\newlength\svpi
\newsavebox\tmpbox
\usepackage{tabto}
\newcommand\Ohighlight[2][]{\color{cyan}%
  \tabto*{0in}\edef\tmpx{\TabPrevPos}\tabto*{\tmpx}%
  \setlength\svpi{\the\parindent}%
  \savebox\tmpbox{%
  \begin{minipage}[b]{\textwidth}\parindent\svpi%
    \tabto*{\tmpx}#2\strut%
  \end{minipage}}%
  {#2}%
  \vspace*{\dimexpr-\dp\tmpbox-\ht\tmpbox+\dp\strutbox}%
  \tabto*{\tmpx}\color{red}#2\unskip\color{black}\ %
  \edef\tmpy{\TabPrevPos}%
}
\textwidth=5in

\def\demo{\noindent\llap{%
  \rule[-\dp\strutbox]{3pt}{\dimexpr+\dp\tmpbox+\ht\tmpbox+\ht\strutbox}}%
  \makebox[0pt][l]{\usebox{\tmpbox}}\\
  \tabto{\tmpx}\rule{\dimexpr\tmpy-\tmpx\relax}{3pt}%
  \par dz=\the\dimexpr+\dp\tmpbox+\ht\tmpbox+\ht\strutbox; x1,x2: \tmpx, \tmpy}

\begin{document}
The original highlight is drawn over the text.
The original definition works over... 

Multi paragraphs, so my fix should try to as well.

\bigskip

Now here is my fix. \Ohighlight{The highlight is drawn under the text}
Does it work multiline?

\demo

multiline?
\Ohighlight{The highlight is drawn under the text The highlight is drawn under the text The highlight is drawn under the text The highlight is drawn under the text

A new paragraph}
And more...

\demo

\Ohighlight{short}

\demo
\end{document}

在此处输入图片描述

相关内容