Tabularx \parbox 列的水平对齐

Tabularx \parbox 列的水平对齐

在此处输入图片描述

为了学习,我需要将一些信息放入 中tabular。我使用tabularx和 来确定我使用的列宽\parbox。这些都很好用,但两列上的文本不是从同一级别开始的。我想让左列上的文本与右列上的文本处于相同的高度,我该怎么做?

\documentclass{article}     
\usepackage{polyglossia}    
\setmainlanguage{french}    
\setotherlanguages{english,german,latin,italian,spanish,russian,greek}     
\usepackage{tabularx}    

\begin{document}    
\begin{center}    
    \begin{tabularx}{\linewidth}{|@{}>{\bfseries}l|@{\hspace{.5em}}X@{}|}
   \hline  \parbox{3cm}{text} & text \\     
 \hline \parbox{3cm}{text}  & text  \\    
  ...        
\end{tabularx}    
\end{center}    
\end{document}    

答案1

对于第一列,不要指定l为列类型,然后使用\parbox(宽度为3cm)来排版其材质。而是p{3cm}直接使用列类型说明符。

鉴于第一列的设置相当狭窄,我会使用右边不规则而不是完全(即左、右)对齐。

在此处输入图片描述

\documentclass{article}     
\usepackage{polyglossia}    
\setmainlanguage{french}    
\setotherlanguages{english,german,latin,italian,spanish,russian,greek}     
\usepackage{tabularx} 
\usepackage{ragged2e} % for "\RaggedRight" macro  
\newcolumntype{P}[1]{>{\RaggedRight\arraybackslash}p{#1}}
\usepackage{lipsum} % for filler text

\begin{document}    
\noindent  
\begin{tabularx}{\linewidth}{ @{}
    >{\bfseries}P{3cm} | @{\hspace{.5em}}
    X @{}}
\hline  
Once upon a time, there was an enchanted castle \dots & 
\lipsum*[1] \\     
\hline 
text  & text  \\           
\end{tabularx}       
\end{document} 

附录回答@u2berggeist 的后续问题:

\arraybackslash您能解释一下列类型定义中该命令的必要性吗

让我先从该软件包的用户指南的摘录开始array

\arraybackslash:恢复以在环境中\\使用(之后等)。arraytabular\raggedright

诚然,这太简洁了。让我尝试对 的目的进行更冗长的解释\arraybackslash

  • 当使用\newcolumntype定义新的列类型时, 的含义\\会发生变化(我承认我从未完全理解其中的原因)。但结果是\\不再是创建换行符的宏;人们必须使用 来\tabularnewline代替。该指令\arraybackslash只是恢复了 的普遍预期行为\\。(我想我从未见过喜欢在 ...\tabularnewline上打字的人\\

  • 在上面的代码中,列(第一列)没有强制换行P。因此,并非绝对必要在的定义\arraybackslash中使用。那么我为什么要使用呢?我这样做有两个原因。\newcolumntypeP\arraybackslash

  • 首先,这样做永远不会有坏处——除非一个人渴望打字\tabularnewline……

  • 其次,如果该P列用于最终的\arraybackslash列而不是第一列,如果在说明中没有使用,\newcolumntype就会产生一些相当神秘的错误消息,这肯定会让除了 David Carlisle 之外的所有人都感到困惑。这个网站上的帖子经常出现在 Google 搜索中,甚至在发布多年之后也是如此。例如,这个答案可能会出现在搜索“latex table raggedright column”中。这个答案的随意读者可能会很高兴地注意到

    \newcolumntype{P}[1]{>{\RaggedRight\arraybackslash}p{#1}}
    

    甚至可能注意到必须加载包ragged2e(因为它定义了\RaggedRight)。普通读者可能会错过——事实上,错过应该得到原谅!——在tabularx手头的环境中,P列类型不会在最终的专栏。如果我发布

    \newcolumntype{P}[1]{>{\RaggedRight}p{#1}}
    

    对于给定的环境,答案仍然“有效” tabularx;但是,它将不必要地冒着在未来的用户中造成巨大挫败感的风险,这些用户使用术语“latex table raggedright column”进行网络搜索,并且有兴趣使用该P列类型作为他们类似环境的最后一列,即最右边的列tabular

我成功回答了你的问题吗?

相关内容