
Я знаю, что это может показаться глупым вопросом, но я новичок в LaTeX.
\begin{table}[H]
\centering
\begin{tabular*}{\textwidth}{|c|}
\hline
\begin{tabular}[c]{@{}l@{}}
\textbf{\textbf{Description sommaire}}:
\end{tabular}
\\ \hline
\end{tabular*}
\end{table}
Я пытаюсь втиснуть таблицу в ширину страницы. Я использовал {tabular*}
это, и это сработало. Но теперь у меня проблема с границами. Левая граница отображается нормально, а вот правая отображается неправильно.
В моей таблице только один столбец, и я хочу, чтобы правая граница была на правом конце таблицы. Как это сделать?
решение1
tabular*
имеет специальный синтаксис, который необходимо соблюдать, чтобы воспользоваться его возможностью расширить таблицу на всю ширину текста. Вот требуемый синтаксис:
\begin{table}[htbp]
\centering
\begin{tabular*}{\textwidth}{|c|@{\extracolsep{\fill}}c|}
\hline
\textbf{\textbf{Description sommaire}}: & \\ \hline
\end{tabular*}
\end{table}
В противном случае просто используйте более распространенную tabularx
среду (которую я рекомендую):
\begin{table}[htbp]
\centering
\begin{tabularx}{\textwidth}{|c|X|}
\hline
\textbf{\textbf{Description sommaire}}: & \\ \hline
\end{tabularx}
\end{table}
это дает тот же результат, плюс перенос текста в качестве бонуса.
решение2
Вы пытаетесь создать заголовок, похожий на рамку для раздела?
Потому что тогда сделать float (a table
) — худшая идея из возможных. Это может сместить заголовок куда угодно. Хотя с помощью [H]
опции вы делаете так, чтобы float не плавал, все равно table
окружение совершенно не нужно. Может быть, вы используете его, чтобы избежать отступов таблицы и добавить вертикальные пробелы, но это можно решить лучше без float (соответственно, с помощью \noindent
и некоторой команды вертикального интервала как \bigskip
, или, может быть, установить \parindent
0pt и \parskip
еще немного).
Вложенные табличные элементы также не имеют смысла. Достаточно одного (простого) табличного элемента или рамочного блока ( \fbox{}
), который может занимать ширину строки за вычетом пространства, используемого рамочным блоком, как \makebox
, \parbox
или окружение мини-страницы, может быть в переопределении раздела или, в качестве альтернативы, использовать очень настраиваемый пакет боксов как mdframed
или tcolorbox
, или просто написать несколько \vrules и \hrules вокруг, не создавая никаких блоков.
В примере показаны 5 из множества альтернатив. Используйте ту, которая вас устраивает.
\documentclass{article}
% Padding of \fbox{}
\setlength\fboxsep{.5em}
% Some dummy text between solutions, just to see the layout
\def\loreipsum{Lorem ipsum dolor sit amet, consectetur adipiscing
elit. Fusce elit lectus, dapibus eget pellentesque eu, ultricies
vel turpis. Cras quis convallis nibh.}
% for solution 2 only
\makeatletter
\newcommand\fsection{\@startsection{section}{1}{\z@}%
{1em}{1em}{\bfseries\framedbox}}
\makeatother
\newcommand*\framedbox[1]{\noindent%
\fbox{\parbox{\dimexpr\columnwidth-2\fboxsep}{#1}}}
% for solution 5 only
\usepackage{mdframed}
\begin{document}
\loreipsum
% solution 1
\bigskip\hrule
\noindent
\vrule height 12pt depth 6pt width 0.4pt
{ \bfseries Description sommaire}\hfill\vrule
\hrule\bigskip
\loreipsum
% solution 2
\fsection*{Description sommaire}
\loreipsum
% solution 3
\bigskip
\noindent\fbox{\makebox[\dimexpr\linewidth-2\fboxsep-2\fboxrule][l]
{\textbf{Description sommaire}}}\bigskip
\loreipsum
% solution 4
\bigskip
{\renewcommand\arraystretch{1.4}\setlength\tabcolsep{.5em}
\noindent\begin{tabular}%
{|p{\dimexpr\linewidth-2\tabcolsep-2\arrayrulewidth}|}\hline
\textbf{Description sommaire} \\\hline
\end{tabular}}
\bigskip
\loreipsum
% solution 5
\begin{mdframed}
\textbf{Description sommaire}:
\end{mdframed}
\loreipsum
\end{document}