
Кажется, что это простая проблема, но я действительно новичок в LaTeX и не могу придумать решение даже с некоторыми QA на этом форуме, которые я нашел. Можете ли вы помочь? Как показано на рисунке, таблица шире текстового столбца и сталкивается с другим столбцом. Я понимаю, что текст в таблице слишком длинный, но есть ли простой способ заставить таблицу быть той же ширины, что и текст, и перенести текст на две строки в одной строке таблицы без использования разных пакетов?
\usepackage[table]{hypcap}
\begin{table}[ht]
\centering
\renewcommand{\arraystretch}{1.8}
\begin{tabular}{c|c|c|l}
Parameter & Value & Units & Description\\
\toprule \midrule
E & 200 & GPa & Young's modulus\\
$f_{c}$ & 30 & MPa & Ultimate compressive strength\\
$\varepsilon_{t0}$ & 805 $\cdot 10^{-4}$ & - & Initial threshold of damage for $\varepsilon_t$\\
\hline
\end{tabular}
\caption{a}
\end{table}
решение1
Без другого пакета я не знаю, как это сделать автоматически (но я добавил недостающий пакет)закладкииз вашего кода, чтобы использовать \toprule
и \midrule
из вашего кода).
Вы можете использовать p{<length>}
спецификацию столбца, чтобы задать ширину для вашего последнего столбца. Вам нужно найти значение длины методом проб и ошибок (в этом коде я увеличил размер с 2 см до тех пор, пока не получупереполненный hboxпредупреждение; в этом конкретном примере я получил предупреждение со значением 2.5cm
, но не со значением 2.49cm
).
Я удалилhypcapпакет, здесь неактуальный, и добавленгубная помададля заполнения страницы текстом.
В этом коде я также явно добавил letterpaper
формат бумаги в класс документа, поскольку значение, используемое для p
столбца типа, зависит от ширины страницы, и по умолчанию для некоторых европейских пользователей это формат, a4paper
когда формат бумаги явно не указан.
\documentclass[10pt,twocolumn]{article}
\usepackage{lipsum}
\usepackage{booktabs}
\begin{document}
\lipsum[1-7]
\begin{table}[ht]
\centering
\renewcommand{\arraystretch}{1.8}
\begin{tabular}{c|c|c|p{2.49cm}}
Parameter & Value & Units & Description\\
\toprule \midrule
E & 200 & GPa & Young's modulus\\
$f_{c}$ & 30 & MPa & Ultimate compressive strength\\
$\varepsilon_{t0}$ & 805 $\cdot 10^{-4}$ & - & Initial threshold of damage for $\varepsilon_t$\\
\hline
\end{tabular}
\caption{a}
\end{table}
\lipsum[8-14]
\end{document}
решение2
- Добро пожаловать в TeX:SE!
- Пожалуйста, в следующий раз вместо фрагмента кода предоставьте MWE (Minimal Working Example). Теперь нам пришлось гадать о классе документа и (по нему) определяемой разметке страницы. Оба влияют на форматирование таблицы
- Для вашей таблицы я бы добавил
tabularray
пакет с библиотеками/пакетамиbooktabs
,siunitx
иragged2e
:
\documentclass[twocolumn]{article}
\usepackage{lipsum}
\usepackage{ragged2e}
\usepackage{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{booktabs, siunitx}
\begin{document}
\lipsum[1]
\begin{table}[ht]
\begin{tblr}{
colsep=3pt,
colspec={@{} c Q[c,si={table-format=3.0}] Q[c,si] X[j, appto=\RaggedRight] @{}},
cell{3-Z}{1} = {mode=math},
cell{1,Z}{2,3} = {guard}
}
\toprule
Parameter & Value & Units & Description\\
\midrule
E & 200 & \unit{\giga\pascal}
& Young's modulus\\
f_{c} & 30 & \unit{\mega\pascal}
& Ultimate compressive strength\\
\varepsilon_{t_0}
& \num{805E-4}
& -- & Initial threshold of damage for $\varepsilon_t$ \\
\bottomrule
\end{tblr}
\caption{a}
\label{tab:?}
\end{table}
\lipsum[2-6]
\end{document}