如何更改长表标题的样式?

如何更改长表标题的样式?

我有

\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。”以粗体表示,“标题 A。”以斜体表示)?

甚至更好的是,我可以将其{\bfseries Table 1}放在一行,{\itshape A caption.}放在下一行,并使其两行都居中吗?

(编辑以替换弃用的命令。)

答案1

您可以使用caption包来实现这一点。然后使用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

相关内容