如何在LaTeX中划分部分标题?

Mne*_*nth 10 formatting latex tex heading

编辑:正如我在第一个答案中所看到的,下划线是错误的.我想要在标题下面有一行,将标题与以下文本分开.

我想用水平线从下面的文本中分隔章节标题.目前我使用以下内容:

\newcommand{\tmpsection}[1]{}
\let\tmpsection=\section
\renewcommand{\section}[1]{\tmpsection{#1}\hrule\nobreak}
Run Code Online (Sandbox Code Playgroud)

但是这会产生一条直线,它离剖面标题太远,接近下面的文字.谁有更好的主意?

Shi*_*rin 7

像这样重写你的命令应该可以解决问题:

\newcommand{\tmpsection}[1]{}
\let\tmpsection=\section
\renewcommand{\section}[1]{\tmpsection{\underline{#1}}}
Run Code Online (Sandbox Code Playgroud)

这将评估为

\section { \underline {#1} }
Run Code Online (Sandbox Code Playgroud)

这反过来产生下划线部分标题:)


Rob*_*man 7

您可以使用sectsty包中\sectionrule命令执行此操作.


Jon*_*han 6

我听说它titlesecsectsty包更强大,所以我只是用它.您可以使用以下方法将水平线放在节标题之前:

\usepackage{titlesec}
\titleformat{\section}{\large\bfseries}{\thesection}{1em}{\hrule}
Run Code Online (Sandbox Code Playgroud)

或者你可以在newcommand的帮助下把它放在后面.请参阅titlesec手册的第4.4节.

  • 我很难解析这个建议,所以对于未来的读者:“在 newcommand 的帮助下”意味着将答案中的“\hrule”替换为“\hruleafter”,其中“\hruleafter”定义为:“\newcommand” {\hruleafter}[1]{#1\hrule}` (5认同)

Rub*_*ben 5

你可以看看 LaTeX\rule命令:

\rule[raise-height]{width}{thickness}
Run Code Online (Sandbox Code Playgroud)

然而,这是一个内联(水平)命令,所以你必须使用一些诡计在正确的位置和大小来得到它(\noindent\textwidth应该有点帮助)。

否则,您可以使用以下纯 TeX

\smallskip
\hrule height 2pt
\smallskip
Run Code Online (Sandbox Code Playgroud)

它并不真正适合 LaTeX 语法,但它的作用就像一个魅力,并且保证跨越整个文本宽度。