我们可以定义一个 \newcommand 在固定宽度的框内输出文本吗?

我们可以定义一个 \newcommand 在固定宽度的框内输出文本吗?

我正在创建一个具有相当标准结构的文档。因此,我创建了两个命令来帮助我格式化它:

\documentclass{article}
\usepackage{xltxtra}
\newcommand{\witem}[2]{{#1 #2}}
\newcommand{\ws}[2]{{#1\textsuperscript{#2}}}
\begin{document}

\setlength{\parindent}{0cm}
\witem{Jan 1}{OHP} \ws{20}{5,5} \ws{26}{5} \ws{32}{5,5,5} \\
\witem{Apr 9}{BP} \ws{20}{5,5} \ws{33}{5} \ws{46}{5,3,3}

\end{document}

是否可以\witem{Jan 1}{OHP}将输出“Jan 1”“OHP”的函数改为始终将两个块输出为 2cm + 3cm?(我不需要担心换行或类似的事情。

在此处输入图片描述

答案1

您可以使用\makebox

\newcommand{\witem}[2]{%
  \makebox[2cm][l]{#1}%
  \makebox[3cm][l]{#2}%
}

完整示例:

\documentclass{article}

\newcommand{\witem}[2]{%
  \makebox[2cm][l]{#1}%
  \makebox[3cm][l]{#2}%
}
\newcommand{\ws}[2]{{#1\textsuperscript{#2}}}

\begin{document}

\witem{Jan 1}{OHP} \ws{20}{5,5} \ws{26}{5} \ws{32}{5,5,5}

\witem{Apr 9}{BP} \ws{20}{5,5} \ws{33}{5} \ws{46}{5,3,3}

\end{document}

在此处输入图片描述

如果您想要在分配的区域中右对齐,则更改为;如果您想要居中,则[l]省略它。[r]

答案2

例如使用\parbox具有相关宽度的。

该示例显示了具有两个定义长度的用法,可以轻松更改为命令的任何其他目的\witem

其他可能性:使用tabularxwithpX- columntype 方法:

\documentclass{article}
\usepackage{xcolor}
\usepackage{tabularx}
\usepackage{xltxtra}

\newlength\firstboxwidth
\newlength\secondboxwidth

\setlength{\firstboxwidth}{2cm}
\setlength{\secondboxwidth}{3cm}

\newcommand{\witem}[2]{\parbox{\firstboxwidth}{#1}\parbox{\secondboxwidth}{#2}}

\newcommand{\wtabitem}[2]{{#1} & {#2} &}
\newcommand{\ws}[2]{{#1\textsuperscript{#2}}}
\begin{document}

\setlength{\parindent}{0em}

\witem{\rule{\firstboxwidth}{0.5cm}}{\color{red}\rule{\secondboxwidth}{0.5cm}}

\witem{Jan 1}{OHP} \ws{20}{5,5} \ws{26}{5} \ws{32}{5,5,5} 

\witem{Apr 9}{BP} \ws{20}{5,5} \ws{33}{5} \ws{46}{5,3,3}


And now the tabularx approach: 

\begin{tabularx}{\linewidth}{@{}p{\firstboxwidth}@{}p{\secondboxwidth}@{}XXX}

\wtabitem{Jan 1}{OHP} \ws{20}{5,5} & \ws{26}{5}& \ws{32}{5,5,5}  \tabularnewline

\wtabitem{Apr 9}{BP} \ws{20}{5,5} &\ws{33}{5}& \ws{46}{5,3,3} \tabularnewline

\end{tabularx}

\end{document}

在此处输入图片描述

答案3

您的请求最直接的实现可能是通过 \makebox1

\documentclass{article}
%\usepackage{xltxtra}
\newcommand{\witem}[2]{{\makebox[2cm][l]{#1}\makebox[3cm][l]{#2}}}
\newcommand{\ws}[2]{{#1\textsuperscript{#2}}}
\begin{document}

\setlength{\parindent}{0cm}
\witem{Jan 1}{OHP} \ws{20}{5,5} \ws{26}{5} \ws{32}{5,5,5} \\
\witem{Apr 9}{BP} \ws{20}{5,5} \ws{33}{5} \ws{46}{5,3,3}

\end{document}

相关内容