将表格环境居中,使空白均匀分布

将表格环境居中,使空白均匀分布

我想要将两列tabular环境居中,使得第一列文本块末尾和列分隔符之间的空白量与列分隔符和第二列文本块开头之间的空白量相同。

换句话说,在下面的 MWE 中,红线应恰好位于两列之间,并且不与第二列的开头对齐,以便文本在其周围保持平衡。但是,两列都应左对齐。

我尝试过使用@{}表达式,但无济于事。我查看了tabularytabularx。也许array提供了解决方案的基础,但我还没有弄清楚哪种列规范可以让我做到这一点。似乎\newline使问题更加复杂,但我不知道如何解决它们,因为左列中的每一行都对应于右列中可变数量的行。

\documentclass{memoir}

\usepackage{tikz}

\begin{document}

\newcommand{\jury}{%
Président du jury et \newline examinateur interne &  Nom du professeur   \newline Institution                                  \\%
Examinateur externe                               &  Nom du professeur   \newline Faculté ou département \newline Institution  \\%
Examinateur interne                               &  Nom du professeur   \newline Institution                                  \\%
Directeur de recherche                            &  Jean-Claude Van Damme \newline ULB                                     \\%
Codirecteur de recherche                          &  Steve McQueen       \newline USCFA \newline
}

\thispagestyle{empty}
\newlength{\centeradjust}
\calccentering{\centeradjust}  % Calculate center length and stores in centeradjust
\begin{adjustwidth*}{\centeradjust}{-\centeradjust}   % Adjust center
\begin{adjustwidth}{-1cm}{-1cm}
  \begin{tikzpicture}[remember picture,overlay]
    \draw[red] (current page.north) -- (current page.south);
  \end{tikzpicture}
  \begin{center}
  \begin{OnehalfSpace}
    \vspace*{3\baselineskip}
     {\Large Centered page using adjustwidth (as per the \texttt{memoir} manual)}

     \vfill

     The following table is not centered the way I want it to be.\\[1cm]
    \renewcommand{\arraystretch}{2}
     \begin{tabular}{p{5cm}@{}p{5cm}@{}}
      \jury
    \end{tabular}
   \vspace*{3\baselineskip}
 \end{OnehalfSpace}
 \end{center}
\end{adjustwidth}
\end{adjustwidth*}

\end{document}

中心有红线的 MWE

答案1

无需猜测最宽的条目:

\documentclass{memoir}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}

\usepackage{xcolor}

\newcommand{\juryitem}[2]{}
\newlength{\jurywidth}

\newcommand{\printjury}{%
  \begin{center}
  % this just prints the divider line (remove in the final version)
  \makebox[\textwidth]{%
    \smash{\vrule width 0.1pt depth \textheight height 0pt}%
  }
  %%% end part to remove
  \sbox0{%
    \def\juryitem##1##2{\begin{tabular}{@{}l@{}}##1\end{tabular}}%
    \begin{tabular}{@{}l@{}}\jury\end{tabular}%
  }%
  \setlength{\jurywidth}{\wd0}%
  \sbox0{%
    \def\juryitem##1##2{\begin{tabular}{@{}l@{}}##2\end{tabular}}%
    \begin{tabular}{@{}l@{}}\jury\end{tabular}%
  }%
  \ifdim\wd0>\jurywidth \setlength{\jurywidth}{\wd0}\fi
  \renewcommand{\arraystretch}{3}%
  \def\juryitem##1##2{%
    \renewcommand\arraystretch{1}%
    \begin{tabular}[t]{@{}l@{}}##1\end{tabular}
    &
    \renewcommand\arraystretch{1}%
    \begin{tabular}[t]{@{}l@{}}##2\end{tabular}
  }%
  \begin{tabular}{@{}p{\jurywidth}@{\hspace{2cm}}p{\jurywidth}@{}}
  \jury
  \end{tabular}%
  \end{center}
  \thispagestyle{empty}
  \clearpage
}

\begin{document}

\newcommand{\jury}{%
  \juryitem
    {Président du jury et \\ examinateur interne}
    {Nom du professeur \\ Institution}
  \\
  \juryitem
    {Examinateur externe}
    {Nom du professeur \\ Faculté ou département \\ Institution}
  \\
  \juryitem
    {Examinateur interne}
    {Nom du professeur \\ Institution}
  \\
  \juryitem
    {Directeur de recherche}
    {Jean-Claude Van Damme \\ ULB}
  \\
  \juryitem
    {Codirecteur de recherche}
    {Steve McQueen \\ USCFA}
  \\
  \juryitem
    {Codirecteur de recherche}
    {Steven Seagal \\ Texas Rangers}
}

