获取给定文本的宽度作为长度

获取给定文本的宽度作为长度

是否有一个 TeX 命令可以返回给定文本的宽度长度值,以便我可以直接将结果用作另一个命令的长度参数?

我的意思是,我想要一个命令\getWidth{my text}并希望直接使用结果作为第一个参数\parbox

\parbox{\getWidth{my text}}{my foo\\bar text}

答案1

使用calc包(\usepackage{calc}):

\parbox{\widthof{my text}}{...}

“仅原始”的方法是

\newdimen\mywidth
\setbox0=\hbox{<text to measure>}
\mywidth=\wd0

然后使用\mywidth

答案2

我喜欢以更普遍的方式回答这个问题,以便它对更广泛的人群有用。

以下宏允许存储给定内容的宽度、高度(基线以上的材料)和深度(基线以下的材料)。

\settowidth{\somelength}{<content>}
\settodepth{\somelength}{<content>}
\settoheight{\somelength}{<content>}

calc包还提供了一个用于总高度(高度+深度)的:

\settototalheight{\somelength}{<content>}

\widthof{<content>}
\heightof{<content>}
\depthof{<content>}
\totalheightof{<content>}

可直接在\setlength或内部使用\addtolength

如果您需要相同内容的多个维度,您也可以将其存储在框寄存器中并直接使用其维度(上述宏也在内部执行此操作)。这些是维度表达式,可以以因子作为前缀,例如.5\wd\mybox宽度的一半。

\newsavebox\mybox
\sbox{\mybox}{<content>}
\wd\mybox % width
\ht\mybox % height
\dp\mybox % depth

要得到总高度,您需要将\ht\mybox\dp\mybox相加。

答案3

这是可以做到的没有包裹calc

\documentclass{article}

\begin{document}
  \newlength{\myl}
  \settowidth{\myl}{test text}
  \the\myl
\end{document}

\the\myl将打印出值~37pt。

答案4

这是一个选项pgf

% !Mode:: "TeX:UTF-8"
\documentclass{article}
\usepackage{pgf}

\begin{document}
\noindent
\pgfmathwidth{"length you wanted"}
\parbox{\pgfmathresult pt}{the text you want to print out}
\end{document}

返回\pgfmathwidth双引号中包含的文本的宽度\pgfmathresult,注意结果\pgfmathwidth始终为仅数值提供

帕尔博

顺便说一句,\pgfmathwidth它也适用于汉字。

相关内容