我有
\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