可能重复:
获取给定文本的宽度作为长度
在试图计算两个节点之间的 x 距离,问题是是否有可能设计出扩展至其参数长度的宏,或任意长度。(实际值或获取方式在这里无关紧要。)是否有必要生成长度的十进制表示并解析它?\widthof
链接问题中提到的宏如何以及为什么起作用?
\documentclass{article}
\pagestyle{empty}
\usepackage{tikz}
\usetikzlibrary{positioning}
\newcommand{\footextwidth}[1]{%
% Should expand to the natural width of the argument
1cm
}
\begin{document}
A test for the macro.
A \parbox{\footextwidth{test}}{~} for the macro.
\end{document}
答案1
在\usepackage{calc}
你的序言中,你可以使用\parbox{\widthof{test}}
。\wdithof{<text>}
返回给定的宽度<text>
。
对此,更好的替代方案是 ,hphantom{test}
它将占用 所需的水平空间。垂直空间也test
有相应的,和。vphantom{}
\phantom{}
如果您想要存储宽度以供以后使用,可以使用:
\newlength{\MyLength}
\settowidth{\MyLength}{<text>}
然后,在需要长度的地方就可以使用 的值\MyLength
。在下面的最后一个例子中,空格由 产生\hspace{\MyLength}
。
笔记:
- 正如希格斯玻色子所评论的那样,
\textwidth
已经被定义,因此应该使用不同的名称。 - 有些情况不能
\widthof{}
直接使用:如何使用 \widthof 作为 \kern 的参数。
代码:
\documentclass{article}
\usepackage{calc}
\newcommand{\MyFixedWidth}{1cm}
\newlength{\MyLength}
\begin{document}
\begin{tabular}{l l}
A test for the macro. & no spacing\\
A \parbox{\MyFixedWidth}{~} for the macro. & use length \verb|\MyFixedWidth| = \MyFixedWidth\\
A \parbox{\widthof{test}}{~} for the macro. & use \verb|\widthof{test}|\\
A \hphantom{test} for the macro. & use \verb|\hphantom{test}|\\
\settowidth{\MyLength}{test}%
A \hspace{\MyLength} for the macro. & use \verb|\hspace{\MyLength}|\\
\end{tabular}
\end{document}