如何在表格中对齐多行

如何在表格中对齐多行

我正在使用以下代码回购

% Define an environment for cvskill
\newenvironment{cvskills}{%
  \vspace{\acvSectionContentTopSkip}
  \vspace{-2.0mm}
  \begin{center}
    \setlength\tabcolsep{1ex}
    \setlength{\extrarowheight}{0pt}
    \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} R{3cm}  L{\textwidth - 3cm}}
}{%
    \end{tabular*}
  \end{center}
}
% Define a line of cv information(skill)
% Usage: \cvskill{<type>}{<skillset>}
\newcommand*{\cvskill}[2]{%
  \skilltypestyle{#1} & \skillsetstyle{#2} \\
}

问题是,当表格的参数#2超过一行时,参数#1会在两行之间垂直居中

如何使 arg#1 与 arg#2 的第 1 行垂直对齐

答案1

从第 424 行开始awesome-cv.cls,可以找到以下定义:

% Use to align an element of tabular table
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}

基本上,环境中使用的列类型L和基于执行垂直居中的列类型构建。相反,您需要垂直顶部对齐。Rcvskillsm

我建议您按如下方式进行。

  • 首先,在序言中定义 3 种新的列类型,类似于LCR,但采用顶部对齐而不是居中对齐:

    \newcolumntype{M}[1]{>{\raggedright\arraybackslash}p{#1}}
    \newcolumntype{N}[1]{>{\centering\arraybackslash}p{#1}}
    \newcolumntype{O}[1]{>{\raggedleft\arraybackslash}p{#1}}
    
  • 其次,我认为环境的定义有点错误cvskills,导致环境的宽度\tabular*超过了\textwidth。我认为更正确的定义方式是

    \newenvironment{cvskills}{%
      \vspace{\acvSectionContentTopSkip}
      \vspace{-2.0mm}
      \begin{center}
      \setlength\tabcolsep{0pt} % not '1ex'
      % \setlength{\extrarowheight}{0pt} % 0pt is the default
      \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} O{3cm} M{\textwidth-3.3cm}} 
    }{%
      \end{tabular*}
      \end{center}
    }
    

    这将使列之间留下 3 毫米的空白。


相关内容