将 itemize 中的文本在表格内右对齐

将 itemize 中的文本在表格内右对齐

我有这个代码

\begin{tabular}{p{0.5\textwidth} p{0.2\textwidth} p{0.3\textwidth}}
 \begin{itemize}[topsep=5pt, leftmargin=*, itemsep=0pt]
  \item 1
  \item 2
 \end{itemize}&
 \begin{itemize}[topsep=5pt, leftmargin=*, itemsep=0pt, label={}]
  \item 1
  \item 2
 \end{itemize}&
 \begin{itemize}[topsep=5pt, leftmargin=*, itemsep=0pt, label={}]
  \item 1
  \item 2
 \end{itemize}
\end{tabular}

基本上可以正常工作。但是,我希望最后一个项目itemize被刷新到右侧,这样文本就会出现在行尾。我该怎么做?

答案1

我猜您正在寻找以下内容:

在此处输入图片描述

(红线表示页面布局)

为了使单元格内容的对齐更加清晰,表格中添加了水平线和垂直线:

\documentclass{article}
\usepackage[table]{xcolor}
%---------------- Show page layout. Don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\usepackage{enumitem}
\usepackage{array}

\begin{document}
\centering
\begin{tabular}{@{}|p{\dimexpr0.5\textwidth-\tabcolsep-1.25\arrayrulewidth}
                   |p{\dimexpr0.2\textwidth-2\tabcolsep-1.25\arrayrulewidth} 
                   |p{\dimexpr0.3\textwidth-\tabcolsep-1.25\arrayrulewidth}|@{}}
    \hline
 \begin{itemize}[topsep=5pt, leftmargin=*, itemsep=0pt]
  \item 1
  \item 2
 \end{itemize}  &
 \begin{itemize}[topsep=5pt, leftmargin=*, itemsep=0pt, label={}]
  \item 1
  \item 2
 \end{itemize}  &
 \begin{itemize}[topsep=5pt, wide, label={}]\raggedleft % <---
  \item 1
  \item \large longer item here in two lines?
  \item some short
 \end{itemize}  \\
 \hline
\end{tabular}
\end{document}

如果您不喜欢表中的行,只需删除它们并将表设置更正为:

\begin{tabular}{@{}p{\dimexpr0.5\textwidth-\tabcolsep}
                   p{\dimexpr0.2\textwidth-2\tabcolsep} 
                   p{\dimexpr0.3\textwidth-\tabcolsep}@{}}

编辑:

  • \tabcolsep每个单元格由、文本宽度和组成\tabcolsep

  • @{}删除\tabcolsep。这意味着,在您的情况下,单元格构造中的第一列将删除第一列\tabcolsep,最后一列将删除第二列。

  • 在列类型中p{<width>,定义了<width>单元格中文本的宽度。因此,<width> + 2\tabcolsep如果没有,则列的宽度相等@{}

  • 该表格可以适合文本区域,列宽总和应等于\textwidth。这意味着,在您的情况下,列规范{@{} p{0.5\textwidth} p{0.3\linewidth} p {0.2\linewidth} @{}}表格将溢出文本区域

    \tabcolsep(来自第一列)+ 2\tabcolsep(来自第二列)+ tabcolsep(来自最后一列)。

    为了避免这种情况发生,应相应减少列内规格。这可以通过使用 TeX 基元\dimexpr(用于计算长度)轻松完成,通过该基元计算列宽。

  • 在第一个版本的答案中,我计算时犯了一个错误,现在已经纠正

  • 在上述 MWE 中,如前所述,添加了垂直线,这样更容易看到列表在单元格中的定位。如果您删除它们,如原始答案中所述,表格将如下所示

在此处输入图片描述

相关内容