这个问题与至少另外两个问题密切相关,即:数字表, 和slashbox 替代品。
我所追求的是 OP 中第一个提到的问题(下面重新包含)的图片中行标题和列标题的水平和垂直对齐。
两个问题的答案中都有一些印刷方面的问题没有得到满足:
- 这
$n$
标题以与列内容相同的方式水平对齐。 - 行
$k$
标题在其容器框中右对齐,并与其行内容垂直对齐。
如何才能实现这一目标呢?
我对实现这一目标的任何方法都很感兴趣;无论是 Plain、LaTeX、Context、Lua、PGF/TikZ……无论什么!
为了实现这一目标,我用简单的英语描述步骤如下:
- 输入
$n$
降低的 -header,例如 1em,以便它获得列的自然宽度,以及序言中指定的正确格式(例如,居中或左对齐)。但表现得好像什么都没做,这样它就不会占用后面的空间。 - 输入
$k$
-header flush right。垂直对齐应该自动与行内容对齐。同样,这可能不会占用任何空间,所以就当什么都没做一样。 - 将上述两个框合并为一个实体,
\hss
(?)彼此分开,并从框的自然宽度(理想情况下与整个列的自然宽度相同?)右下角到左上角划一条线。
但由于我的 TeX 功底严重欠缺,我无法用 TeX 表达这些要求。更不用说理解这是否是正确的方法了!
答案1
请考虑下图:
最小宽度,需要让两个单词对齐,并在它们之间有一个斜线,即两个单词的总宽度加上一点边距。
可以通过向其中一个单词添加适当宽度的支柱来实现对齐,如下面的代码所示(基本示例来自slashbox 替代品)。
\documentclass{article}
\usepackage{slashbox,booktabs,xcolor,amsmath}
\begin{document}
\noindent
\begin{tabular}{|l||*{5}{c|}}\hline
\backslashbox{\colorbox{orange}{Class venue $(w_1)$}}{\colorbox{yellow}{\vrule height4.8ex width0pt Date $(w_2)$}}
&\makebox[3em]{5/31}&\makebox[3em]{6/1}&\makebox[3em]{6/2}
&\makebox[3em]{6/3}&\makebox[3em]{6/4}\\\hline\hline
Meeting Room &&&&&\\\hline
Auditorium &&&&&\\\hline
Seminar Room &&&&&\\\hline
\end{tabular}
\end{document}
我确信,只要有一点毅力,我们的一位数学家成员就能证明,构造印刷正确的斜线框是不可能的!
答案2
\documentclass{article}
\usepackage{picture,slashbox}
\begin{document}
\begin{tabular}{@{}c|*6c}
\backslashbox[0pt][l]{}{}
& \makebox(0,0)[lb]{\put(-1.25\tabcolsep,0){\llap{k}}}%
a & 0 & 1 & 2 & 3 \\\hline
\makebox(0,0){\put(0,2.25\normalbaselineskip){\rlap{n}}}%
0 & b & 1 & 2 & 3 & 4\\
1 & c & 1 & 2 & 3 & 4\\
2 & d & 1 & 2 & 3 & 4\\
\end{tabular}
\end{document}