如何删除段落标题中的最后一个句号(“.”)?

如何删除段落标题中的最后一个句号(“.”)?

当我运行以下代码时,我得到段落标题“Some title。”。如何让编译器隐藏段落标题中的句点(“。”)?

\documentclass[3p,12pt,authoryear]{elsarticle}

\begin{document} 

\paragraph{Some title}

\end{document}

答案1

中的定义elsarticle写得很糟糕,因为它无条件地添加了一个句号。

您可以借助amsthm\@addpunct功能进行更改,只有在标题后没有标点符号时才添加句号。

\documentclass[3p,12pt,authoryear]{elsarticle}

\usepackage{amsthm}% for \@addpunct
\makeatletter
\def\els@aparagraph[#1]#2{\elsparagraph[#1]{#2\@addpunct{.}}}
\def\els@bparagraph#1{\elsparagraph*{#1\@addpunct{.}}}
\makeatother

\begin{document}

\paragraph{A title without period}

\paragraph{A title with period.}

\paragraph{Will it work with a question mark?}

\end{document}

amsthm使用加载应该没有问题elsarticle,因为该类支持 AMS 包。

请注意,按照样式的要求,第一个段落标题中也添加了句号,但第二个标题后面没有额外的句号,问号后面也没有句号。

在此处输入图片描述

答案2

编辑由于我回答时问题中没有问号“问题”,因此我无法解决这个问题。将此问题附加到我的解决方案中是没有意义的,因为已经有另一个答案了。

该点明确设置\els@aparagraph#2.

\def\els@aparagraph[#1]#2{\elsparagraph[#1]{#2.}}

对于 也有类似的定义\els@bparagraph

这是工作代码——但发布者可能会拒绝它。此外,@DavidCarlisle 表示:该命令\paragraph在错误的分段命令层次结构中使用。

\documentclass[3p,12pt,authoryear]{elsarticle}


\makeatletter
\def\els@aparagraph[#1]#2{\elsparagraph[#1]{#2}}
\def\els@bparagraph#1{\elsparagraph*{#1}}
\makeatother

\begin{document} 

\paragraph{Some title}

\end{document}

答案3

对于出版商抱怨你确实重新定义了内部命令的情况,这里有一个附加解决方案:

\documentclass{elsarticle}
\newcommand\eatpunct[1]{}
\begin{document}
\paragraph[Bla?]{Bla?\eatpunct} Yes!
\end{document}

在此处输入图片描述

相关内容