在以下 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@{}}%
\{&\}\\%
\{&\}%
\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}