表格边框上的列标题

表格边框上的列标题

我正在复制一本旧教科书,但无法排版表格。列标题或表格标题应放在边框上。

以下举两个例子:

示例1

示例2

第一个对应的代码如下:

\documentclass{standalone}

\begin{document}
  \fbox{
    \begin{tabular}{llll|lll}
      & & SINGULIER & & & PLURIEL \\
      & & & & & \\
      & MASCULIN & FÉMININ & NEUTRE & MASCULIN & FÉMININ & NEUTRE \\
      \textsc{Nom.} & \emph{is} & \emph{ea} & \emph{id} & \emph{ei} ou \emph{ii} & \emph{eæ} & \emph{ea}
    \end{tabular}
  }
\end{document}

我既没有包括重音符号,也没有包括下面的几行,因为它们与问题无关。

答案1

  • 正常排版表格,包括标题。
  • \tikznode为每个标题“在线”添加命令。
  • 将整体包装tabular成一个\tikznode命令。
  • 添加tikzpicture以绘制线条。

\tikznode命令定义和描述于这是“如何在方程和矩阵中添加箭头”的答案

对于微调,使用可选参数\tikznode为 tikz 提供选项。例如,为了在表格和标题周围添加更多空间,您可以通过以下方式定义两种样式

\tikzset{tab/.style={inner sep=2pt},hdr/.style={inner xsep=4pt}}

并将tabhdr作为选项添加到\tikznode命令中。

在此处输入图片描述

\documentclass[border=5pt]{standalone}
\usepackage{tikz}
\newcommand\tikznode[3][]{%
  \tikz[remember picture,baseline=(#2.base)]
    \node[minimum size=0pt,inner sep=0pt,#1](#2){#3};%
}
\tikzset{tab/.style={inner sep=2pt},hdr/.style={inner xsep=4pt}}
\begin{document}
\tikznode[tab]{singplu}{%
  \begin{tabular}{llll|lll}
    \multicolumn{4}{c}{\tikznode[hdr]{sing}{SINGULIER}} &  \multicolumn{3}{c}{\tikznode[hdr]{plu}{PLURIEL}} \\
    & & & & & \\
    & MASCULIN & FÉMININ & NEUTRE & MASCULIN & FÉMININ & NEUTRE \\
    \textsc{Nom.} & \emph{is} & \emph{ea} & \emph{id} & \emph{ei} ou \emph{ii} & \emph{eæ} & \emph{ea}
  \end{tabular}%
}%
\begin{tikzpicture}[remember picture,overlay]
  \draw (singplu.south west) |- (sing);
  \draw (sing) -- (plu);
  \draw (plu) -| (singplu.south east);
  \draw (singplu.south east) -- (singplu.south west);
\end{tikzpicture}

\end{document}

答案2

这是一个{NiceTabular}使用 的解决方案nicematrix

\documentclass{article}
\usepackage[french]{babel}
\usepackage{lmodern}
\usepackage{nicematrix}
\usepackage{tikz}

\begin{document}

\newcolumntype{:}{!{\vrule}}

\begin{NiceTabular}{|llll:lll|}
\Hline
\noalign{\vspace{4mm}}
  & MASCULIN & FÉMININ & NEUTRE & MASCULIN & FÉMININ & NEUTRE \\
  \textsc{Nom.} & \emph{is} & \emph{ea} & \emph{id} & \emph{ei} ou \emph{ii} & \emph{eæ} & \emph{ea} \\
\noalign{\vspace{1mm}}
\Hline
\CodeAfter
\tikz \draw (1-|1) -- node [fill=white] {SINGULIER} (1-|5) 
            (1-|5) -- node [fill=white] {PLURIEL} (1-|8) ;
\end{NiceTabular}%

\end{document}

您需要多次编译(因为nicematrix使用 PGF/Tikz 节点)。

上述代码的输出

相关内容