
Я хочу настроить длину средней линии (xy см) в первой таблице. Вторая таблица должна быть по умолчанию. Как это можно сделать?
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{@{}ll@{}}
XXXXXXX&\\\midrule\addlinespace[1ex]
\begin{minipage}[t]{5.5cm}
AAAAAAAAAAAAA
\end{minipage}
&
\begin{minipage}[t]{9.5cm}
BBBBBBBBBBBBBBB
\end{minipage}
\end{tabular}
\bigskip
\begin{tabular}{@{}ll@{}}
YYYYYYYYYYYYY&\\\midrule\addlinespace[1ex]
\begin{minipage}[t]{5.5cm}
CCCCCCCCC
\end{minipage}
&
\begin{minipage}[t]{9.5cm}
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
\end{minipage}
\end{tabular}
\end{document}
РЕДАКТИРОВАТЬ:Расширение исходного вопроса! Хотя ответы решают проблему выше, мне не удаётся использовать их для решения следующего: во втором минимальном примере я хочу, чтобы правило во второй таблице имело точно такую же длину, как и в первой таблице (первая таблица — это справочный формат). Если во второй таблице я заменю \midrule
на , \noalign{\noindent\rule{\dimexpr15cm+\tabcolsep\relax}{0.5pt}}
как предложено в ответе @Christian Hupfer (обратите внимание, что \llen
+ \rlen
= 15 см), это почти сработает, но длина линий всё равно не будет полностью одинаковой.
\documentclass{article}
\usepackage{booktabs}
\newlength{\llen}
\newlength{\rlen}
\setlength{\llen}{5.5cm}
\setlength{\rlen}{9.5cm}
\parindent=0cm
\begin{document}
\begin{tabular}{@{}ll@{}}
XXXXXXXXXXXXXXXXXXX &\\\midrule\addlinespace[1ex]
\begin{minipage}[t]{\llen}
AAAAAAAAAAAAAAA\\
\end{minipage}&
\begin{minipage}[t]{\rlen}
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
\end{minipage}
\end{tabular}
\vspace{0.2cm}
\noindent
\begin{tabular}{@{}ll@{}}
XXXXXXXXXXXXXXXXXXX&\\\midrule\addlinespace[1ex]
WWWWWWWWWWWWWWWWWWWWWWWWWWWW
\end{tabular}
\end{document}
решение1
Это то, что вы хотите? Я играл с (lr)
аргументом для \cmidrule
и потребовал (отрицательную, здесь) обрезку справа, рассчитанную по ширине столбца, которая известна благодаря мини-странице. Если бы она не была известна, нам пришлось бы использовать пакет eqparbox
.
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{@{}ll@{}}
XXXXXXX & \\\cmidrule[\lightrulewidth](r{\dimexpr5.5cm+\tabcolsep-7.75cm\relax}){1-1}\addlinespace[1ex]
\begin{minipage}[t]{5.5cm}
AAAAAAAAAAAAA
\end{minipage}
&
\begin{minipage}[t]{9.5cm}
BBBBBBBBBBBBBBB
\end{minipage}
\end{tabular}
\bigskip
\begin{tabular}{@{}ll@{}}
YYYYYYYYYYYYY & \\\midrule\addlinespace[1ex]
\begin{minipage}[t]{5.5cm}
CCCCCCCCC
\end{minipage}
&
\begin{minipage}[t]{9.5cm}
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
\end{minipage}
\end{tabular}
\end{document}
Вот решение второй проблемы: чтобы сократить набор текста, я определяю \fakemidrule
команду, которая делает то, что вам нужно. Ваша ошибка в коде, который вы пробовали, заключается в том, что вы забыли, что пробел между двумя столбцами равен 2
\tabcolsep.
\documentclass{article}
\usepackage{booktabs}
\newlength{\llen}
\newlength{\rlen}
\setlength{\llen}{5.5cm}
\setlength{\rlen}{9.5cm}
\newcommand\fakemidrule{\noalign{\vskip\aboverulesep\noindent\rule{\dimexpr\llen + \rlen+2\tabcolsep\relax}{\lightrulewidth}}}
\parindent=0cm
\begin{document}
\begin{tabular}{@{}ll@{}}
XXXXXXXXXXXXXXXXXXX & \\
\midrule\addlinespace[1ex]
\begin{minipage}[t]{\llen}
AAAAAAAAAAAAAAA\\
\end{minipage} &
\begin{minipage}[t]{\rlen}
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
\end{minipage}
\end{tabular}
\vspace{0.2cm}
\noindent
\begin{tabular}{@{}ll@{}}
XXXXXXXXXXXXXXXXXXX & \\
\fakemidrule
\addlinespace[1ex]
WWWWWWWWWWWWWWWWWWWWWWWWWWWW
\end{tabular}
\end{document}
решение2
Правило произвольной длины можно указать с помощью \rule{length}{width}
, однако оно будет помещено в ячейку таблицы.
Чтобы распределить по ячейкам, используйте \noalign{\noindent\rule{7.75cm}{2pt}}
(измените размеры по желанию) (Спасибо @touhami за подсказку с \noindent
)
\noalign
предотвращает выравнивание в ячейках, все содержимое затем в основном устанавливается так, как будто бы ячеек таблицы не было, оставляя обычный \parindent
отступ. Чтобы избавиться от этого, \noindent
можно использовать (или \parindent
установить в ноль)
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{@{}ll@{}}
XXXXXXX&\\
\noalign{\noindent\rule{7.75cm}{2pt}}\addlinespace[1ex]
\midrule\addlinespace[1ex]
\begin{minipage}[t]{5.5cm}
AAAAAAAAAAAAA
\end{minipage}
&
\begin{minipage}[t]{9.5cm}
BBBBBBBBBBBBBBB
\end{minipage}
\end{tabular}
\bigskip
\begin{tabular}{@{}ll@{}}
YYYYYYYYYYYYY&\\\midrule\addlinespace[1ex]
\begin{minipage}[t]{5.5cm}
CCCCCCCCC
\end{minipage}
&
\begin{minipage}[t]{9.5cm}
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
\end{minipage}
\end{tabular}
\end{document}