是否有可能设计一个扩展到一定长度的宏?

是否有可能设计一个扩展到一定长度的宏?

可能重复:
获取给定文本的宽度作为长度

在试图计算两个节点之间的 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}

在此处输入图片描述

笔记:

代码:

\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}

相关内容