1.测量段落的总高度:

1.测量段落的总高度:

1.测量段落的总高度:

您好,我正在尝试绘制一个与段落高度和宽度相同的黑框,其中包含多行。为此,我需要知道段落的大小,我正在使用以下函数:

\documentclass{article}

\newlength{\mytextheight}
\newsavebox{\mytext}

\newcommand{\TestHeight}[1]
        {
                \savebox{\mytext}{#1}
                \settoheight{\mytextheight}{\usebox{\mytext}}
                {#1}
                Height of Text: \the\mytextheight\\
        }

\begin{document}
\TestHeight{This is sample text.}
\TestHeight{\Large This is larger text.}

\TestHeight{
This is sample text with multiple lines.\\
This is the second line.
The height is the same height as with one single line !! ?? \\
settoheight is very bad...
}
\end{document}

测试后可以看出,高度根本不是理想的高度(单线和多线的高度相同)。-> 如何真正测量这一点?

2. 用相同尺寸、相同位置的黑色矩形替换段落

在我们获得良好的高度后,如何创建一个 tikz 宏,用相同位置上具有完全相同尺寸(高度、宽度)的黑色矩形替换段落中的文本?我试过这个宏,但根据上面的解释,它显然不起作用,因为总高度不好:

\usepackage{tikz} %to be used with package below:
\newlength\heighthide
\newlength\widthhide
\newcommand\hide[1]{%
 \settoheight{\heighthide}{#1}%
 \settowidth{\widthhide}{#1}%
 \tikz{\node[inner sep=0pt,rectangle,draw,
 text height=\heightconf,
 text width=\widthconf,
 fill=black]{};}
}

提前感谢你的帮助。

答案1

a 中的文本\savebox全部排版在一行上。您需要\parbox在 内部使用 a \savebox

用黑框表示真实段落也存在一些问题,主要问题是恢复行距的正确深度。

该示例使用了两列只是为了并排查看效果。

\documentclass{article}
\usepackage{multicol}

% in a \parbox the indent is set to zero, so we save it
\newlength{\saveparindent}
\AtBeginDocument{\setlength{\saveparindent}{\parindent}}

\newsavebox{\mytext}

\newcommand{\hide}[1]{%
  \savebox{\mytext}{%
    \parbox[t]{\columnwidth}{
      \setlength{\parindent}{\saveparindent}
      #1\par\xdef\savedprevdepth{\the\prevdepth}
    }%
  }%
  \noindent
  \vrule height \ht\mytext % the height of \mytext
         depth \dp\mytext  % the depth of \mytext
         width \columnwidth
  \par
  % restore \prevdepth to compute correctly the interline glue
  \prevdepth\savedprevdepth
}

\begin{document}
\begin{multicols}{2}
Some text.

A paragraph that in the next column will be hidden.

Another hidden paragraph.

Some text.

Some text.

\hide{A paragraph that in the next column will be hidden.

Another hidden paragraph.}

Some text.
\end{multicols}

\end{document}

在此处输入图片描述

相关内容