我正在尝试创建一个自定义标题样式,该样式居中、加粗、较大并且前后有 0.2 厘米的垂直空间。我想保留正常的部分标题。以下是我使用 的尝试\newcommand
。
我的问题:
- 如何在标题样式后添加垂直空间?
- 我怎样才能避免后续文本也被格式化?
非常感谢您的帮助!
\documentclass{article}
\newcommand\progtitel{\vspace{0.2cm}\centering\normalfont\Large\bfseries}
\begin{document}
\section{My section}
Normal text normal text normal text normal text normal text
\progtitel{Custom Title}
Normal text normal text normal text normal text normal text
\end{document}
答案1
有一个起点。你缺少一个\vspace
和命令的分组,现在它只需要一个参数。
\documentclass{article}
\newcommand\progtitel[1]{{\vspace{0.2cm}\begin{center}\Large\bfseries #1 \end{center}\vspace{0.2cm}}}
\begin{document}
\section{My section}
Normal text normal text normal text normal text normal text
\progtitel{Custom Title}
Normal text normal text normal text normal text normal text
\end{document}
答案2
棘手之处在于使它独立于\parskip
周围有空行或没有空行的情况下行为相同。
\documentclass{article}
\makeatletter
\newcommand{\progtitel}[1]% #1 = title
{\vspace{\dimexpr 0.2cm-\parskip}\hrule height0pt
\noindent\parbox{\columnwidth}{\centering\normalfont\Large\bfseries #1}%
\vspace{\dimexpr 0.2cm-\parskip}\hrule height0pt
\@afterheading}% no indentation for first paragraph
\makeatletter
%\parskip=\baselineskip
\begin{document}
\section{My section}
Normal text normal text normal text normal text normal text
\progtitel{Custom Title}
Normal text normal text normal text normal text normal text
\end{document}
该解决方案使用trivlist
代替\hrule
,但最终结果更复杂,而不是更简单。
\documentclass{article}
\makeatletter
\newcommand{\progtitel}[1]% #1 = title
{\bgroup
\topsep=\dimexpr 0.2cm-\parskip\relax
\partopsep=0pt
\trivlist
\item\parbox{\columnwidth}{\centering\normalfont\Large\bfseries #1}%
\endtrivlist
\egroup\@afterheading}% no indentation for first paragraph
\makeatletter
%\parskip=\baselineskip
\begin{document}
\section{My section}
Normal text normal text normal text normal text normal text
\progtitel{Custom Title}
Normal text normal text normal text normal text normal text
\end{document}