重型斜线与通常宽度斜线的对齐

重型斜线与通常宽度斜线的对齐

我正在尝试制作一个表格,其中某些单元格用加粗边框来强调这些单元格。我的尝试\arrayrulewidth非常成功,但\cline这种方式的加粗并不总是与标准加粗对齐,如以下示例所示: 在此处输入图片描述 如图所示,加厚的边框从底部突出。

有什么建议可以改善这种情况吗?

生成示例的代码是

\documentclass[border=10pt,11pt]{standalone}

\usepackage{setspace}
\usepackage{array,booktabs,multirow,makecell}
\newlength{\Oldarrayrulewidth}
\newcommand{\Cline}[2]{%
  \noalign{\global\setlength{\Oldarrayrulewidth}{\arrayrulewidth}}%
  \noalign{\global\setlength{\arrayrulewidth}{#1}}\cline{#2}%
  \noalign{\global\setlength{\arrayrulewidth}{\Oldarrayrulewidth}}}

%%% Japanese support
\usepackage{xeCJK}
\usepackage{zxjatype}
\usepackage{fontspec}
\def\cjkfontscale{1.0}
\setmainfont{Kozuka Mincho Pr6N}
\setCJKmainfont[Scale=\cjkfontscale]{Kozuka Mincho Pr6N}
\setCJKsansfont[Scale=\cjkfontscale]{Kozuka Gothic Pr6N}
\setCJKmonofont[Scale=\cjkfontscale]{Kozuka Gothic Pr6N}
\newCJKfontfamily\boldmincho{Hiragino Mincho ProN W6}

\begin{document}

\def\heavyrulewidth{2pt}
\def\strongvline{\vline width \heavyrulewidth}
\def\arraystretch{2.0}
\def\padcaption#1{\hspace{1.6em}#1\hspace{1.6em}}
\begin{tabular}{|c|r|c|r|}
  \cline{1-4}
  \multicolumn{1}{|c|}{\raisebox{-8pt}{\padcaption{件名}}}
  & \multicolumn{1}{|l|}{\parbox[t][3em]{12em}{Subject}}
  & \multirow{2}{*}[-10.8pt]{\hspace{1em}{納品先}\hspace{1em}}
  & \multirow{2}{*}{\parbox[t][4em]{14em}{Address}} \\
  \Cline{\heavyrulewidth}{1-2}
  \multicolumn{1}{!{\strongvline}c|}{\hspace{-1.5em}\padcaption{納品日}}
  & \multicolumn{1}{|r!{\strongvline}}{\boldmincho\Large 2020/1/1}
  & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} \\
  \Cline{\heavyrulewidth}{1-2}\cline{3-4}
\end{tabular}
\def\arraystretch{1.0}
\vspace{1em}

\end{document}

(使用 XeLaTeX。日语处理部分对于这个问题来说并不重要,但包含在内是为了更好地展示原始用法。)

答案1

使用最新版本nicematrix(2021-07-23 的 v. 5.19),可以轻松绘制所需的框架在矩形内只需一行代码。

\documentclass[border=10pt,11pt]{standalone}

\usepackage{setspace}
\usepackage{array,booktabs,multirow,makecell}

\usepackage{nicematrix}
\usepackage{tikz}


%%% Japanese support
\usepackage{xeCJK}
\usepackage{zxjatype}
\usepackage{fontspec}
\def\cjkfontscale{1.0}
\setmainfont{Kozuka Mincho Pr6N}
\setCJKmainfont[Scale=\cjkfontscale]{Kozuka Mincho Pr6N}
\setCJKsansfont[Scale=\cjkfontscale]{Kozuka Gothic Pr6N}
\setCJKmonofont[Scale=\cjkfontscale]{Kozuka Gothic Pr6N}


\begin{document}

\def\heavyrulewidth{2pt}
\def\strongvline{\vline width \heavyrulewidth}
\def\arraystretch{2.0}
\def\padcaption#1{\hspace{1.6em}#1\hspace{1.6em}}
\begin{NiceTabular}{|c|r|c|r|}% [hvlines]
\hline
  \raisebox{-8pt}{\padcaption{件名}}
  & \multicolumn{1}{l}{\parbox[t][3em]{12em}{Subject}}
  & \multirow{2}{*}[-10.8pt]{\hspace{1em}{納品先}\hspace{1em}}
  & \multirow{2}{*}{\parbox[t][4em]{14em}{Address}} \\
  \Block[tikz=clip,tikz={draw,line width=4pt},hvlines]{1-2}{}
  \hspace{-1.5em}\padcaption{納品日}
  & \Large 2020/1/1 \\
\hline
\end{NiceTabular}
\def\arraystretch{1.0}
\vspace{1em}

\end{document}

该行是:\Block[tikz=clip,tikz={draw,line width=4pt},hvlines]{1-2}{}

  • 该块有一行和两列(1-2)。
  • 使用tikz=clip,与块相对应的矩形用于剪切进一步的构造。
  • 使用 时tikz={draw,line width=4pt},框架的绘制厚度为 4 pt。但是,使用裁剪时,只会显示框架的内部部分(厚度为 2 pt)。
  • 该键hvlines用于绘制块内的所有规则(实际上只有一条:中央垂直规则)。

上述代码的输出

答案2

{NiceTabular}这是使用 的解决方案nicematrix。此环境基于 构建,{tabular}但在单元格、行和列下添加了 PGF/Tikz 节点。使用这些节点可以轻松使用 Tikz 绘制您想要的任何规则。

\documentclass[border=10pt,11pt]{standalone}

\usepackage{setspace}
\usepackage{array,booktabs,multirow,makecell}

\usepackage{nicematrix}
\usepackage{tikz}


%%% Japanese support
\usepackage{xeCJK}
\usepackage{zxjatype}
\usepackage{fontspec}
\def\cjkfontscale{1.0}
\setmainfont{Kozuka Mincho Pr6N}
\setCJKmainfont[Scale=\cjkfontscale]{Kozuka Mincho Pr6N}
\setCJKsansfont[Scale=\cjkfontscale]{Kozuka Gothic Pr6N}
\setCJKmonofont[Scale=\cjkfontscale]{Kozuka Gothic Pr6N}
% \newCJKfontfamily\boldmincho{Hiragino Mincho ProN W6}

\begin{document}

\def\heavyrulewidth{2pt}
\def\strongvline{\vline width \heavyrulewidth}
\def\arraystretch{2.0}
\def\padcaption#1{\hspace{1.6em}#1\hspace{1.6em}}
\begin{NiceTabular}{|c|r|c|r|}
\hline
  \raisebox{-8pt}{\padcaption{件名}}
  & \multicolumn{1}{l}{\parbox[t][3em]{12em}{Subject}}
  & \multirow{2}{*}[-10.8pt]{\hspace{1em}{納品先}\hspace{1em}}
  & \multirow{2}{*}{\parbox[t][4em]{14em}{Address}} \\
  \hspace{-1.5em}\padcaption{納品日}
  & \Large 2020/1/1 \\
\CodeAfter
\begin{tikzpicture}
\draw (3-|1) -- (3-|5) ;
\draw [very thick] (2-|1) rectangle (3-|3) ;
\end{tikzpicture}
\end{NiceTabular}
\def\arraystretch{1.0}
\vspace{1em}

\end{document}

上述代码的输出

相关内容