如何使用 \backslashbox 处理宽列?

如何使用 \backslashbox 处理宽列?

我正在使用该包slashbox,并且我的左列相当宽,我该如何调整对角线(由创建\backslashbox)以使其从单元格的角落开始和结束?

示例代码:

\documentclass[11pt]{article}
\usepackage{slashbox}
\usepackage{pict2e}
\begin{document}
 \begin{table}[ht!]
  \centering
  \begin{tabular}{ *{4}{|c}|} 
   \hline
   \backslashbox{foo}{bar} & test & header & header \\
   \hline
   relatively wide column& b & $3$ & $4$ \\
   ds & c & $1$ & $4$ \\
   \hline
  \end{tabular}
 \end{table}
\end{document}

结果:

替代文本

答案1

最简单、最直接的方法是指定斜线框的字面大小。在你的情况下,它大约是 40 毫米。所以试试这个:

\backslashbox[40mm]{foo}{bar}

推广这种方法并不会太复杂。计算反斜杠框的大小时,先取列最宽字符串的大小,然后加上表格列分隔符宽度的两倍。

替代文本

答案2

由于这是一个涉及斜杠包本身,唯一的解决方案可能是破解包源。考虑重新构建表并使用书签包。请参阅下面的代码来了解一些想法。

\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[font=small,labelfont=bf,tableposition=top]{caption}
\usepackage{booktabs,multirow}

\begin{document}
  \begin{table}[!ht]
    \caption{Table caption}\label{tab:default}
    \centering
    \begin{tabular}{*{4}{|c}|}\hline
      \multirow{2}{*}{foo} & \multicolumn{3}{|c|}{bar} \\ \cline{2-4}
       & test & header & header \\ \hline
      relatively wide column& b & $3$ & $4$ \\
      ds & c & $1$ & $4$ \\ \hline
    \end{tabular}
  \end{table}

  \begin{table}[!ht]
    \caption{Table caption}\label{tab:booktabs}
    \centering
    \begin{tabular}{*{4}{c}}\toprule
      \multirow{2}{*}[-0.5ex]{foo} & \multicolumn{3}{c}{bar} \\ \cmidrule{2-4}
       & test & header & header \\ \midrule
      relatively wide column& b & $3$ & $4$ \\
      ds & c & $1$ & $4$ \\ \bottomrule
    \end{tabular}
  \end{table}
\end{document}

还值得考虑删除垂直线以提高表格的可读性,如上所示。

相关内容