У меня проблема с таблицей, которую я пытаюсь сделать. Вот код, который у меня сейчас есть:
\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
Сделайте себе одолжение инеredefine \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{-}
к дроби в третьих строках прибавляется . С его высотой дроби в нижних строках становятся одинаковой высоты.
Новый МВЭ:
\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}