Como altero o estilo de uma legenda longa?

Como altero o estilo de uma legenda longa?

Eu tenho

\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}

Como posso fazer com que a legenda pareça

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

(então, "Tabela 1." em negrito e "Uma legenda." em itálico)?

Melhor ainda, eu poderia entrar {\bfseries Table 1}em uma linha, {\itshape A caption.}na próxima linha e ambas as linhas centralizadas?

(Editado para substituir comandos obsoletos.)

Responder1

Você pode usar captiono pacote para fazer isso. Em seguida, use captionsetuppara formatar a legenda de acordo com sua preferência.

\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}

Responder2

De acordo com a consulta que você deixou na resposta do @Kiraa, aqui está uma solução que modifica diretamente a macro \LT@makecaptiondo pacote. longtableA solução utiliza a \patchcmdmacro da etoolboxembalagem para realizar a cirurgia necessária na \LT@makecaptionmacro.

insira a descrição da imagem aqui

\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}

Para obter uma quebra de linha após a Table <x>parte, você pode usar o seguinte código (a ser inserido no preâmbulo no lugar do código de patch mostrado acima):

\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

informação relacionada