使用特定文本块的宽度作为参数

使用特定文本块的宽度作为参数

我想知道是否可以获取某个文本块的宽度,将其作为参数传递\newcommand并在条件中以数字形式使用它。

例如,定义一个\newcommand如果文本(作为参数传递)的宽度大于 6 厘米则以红色打印,其他情况下则以蓝色打印。

\documentclass{article}

\usepackage{ifthen}
\usepackage{calc}

\newcommand{\tc}[1]{
\ifthenelse{ \convertto{cm}{ \textwidth{#1} } > 6 }{\textcolor{red}{#1}}{\textcolor{blue}{#1}}
}

\begin{document}
\tc{hello}
\end{document}

\textwidth没有返回数值,或者我没有以正确的方式使用它。

答案1

在这里,我将文本设置在临时的 box0 中,并通过\ifdim将该框的宽度与进行比较6cm。我根据该测试的结果决定颜色。

\documentclass{article}

\usepackage{xcolor}

\newcommand{\tc}[1]{%
  \sbox0{#1}%
  \ifdim\wd0>6cm\relax\textcolor{red}{#1}\else\textcolor{blue}{#1}\fi
}

\begin{document}
\tc{hello}

\tc{This is a test of very long text to see if it goes red}
\end{document}

在此处输入图片描述

相关内容