\printjury

\end{document}

定义里的2cm是柱子之间的间距,随意调整。

记得去掉打印分割线的部分。

在此处输入图片描述

由于显而易见的原因,我必须加入史蒂文·西格尔和查克·诺里斯。


这个想法是以一种方便以各种方式使用的方式输入陪审团成员。所以我用它来测量左列,忽略右列,然后测量右列并将最宽的长度保存在参数中。然后使用给定的线宽排版列表。

答案2

为了确保两列都 100% 填充,请抓取最长的条目并将列宽设置为其长度。使用包\widthof中的命令,这很容易calc

\documentclass{memoir}
\usepackage{tikz}
\usepackage{calc}
\begin{document}

\newcommand{\jury}{%
Président du jury et\newline examinateur interne & Nom du professeur\newline Institution       \\%
Examinateur externe      & Nom du professeur\newline Faculté ou département\newline Institution\\%
Examinateur interne      & Nom du professeur\newline Institution                               \\%
Directeur de recherche   & Jean-Claude Van Damme\newline ULB                                   \\%
Codirecteur de recherche & Steve McQueen\newline USCFA
}

\thispagestyle{empty}
\newlength{\centeradjust}
\calccentering{\centeradjust}  % Calculate center length and stores in centeradjust
\begin{adjustwidth*}{\centeradjust}{-\centeradjust}   % Adjust center
\begin{adjustwidth}{-1cm}{-1cm}
  \begin{tikzpicture}[remember picture,overlay]
    \draw[red] (current page.north) -- (current page.south);
  \end{tikzpicture}
  \begin{center}
  \begin{OnehalfSpace}
    \vspace*{3\baselineskip}
     {\Large Centered page using adjustwidth (as per the \texttt{memoir} manual)}

     \vfill

     The following table is not centered the way I want it to be.\\[1cm]
    \renewcommand{\arraystretch}{2}
     \begin{tabular}{ p{\widthof{Codirecteur de recherche}} @{\hspace{2em}} p{\widthof{Jean-Claude Van Damme}} @{}}
      \jury
    \end{tabular}
   \vspace*{3\baselineskip}
 \end{OnehalfSpace}
 \end{center}
\end{adjustwidth}
\end{adjustwidth*}

\end{document}

在此处输入图片描述

答案3

请注意,在没有的\newline地方添加空格。\linebreak

\documentclass{memoir}
\usepackage{array}
\usepackage{tikz}

\begin{document}

\newcommand{\jury}{%
Président du jury et\linebreak examinateur interne &  Nom du professeur   \newline Institution                                  \\%
Examinateur externe                                &  Nom du professeur   \newline Faculté ou département \newline Institution  \\%
Examinateur interne                                &  Nom du professeur   \newline Institution                                  \\%
Directeur de recherche                             &  Jean-Claude Van Damme \newline ULB                                     \\%
Codirecteur de recherche                           &  Steve McQueen       \newline USCFA \newline
}

\thispagestyle{empty}
\newlength{\centeradjust}
\calccentering{\centeradjust}  % Calculate center length and stores in centeradjust
\begin{adjustwidth*}{\centeradjust}{-\centeradjust}   % Adjust center
\begin{adjustwidth}{-1cm}{-1cm}
  \begin{tikzpicture}[remember picture,overlay]
    \draw[red] (current page.north) -- (current page.south);
  \end{tikzpicture}
  \begin{center}
  \begin{OnehalfSpace}
    \vspace*{3\baselineskip}
     {\Large Centered page using adjustwidth (as per the \texttt{memoir} manual)}

     \vfill

     The following table is not centered the way I want it to be.\\[1cm]
    \renewcommand{\arraystretch}{2}%
     \begin{tabular}{>{\raggedleft}p{5cm}|p{5cm}}
      \jury
    \end{tabular}% Note, without this comment or a \linebreak the center would be 1/2 space off.
   \vspace*{3\baselineskip}
 \end{OnehalfSpace}
 \end{center}
\end{adjustwidth}
\end{adjustwidth*}

\end{document}

演示

相关内容