Всем привет,
У меня возникла проблема: некоторые таблицы, например та, которую я собираюсь здесь процитировать, выходят за пределы textwidth, даже несмотря на то, что я использую параметры \textwidth с tabulary.
Таблица имеет следующий код:
\usepackage{tabulary}
\usepackage{tabularx}
\begin{table}[htbp]
\centering
\caption{Categorization of cantons}
\scriptsize
\begin{tabulary}{\textwidth}{|L|L|L|L|L|}
\hline
\multicolumn{1}{|c|}{\textbf{Central Switzerland (C)}} & \multicolumn{1}{c|}{\textbf{High Alps (HA)}} & \multicolumn{1}{c|}{\textbf{Northeast Switzerland (NE)}} & \multicolumn{1}{c|}{\textbf{Northwest Switzerland (NW)}} & \multicolumn{1}{c|}{\textbf{West Switzerland (W)}} \bigstrut\\
\hline
Lucerne (LU) & Grisons (GR) & Glarus (GL) & Zurich (ZH) & Fribourg (FR) \bigstrut[t]\\
Central Switzerland (C) & Tessin (TI) & Schaffhausen (SH) & Solothurn (SO) & Vaud (VD) \\
& Valais (VS) & Appenzell (AP) & Basel-Stadt (BS) & Neuchâtel (NE) \\
& & St. Gallen (SG) & Basel-Land (BL) & Geneva (GE) \\
& & Thurgau (TG) & Aargau (AG) & \bigstrut[b]\\
\hline
\end{tabulary}%
\vspace{5pt}
\captionsetup{font={scriptsize}}
\caption*{Source: Eidgenössischer Turnverein (1869), p. 67-69, own illustration}
\label{tab:addlabel}%
\end{table}%
Вот изображение таблицы:
Как сделать так, чтобы ширина таблицы автоматически соответствовала ширине текста? Я не против, если первую строку (например, Центральная Швейцария, Высокие Альпы и т. д.) придется сжать до двух строк, если это позволит таблице вписаться в ширину текста. Есть ли команда, которая справится с этим и которую я смогу легко использовать для будущих таблиц?
Большое спасибо за вашу помощь!
решение1
Пожалуйста, всегда публикуйте полные документы, показывающие все используемые пакеты. В вашем коде было несколько команд, не определенных пакетами, которые, как я предполагал, не определены, поэтому я удалил их здесь. Основная проблема была в том, что вы переопределили спецификатор, L
который c
не допускает разрыва строк, поэтому все записи были слишком широкими.
\documentclass[a4paper]{article}
\usepackage{tabulary}
\begin{document}
\begin{table}[htbp]
\centering
\caption{Categorization of cantons}
\scriptsize
\begin{tabulary}{\textwidth}{|L|L|L|L|L|}
\hline
\centering\textbf{Central Switzerland (C)} &
\centering\textbf{High Alps (HA)} &
\centering\textbf{Northeast Switzerland (NE)} &
\centering\textbf{Northwest Switzerland (NW)} &
\centering\textbf{West Switzerland (W)}\tabularnewline
\hline
Lucerne (LU) & Grisons (GR) & Glarus (GL) & Zurich (ZH) & Fribourg (FR) \\
Central Switzerland (C) & Tessin (TI) & Schaffhausen (SH) & Solothurn (SO) & Vaud (VD) \\
& Valais (VS) & Appenzell (AP) & Basel-Stadt (BS) & Neuchâtel (NE) \\
& & St. Gallen (SG) & Basel-Land (BL) & Geneva (GE) \\
& & Thurgau (TG) & Aargau (AG) & \\
\hline
\end{tabulary}%
\vspace{5pt}
% \captionsetup{font={scriptsize}}
\caption{Source: Eidgenössischer Turnverein (1869), p. 67-69, own illustration}
\label{tab:addlabel}%
\end{table}%
\end{document}
решение2
Если вы хотите, чтобы все столбцы были одинаковой ширины и вы хотели использовать максимальную ширину текста, вам следует сделать tabularx
следующее:
% arara: pdflatex
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[english]{babel}
\usepackage{caption}
\usepackage{booktabs, tabularx, threeparttable}
\usepackage{ragged2e, array}
\newcolumntype{Z}{>{\raggedright\arraybackslash}X}
\usepackage{microtype}
\begin{document}
\begin{table}[htbp]
\centering
\begin{threeparttable}
\caption{Categorization of cantons}
\begin{tabularx}{\textwidth}{*{5}{Z}}
\toprule
\textbf{Central Switzerland~(C)} &\textbf{High Alps~(HA)} & \textbf{Northeast Switzerland~(NE)} & \textbf{Northwest Switzerland~(NW)} & \textbf{West Switzerland~(W)} \\
\midrule
Lucerne~(LU) & Grisons~(GR) & Glarus~(GL) & Zurich~(ZH) & Fribourg~(FR) \\
Central Switzerland~(C) & Tessin~(TI) & Schaff\-hau\-sen~(SH) & So\-lo\-thurn~(SO) & Vaud~(VD) \\
& Valais (VS) & Appen\-zell~(AP) & Basel-Stadt (BS) & Neu\-châ\-tel~(NE) \\
& & St.~Gal\-len~(SG) & Basel-Land (BL) & Geneva~(GE) \\
& & Thurgau~(TG) & Aargau~(AG) & \\
\bottomrule
\end{tabularx}
\begin{tablenotes}
\item Source: Eidgenössischer Turnverein (1869), p.~67-69, own illustration
\end{tablenotes}
\end{threeparttable}
\label{tab:addlabel}%
\end{table}%
\end{document}