我需要标题的第一句以 \large 粗体字体显示在自己的行上。我还需要相同的文档来轻松生成标准标题(所有字体相同,无换行符)。我已经实现了一个类文件,它使用一个选项直接修改 \@caption 并添加必要的格式;但是,我的代码不太好用。此示例正确地将标题的第一句以正确的字体放在自己的行上,但文本未左对齐。
\documentclass{article}
\usepackage{xstring}
\usepackage{etoolbox}
\usepackage{caption}
\captionsetup{labelfont=bf,labelsep=newline,tableposition=top}
\makeatletter
\newcommand\formatlabel[1]{%
\noexpandarg
\StrBefore{#1}{.}[\firstcaption] %
\StrBehind{#1}{.}[\secondcaption] %
\textbf{\large\firstcaption}
\\
\secondcaption}
\patchcmd{\@caption}{#3}{\formatlabel{#3}}
\makeatother
\begin{document}
\begin{table}
\centering
\caption{A Simple table. It has a caption with multiple sentences. It has a caption with multiple sentences. It has a caption with multiple sentences.}
\begin{tabular}{ l c r }
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9 \\
\end{tabular}
\end{table}
\end{document}
答案1
缩进由注释前的两个空格给出
\StrBefore{#1}{.}[\firstcaption] %
和
\StrBehind{#1}{.}[\secondcaption] %
删除它们可以解决问题。您还可以添加条件以确保.
标题中有句号。
\makeatletter
\newcommand\formatlabel[1]{%
\noexpandarg
\IfSubStr{#1}{.}{%
\StrBefore{#1}{.}[\firstcaption]%
\StrBehind{#1}{.}[\secondcaption]%
\textbf{\large\firstcaption.}\\\secondcaption}{%
\textbf{\large #1}}%
}
\patchcmd{\@caption}{#3}{\formatlabel{#3}}
\makeatother