我在尝试制作表格时遇到了问题。这是我目前拥有的代码:
\documentclass[12pt,letterpaper,french]{extarticle}
\usepackage[margin=.75in]{geometry}
\renewcommand{\l}{\left}
\renewcommand{\r}{\right}
\renewcommand{\d}{\displaystyle}
\newcommand{\virg}{\:,\:}
\renewcommand{\arraystretch}{2}
\usepackage{multirow}
\begin{document}
\begin{center}
\begin{tabular}{cc|c|c|}
\cline{3-4}
& & \multicolumn{2}{c|}{Individu 1} \\ \cline{3-4}
& & Colombe & Faucun \\ \hline
\multicolumn{1}{|c|}{\multirow{2}{*}{Individu 2}} & Colombe & \(\d\l(\frac{g}{2} \virg \frac{g}{2}\r)\) & \((g \virg 0)\) \\ \cline{2-4}
\multicolumn{1}{|c|}{} & Faucon & \((0 \virg g)\) & \(\d\l(\frac{g-c}{2} \virg \frac{g-c}{2}\r)\) \\ \hline
\end{tabular}
\end{center}
\end{document}
我想要的结果是一个包含分数的表格。但是线条太窄,分数与线条顶部和底部的线条接触。
我尝试将 arraystretch 调整为 2(使用\renewcommand{\arraystretch}{2}
),但这会弄乱单元格中文本的垂直居中,因为它只会在文本顶部添加空间。有什么方法可以解决这个问题吗?
注意:我不能使用 booktabs,因为我绘制的表格必须有垂直线。它应该看起来像这样:
在 Word 中制作的字体和间距并不完全是我需要的,这是我目前所拥有的:
(在word中制作,字体和间距不是我需要的)
答案1
帮自己一个忙,不重新定义\l
、\r
和\d
。您可能会发现它们是方便的快捷方式,但如果需要这些命令(与重音有关)的标准含义,那么您将遇到大麻烦。
宽度的设置可以根据宽对的宽度进行,但只需花一点时间来猜出一个好的宽度。
\documentclass[12pt,letterpaper,french]{extarticle}
\usepackage[margin=.75in]{geometry}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{amsmath}
\usepackage{multirow,array}
%\usepackage{xparse} % not needed with LaTeX 2020-10-01 or later
\NewDocumentCommand{\pair}{s O{} >{\SplitArgument{1}{,}}m }{%
\IfBooleanTF{#1}
{\left(\makepair#3\right)}
{\mathopen{#2(}\makepair#3\mathclose{#2)}}%
}
\NewDocumentCommand{\makepair}{ m m }{%
#1\mspace{4mu}{,}\mspace{4mu}#2%
}
\newcommand{\adj}[1]{\ensuremath{\vphantom{#1|}}\ignorespaces}
\begin{document}
\begin{center}
\begin{tabular}{|c|c|w{c}{7em}|w{c}{7em}|}
\cline{3-4}
\multicolumn{2}{c|}{\adj{\Big}} & \multicolumn{2}{c|}{Individu 1} \\
\cline{3-4}
\multicolumn{2}{c|}{\adj{\Big}} & Colombe & Faucon \\
\hline
\multirow{3}{*}{Individu 2}
& \adj{\bigg} Colombe & \(\pair[\Big]{\dfrac{g}{2},\dfrac{g}{2}}\) & \(\pair{g,0}\) \\
\cline{2-4}
& \adj{\bigg} Faucon & \(\pair{0,g}\) & \(\pair[\Big]{\dfrac{g-c}{2},\dfrac{g-c}{2}}\) \\
\hline
\end{tabular}
\end{center}
\end{document}
是什么\adj{\Big}
?我添加了一个类似 的支柱\Big|
。对于包含大对的行,我使用了\adj{\bigg}
,因为括号已经是\Big
。
\pair{x,y}
还要注意比 更简单的语法(x\virg y)
。
为什么不使用\left
and \right
?仔细查看您的输出,您会注意到顶行和底行的大括号的大小是不同的不管你信不信,原因就在于底行有一个减号。
一个不同的建议。
\documentclass[12pt,letterpaper,french]{extarticle}
\usepackage[margin=.75in]{geometry}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{amsmath}
\usepackage{booktabs,array}
%\usepackage{xparse} % not needed with LaTeX 2020-10-01 or later
\NewDocumentCommand{\pair}{s O{} >{\SplitArgument{1}{,}}m }{%
\IfBooleanTF{#1}
{\left(\makepair#3\right)}
{\mathopen{#2(}\makepair#3\mathclose{#2)}}%
}
\NewDocumentCommand{\makepair}{ m m }{%
#1\mspace{4mu}{,}\mspace{4mu}#2%
}
\begin{document}
\begin{center}
\begin{tabular}{c w{c}{7em} w{c}{7em}}
\toprule
Individu 2 & \multicolumn{2}{c}{Individu 1} \\
\cmidrule(lr){2-3}
& Colombe & Faucon \\
\midrule
Colombe & \(\pair[\Big]{\dfrac{g}{2},\dfrac{g}{2}}\) & \(\pair{g,0}\) \\
\addlinespace
Faucon & \(\pair{0,g}\) & \(\pair[\Big]{\dfrac{g-c}{2},\dfrac{g-c}{2}}\) \\
\bottomrule
\end{tabular}
\end{center}
\end{document}
答案2
像这样?
\makegapedcells
一种方法是使用包中定义的指令makecell
,在单元格内容上方/下方添加垂直空间:
\documentclass[12pt,letterpaper,french]{extarticle}
\usepackage[margin=.75in]{geometry}
\renewcommand{\l}{\left}
\renewcommand{\r}{\right}
\renewcommand{\d}{\displaystyle}
\newcommand{\virg}{\:,\:}
\renewcommand{\arraystretch}{2}
\usepackage{makecell, multirow}
\begin{document}
\begin{center}
\setcellgapes{5pt}
\makegapedcells
\begin{tabular}{cc|c|c|}
\cline{3-4}
& & \multicolumn{2}{c|}{Individu 1} \\ \cline{3-4}
& & Colombe & Faucun \\ \hline
\multicolumn{1}{|c|}{\multirow{2}{*}{Individu 2}} & Colombe & \(\d\l(\frac{g}{2} \virg \frac{g}{2}\r)\) & \((g \virg 0)\) \\ \cline{2-4}
\multicolumn{1}{|c|}{} & Faucon & \((0 \virg g)\) & \(\d\l(\frac{g-c}{2} \virg \frac{g-c}{2}\r)\) \\ \hline
\end{tabular}
\end{center}
\end{document}
附录: 考虑到@Mico 的评论,我对上述解决方案做了以下更改:
- 使用
amsmath
命令包\dfrac
,用它替换您\displaystyle
在分数中使用的定义。 - 删除 、 的定义
\l
,\r
最好写成\left
和right
。 - 为了使第三行和第四行的高度相等,将
\vphantom{-}
添加到第三行的分数中。有了它,两行的分数高度就变得相等了。
新 MWE:
\documentclass[12pt,letterpaper,french]{extarticle}
\usepackage[margin=.75in]{geometry}
\usepackage{amsmath}
\newcommand{\virg}{\:,\:}
\usepackage{makecell, multirow}
\begin{document}
\begin{center}
\setcellgapes{5pt}
\makegapedcells
\begin{tabular}{cc|c|c|}
\cline{3-4}
& & \multicolumn{2}{c|}{Individu 1} \\ \cline{3-4}
& & Colombe & Faucun \\ \hline
\multicolumn{1}{|c|}{\multirow{4}{*}{Individu 2}}
& Colombe & \(\left(\dfrac{g}{2}\virg\dfrac{g\vphantom{-}}{2}\right)\)
& \((g\virg0)\) \\ \cline{2-4}
\multicolumn{1}{|c|}{}
& Faucon & \((0\ ,\ g)\)
& \(\left(\dfrac{g-c}{2}\virg\dfrac{g-c}{2}\right)\) \\ \hline
\end{tabular}
\end{center}
\end{document}
答案3
我认为解决这个问题的最佳工具是cellspace
确保最小在以字母为前缀的说明符的列中单元格顶部和底部的垂直间距S
(或者C
如果您加载siunitx
):
\documentclass[12pt,letterpaper,french]{extarticle}
\usepackage[margin=.75in]{geometry}
\usepackage{amsmath}
\usepackage{cellspace}
\setlength{\cellspacetoplimit}{5pt}
\setlength{\cellspacebottomlimit}{5pt}
\renewcommand{\l}{\left}
\renewcommand{\r}{\right}
\renewcommand{\d}{\displaystyle}
\newcommand{\virg}{\:,\:}
\renewcommand{\arraystretch}{2}
\usepackage{multirow}
\begin{document}
\begin{center}
\begin{tabular}{cc|Sc|Sc|}
\cline{3-4}
& & \multicolumn{2}{c|}{Individu 1} \\ \cline{3-4}
& & Colombe & Faucun \\ \hline
\multicolumn{1}{|c|}{\multirow{2}{*}{Individu 2}} & Colombe & \(\Bigl(\dfrac{g}{2} \virg \dfrac{g}{2}\Bigr)\) & \((g \virg 0)\) \\ \cline{2-4}
\multicolumn{1}{|c|}{} & Faucon & \((0 \virg g)\) & \(\Bigl(\dfrac{g-c}{2} \virg \dfrac{g-c}{2}\Bigr)\) \\ \hline
\end{tabular}
\end{center}
\end{document}
答案4
如果我正确理解了您的要求,tabular
下面的第一个解决方案应该可行,因为所有四列的宽度完全相同,并且所有四行的高度也相同。但是,我认为tabular
下面的第二个解决方案看起来(甚至)更好。
\documentclass[12pt,letterpaper,french]{extarticle}
\usepackage[margin=.75in]{geometry}
\usepackage{multirow,array,babel,amsmath}
\newcommand\myfrac{\Bigl( \frac{g-c}{2}, \frac{g-c}{2} \Bigr)}
\newlength\mylen
\settowidth\mylen{$\displaystyle\myfrac$}
\newcolumntype{C}{>{$\displaystyle}w{c}{\mylen}<{$}}
\newcommand\tallstrut{\vphantom{\biggl|}} % typographic struts
\newcommand\shortstrut{\smash[b]{\vphantom{\Bigl|}}}
\begin{document}
\begin{table}
\centering
\begin{tabular}{|w{c}{\mylen}|w{c}{\mylen}|C|C|}
\cline{3-4}
\multicolumn{1}{c}{} & & \multicolumn{2}{c|}{Individu 1$\tallstrut$} \\
\cline{3-4}
\multicolumn{1}{c}{} & & $Colombe$\tallstrut & $Faucon$\tallstrut \\
\hline
\multirow{3}{*}{Individu 2}
& Colombe & \Bigl( \frac{g}{2}, \frac{g}{2} \Bigr)\tallstrut & (g,0) \\
\cline{2-4}
& Faucon & (0,g)\tallstrut & \myfrac \\
\hline
\end{tabular}
\bigskip\bigskip
\begin{tabular}{|c|c|C|C|}
\cline{3-4}
\multicolumn{1}{c}{} & & \multicolumn{2}{c|}{Individu 1$\shortstrut$} \\
\cline{3-4}
\multicolumn{1}{c}{} & & $Colombe$\shortstrut & $Faucon$ \\
\hline
\multirow{3}{*}{Individu 2}
& Colombe & \Bigl( \frac{g}{2}, \frac{g}{2} \Bigr)\tallstrut & (g,0) \\
\cline{2-4}
& Faucon & (0,g)\tallstrut & \myfrac \\
\hline
\end{tabular}
\end{table}
\end{document}