如何制作类似 \parbox 的带有展开对齐样式的宏

如何制作类似 \parbox 的带有展开对齐样式的宏

我想构造一个类似 的宏,但使用 中的\parbox选项,即展开对齐样式。也就是说,当文本宽度小于定义的宽度(只有一行文本)时,文本将排版为展开对齐。如果文本宽度大于定义的宽度,则其行为与 \parbox 相同。[s]\makebox

例子:

\documentclass{article}
%\usepackage{...}

\begin{document}
\newcommand\newparbox[3][]{...}
|\newparbox{8em}{AB AB}|\par
|\newparbox[t]{8em}{AB AB AB AB AB AB AB}|
\end{document}

在此处输入图片描述

答案1

您可以使用以下命令检查参数的宽度是否大于给定的宽度\ifdim

\documentclass{article}

\begin{document}

\makeatletter
\newcommand\newparbox[3][]{%
    \settowidth\@tempdima{#3}
    \ifdim\@tempdima>#2\relax
        \parbox[#1]{#2}{#3}%
    \else
        \makebox[#2][s]{#3}%
    \fi
}
\makeatother

|\newparbox{8em}{AB AB}|\par
|\newparbox[t]{8em}{AB AB AB AB AB AB AB}|
\end{document}

编辑:LaTeX 版本:

\documentclass{article}

\usepackage{ifthen}

\begin{document}

\makeatletter
\newcommand\newparbox[3][]{%
    \settowidth\@tempdima{#3}%
    \ifthenelse{\lengthtest{\@tempdima > #2}}{\parbox[#1]{#2}{#3}}{\makebox[#2][s]{#3}}%
}
\makeatother

|\newparbox{8em}{AB AB}|\par
|\newparbox[t]{8em}{AB AB AB AB AB AB AB}|
\end{document}

相关内容