单行字符串的长度

单行字符串的长度

在以下 TNWE(Tiny Not Working Example)中,我想通过计算文本的长度来对齐右侧的括号,例如用于\kern填充右侧的空格。也许带框的 blackmagic 可以完成这项工作,但这远远超出了我对 LaTeX 的了解。

\documentclass[12pt]{article}

\newcommand\test[2]{
    \{#1\}
    
    \{#2\}
}

\parindent=0em

\begin{document}

\test{Hello}{the world...}

\end{document}

我想获得:

{Hello       }
{the world...}

在一些我不能随心所欲的环境中会用到宏。这就是我想使用的原因\kern

答案1

没有黑魔法,只有标准功能。

\documentclass[12pt]{article}

\newcommand{\dimmax}[2]{%
  \ifdim#1>#2 #1\else #2\fi
}
\newlength{\testupper}
\newlength{\testlower}
\newcommand\test[2]{%
  \par % ?
  \settowidth\testupper{#1}%
  \settowidth\testlower{#2}%
  \{\makebox[\dimmax{\testupper}{\testlower}][l]{#1}\}\par
  \{\makebox[\dimmax{\testupper}{\testlower}][l]{#2}\}\par
}

\setlength{parindent}{0pt}

\begin{document}

\test{Hello}{the world\dots}

\end{document}

在此处输入图片描述

答案2

在此处输入图片描述



\documentclass[12pt]{article}

\newcommand\test[2]{%%
\par
\begin{tabular}{@{}l@{}l@{}l@{}}%
\{&#1&\}\\%
\{&#2&\}%
\end{tabular}\par}


\newcommand\testb[2]{%%
\par
\sbox0{#1}%
\sbox2{#2}%
\{#1\ifdim\wd2>\wd0 \kern\dimexpr\wd2-\wd0\relax\fi\}\par
\{#2\ifdim\wd0>\wd2 \kern\dimexpr\wd0-\wd2\relax\fi\}\par
}


\parindent=0em

\begin{document}

\test{Hello}{the world...}


\testb{Hello}{the world...}

\end{document}


相关内容