为什么额外的括号组会导致 \settominwidth 抱怨缺少 }

为什么额外的括号组会导致 \settominwidth 抱怨缺少 }

我正在使用该pbox包的命令来测量包含明确换行符的文本的排版宽度(这是标准 LaTeX不起作用\settominwidth的情况)。settowidth

在以下 MWE 中,我添加了一个括号组来本地化颜色开关 ( ) 的效果\color{red}。当将该命令传递给 时,添加括号组会导致错误\settominwidthMissing } inserted.

我想知道添加括号组有什么不合理之处。(请注意,在 中,没有添加括号组的颜色切换\textA不会引起投诉。)

我也很好奇为什么报告的宽度比大约\settominwidth大 2pt ,但这不是解决方案的强制性部分。\widthB\widthA

我意识到,在这个有限的 MWE 中,我可以通过使用来避免这个问题\textcolor{red}{someText},但是这个 MWE 是从更大的上下文中抽象出来的,在这个上下文中最好使用 switch。

Stack Exchange 建议将其作为“类似问题”:“为什么不能在 \if… \fi 组中使用括号?“。也许这是关键,但我对此了解得还不够\settominwidth

\documentclass{article}
\usepackage{pbox}
\usepackage{xcolor}
\setlength{\parindent}{0pt}
\newlength{\widthA}
\newlength{\widthB}
\newcommand{\textA}{\color{blue} One \\ Two}
\newcommand{\textB}{{\color{red} One \\ Two}}

\settominwidth{\widthA}{\textA}
\settominwidth{\widthB}{\textB}

\begin{document}
\texttt{\textbackslash{}widthA}: \the\widthA\\
\texttt{\textbackslash{}widthB}: \the\widthB

\textA

\textB

After text
\end{document}

在此处输入图片描述

答案1

\settominwidth在内部使用表格。这意味着你正在做

\begin{tabular}{@{}l@{}}
{\color{red} One \\ Two}
\end{tabular}

由于细胞是群体,所以这不起作用。

相关内容