Как изменить стиль подписи к длинной таблице?

Как изменить стиль подписи к длинной таблице?

У меня есть

\documentclass{article}

\usepackage{longtable}

\begin{document}

\begin{longtable}{|c|c|} 
\caption{A caption.}\label{tab1} \\ \hline
1 & 2 \\ \hline
3 & 4 \\ \hline
\end{longtable}

\end{document}

Как мне сделать так, чтобы подпись выглядела так:

{\bfseries Table 1.} {\itshape A caption.}

(то есть «Таблица 1» выделена жирным шрифтом, а «Подпись» — курсивом)?

А еще лучше, смогу ли я встать {\bfseries Table 1}на одну линию, {\itshape A caption.}на следующую линию, и обе линии будут по центру?

(Отредактировано для замены устаревших команд.)

решение1

captionДля этого можно использовать package. Затем используйте captionsetup, чтобы отформатировать подпись по своему вкусу.

\documentclass{article}

\usepackage{longtable}
\usepackage{caption}

\begin{document}

\captionsetup[longtable]{labelfont=bf,textfont=it,labelsep=newline}

\begin{longtable}{|c|c|} 
\caption{A caption.}\label{tab1} \\ \hline
1 & 2 \\ \hline
3 & 4 \\ \hline
\end{longtable}

\end{document}

решение2

Согласно запросу, который вы оставили в ответе @Kiraa, вот решение, которое изменяет макрос \LT@makecaptionпакета longtableнапрямую. Решение использует \patchcmdмакрос пакета etoolboxдля выполнения требуемой операции над \LT@makecaptionмакросом.

введите описание изображения здесь

\documentclass{article}
\usepackage{longtable}

\usepackage{etoolbox}
\makeatletter
\patchcmd{\LT@makecaption}%
   {\@tempboxa{#1{#2: }#3}}
   {\@tempboxa{#1{\textbf{#2. }}\itshape #3}}{}{}
\patchcmd{\LT@makecaption}%
   {#1{#2: }#3}
   {#1\textbf{#2. }{\itshape #3}}{}{}
\makeatother

\begin{document}
\begin{longtable}{|c|c|} 
\caption{A caption.} \label{tab1}  \\
\hline
1 & 2 \\ \hline
3 & 4 \\ \hline
\end{longtable}
\end{document}

Чтобы сделать перенос строки после Table <x>части, можно использовать следующий код (который нужно вставить в преамбулу вместо кода исправления, показанного выше):

\usepackage{etoolbox,ragged2e}
\makeatletter
\patchcmd{\LT@makecaption}%
   {\@tempboxa{#1{#2: }#3}}
   {\@tempboxa{#1{\textbf{#2.\ }}\itshape #3}}{}{}
\patchcmd{\LT@makecaption}%
   {#1{#2: }#3}
   {\Centering #1\textbf{#2.}\par{\itshape #3}}{}{}
\patchcmd{\LT@makecaption}%
   {\hbox to\hsize{\hfil\box\@tempboxa\hfil}}
   {\Centering #1\textbf{#2.}\par{\itshape #3}}{}{}
\makeatother

Связанный контент