使用表格环境将文本对齐为三列

使用表格环境将文本对齐为三列

在下面的代码中,我将六个函数排版为三列。我希望右括号在每列和2.5cm列之间垂直对齐。(我习惯@{ }在右括号和函数之间放置一个空格。它在第一列中排版正确。)

\documentclass{amsart}

\begin{document}

\begin{tabular}{r@{ }lp{2.5cm}r@{ }lp{2.5cm}r@{ }l}
i.)     &   $x^{2}$     &   ii.)    &      $x^{3}$  &   iii.)   &   $\sqrt{\vert x \vert}$ \\ [2ex]
iv.)    &   $\vert x \vert$ &   v.) &   $\sin{x}$   &   vi.)    &   $\ln{x}$
\end{tabular}

\end{document}

答案1

您的列太多了,如果我正确理解了您的问题,那么以下内容就足够了:

\documentclass{amsart}

\begin{document}

\begin{tabular}{r@{ }p{2.5cm}r@{ }p{2.5cm}r@{ }l}
i.)     &   $x^{2}$     &   ii.)    &      $x^{3}$  &   iii.)   &   $\sqrt{x}$ \\ [2ex]
iv.)    &   $\vert x \vert$ &   v.) &   $\sin{x}$   &   vi.)    &   $\ln{x}$
\end{tabular}

\end{document}

在此处输入图片描述

答案2

您可以改用该tasks包:

\documentclass{amsart}

\usepackage{tasks}

\usepackage{lipsum} % just for the example

\settasks{
  before-skip=\bigskipamount,
  after-skip=\bigskipamount,
}

\begin{document}

\lipsum*[2]
\begin{tasks}[
  counter-format=tsk[r].),
  label-align=right,
  label-width=2em,
](3)
\task $x^{2}$
\task $x^{3}$
\task $\sqrt{\lvert x \rvert}$
\task $\lvert x \rvert$
\task $\sin{x}$
\task $\ln{x}$
\end{tasks}
\lipsum[3]

\end{document}

在此处输入图片描述

答案3

看看以下内容是否是您所寻找的:

\documentclass{amsart}
\begin{document}

{\renewcommand\arraystretch{1.5}
\begin{tabular}{rl@{\hspace{2.5cm}}rl@{\hspace{2.5cm}}rl}
i.)     &   $x^{2}$         &   ii.)    &      $x^{3}$  &   iii.)   &   $\sqrt{\vert x \vert}$ \\ 
iv.)    &   $\vert x \vert$ &   v.)     &   $\sin{x}$   &   vi.)    &   $\ln{x}$    
\end{tabular}
}
\end{document}

您已定义 8 列,因此表中仅考虑前 6 列。对我而言,使用l列类型比更好p{...}

在此处输入图片描述

在此处输入图片描述

编辑: 第二幅图是使用代码生成的,如您所愿。现在您可以观察到差异:

\documentclass{amsart}
\usepackage{array}

\begin{document}

{\renewcommand\arraystretch{1.5}
\begin{tabular}{r@{ }>{$}l<{$} @{\hspace{2.5cm}}r@{ }>{$}l<{$} @{\hspace{2.5cm}}r@{ }>{$}l<{$} }
i.)     &   x^{2}         &   ii.)    &      x^{3}  &   iii.)   &   \sqrt{\vert x \vert} \\ 
iv.)    &   \vert x \vert &   v.)     &   \sin{x}   &   vi.)    &   \ln{x}    
\end{tabular}
}
\end{document}

笔记:您的问题不太清楚,所以答案或多或少是基于猜测和我的喜好。对于像表格一样的方程式排版,人们通常使用专门的包(任务)。正如我已经说过的,这又是基于猜测。

编辑:让我注意一下列类型的选择。使用l(如我所建议的)适用于一行文本,列的宽度采用最宽的单元格。相反,p{...}类型具有固定宽度(在您的情况下为 2.5 厘米),与单元格内容无关。如果它更宽,那么在正常情况下它会被分成更多行(如果内容的性质允许这样做)。此类单元格中的内容不是左对齐(如l),而是两端对齐(在多行内容中可见)。

我还对第二个 MWE 做了些许改动。在序言中,我添加了包array并将列更改l>{$}l<{$}。这表明,列中的内容是数学,您不需要将每个单元格放入$ ... $

答案4

我修正并简化了您的代码,但它有一个缺点,您必须自己输入标签。更明智的解决方案是使用tasks针对此类水平列表的包,或者shortlst您必须自己安装的包,因为出于版权原因,它不是TeX Livenor的一部分MiKTeX。基于 shortlst,我定义了一个tabenumerate环境,它可以做您想要的事情。它使用两个键:nc,列数(默认为 3)和il,interlinestretch。

请注意,tasks由于某种原因,第一项并未很好地对齐。

在下面的代码中,所有三种解决方案:

\documentclass{amsart}

\usepackage{tasks}
\usepackage{shortlst, xkeyval,  setspace}

\settasks{counter-format =tsk[r].), label-align=right,  label-offset=1em,before-skip =\smallskipamount, }


\makeatletter
\newcounter{ncol}
\define@key{lex}{nc}[3]{\setcounter{ncol}{#1}}%% 3 columns by default
\define@key{lex}{il}[1.5]{\def\@intln{#1}}% interlining![1]
\newenvironment{tabenumerate}[1][]{%
\setkeys{lex}{nc,il,#1}
\settowidth{\labelwidth}{\mbox{viii.)}}
\setlength{\leftmargini}{\dimexpr\labelwidth+\labelsep\relax}%[1][3]
\setlength{\shortitemwidth}{\dimexpr\linewidth/\value{ncol}-\labelwidth-2\labelsep\relax}%
\renewcommand{\labelenumi}{\roman{enumi}.)}
\setlength\labelsep{0.6em}
\setstretch{\@intln}
\begin{shortenumerate}}%
{\end{shortenumerate}
 }%

\begin{document}

\begin{tabular}{r@{ }l@{\hskip 2.5cm}r@{ }l@{\hskip 2.5cm}r@{ }l}
  i.)  & $x^{2}$           & ii.) & $x^{3}$   & iii.) & $√{\lvert x \rvert}$ \\ [2ex]
  iv.) & $\lvert x \rvert$ & v.)  & $\sin{x}$ & vi.)  & $\ln{x}$
\end{tabular}

\vspace{1cm}
\begin{tasks}(3)
  \task $x^{2}$
  \task $x^{3}$
  \task$√{\lvert x \rvert}$
  \task $\lvert x \rvert$
  \task $\sin{x}$
  \task $\ln{x}$
\end{tasks}

\vspace{1cm}
\begin{tabenumerate}[il=1.5]
  \item $x^{2}$
  \item $x^{3}$
  \item $√{\lvert x \rvert}$
  \item $\lvert x \rvert$
  \item $\sin{x}$
  \item $\ln{x}$
\end{tabenumerate}

\end{document} 

在此处输入图片描述

相关内容