我怎样才能使长章节标题一直换行到边缘?

我怎样才能使长章节标题一直换行到边缘?

LaTeX 默认缩进章节标题,以便文本的左边缘对齐,如下所示:文本缩进并左对齐

我想让它一直换行到左边距,如下所示:

文本环绕到边距

我该怎么做?我想到了这个titlesec包,但它似乎没有提供实现它的方法。(是的,我知道这种格式很难看,但我想知道怎么做。)

我目前拥有的最小工作示例:

\documentclass{article}

\begin{document}

\section{Lorem ipsum dolor sit amet, consectetur adipiscing elit.}

Lorem ipsum dolor sit amet.

\end{document}

答案1

titleformat通常titlesec是格式化部分的方式(链接到文档)。根据您的情况,更改默认形状[hang][block]。可以通过在同一文档中定义来调整额外的间距\titlespacing*。还有一些默认格式和更花哨格式的示例定义,因此您可能也想看看这些。

\documentclass{article}
\usepackage{titlesec}

\titleformat{\section}[block]
  {\normalfont\Large\bfseries}{\thesection}{1em}{}


\begin{document}
\section{Lorem ipsum dolor sit amet, consectetur adipiscing elit.}

Lorem ipsum dolor sit amet.
\end{document}

在此处输入图片描述

答案2

KOMA-Script 类提供了自己的接口来配置标题。若要不使用悬挂标题,只需\@hangfrom从默认定义中删除\sectionlinesformat(如用户手册所示):

\documentclass[emulatestandardclasses]{scrartcl}

\renewcommand*{\sectionlinesformat}[4]{\hskip#2#3#4}

\begin{document}

\section{Lorem ipsum dolor sit amet, consectetur adipiscing elit.}

Lorem ipsum dolor sit amet.

\end{document}

在此处输入图片描述

在示例中,我还使用了选项emulatestandardclasses使 KOMA-Script 类更类似于标准类。

如果您想区分不同的级别,您可以使用第一个参数:如果您还想对标题进行对齐(和连字符),您可以重新定义\raggedsection

\documentclass[emulatestandardclasses]{scrartcl}

\makeatletter
\renewcommand*{\sectionlinesformat}[4]{%
  \Ifstr{#1}{section}{\hskip#2#3#4}{\@hangfrom{\hskip#2#3}#4}%
}
\makeatother
\renewcommand\raggedsection{\noindent}

\begin{document}

\section{Lorem ipsum dolor sit amet, consectetur adipiscing elit esse est.}

\subsection{Lorem ipsum dolor sit amet, consectetur adipiscing elit.}
Lorem ipsum dolor sit amet.

\end{document}

在此处输入图片描述

对于级别\part和,\chapter有不同的命令\partlineswithprefixformat\chapterlinesformat\chapterlineswithprefixformat。有关更多信息,请参阅用户手册。

答案3

要在课堂上做同样的事情memoir,请使用\sethangfrom{}以下命令:

\documentclass{memoir}

\setsecnumdepth{subsection}
\sethangfrom{\noindent #1}

\begin{document}

\chapter{Lorem ipsum dolor sit amet}
\section{Lorem ipsum dolor sit amet, consectetur adipiscing elit.}
Lorem ipsum dolor sit amet.
\subsection{Lorem ipsum dolor sit amet, consectetur adipiscing elit.}
Lorem ipsum dolor sit amet.

\end{document}

请注意,此宏将影响全部低级分段命令。

输出: 所有章节标题都是块文本。

如果您只想更改一个节级别(例如,子节但不更改节),请使用宏\setNhook{},其中N指的是节命令的简称。以下是要使用的命令列表:

截面类型 简称 命令
部分 \setsechook{\sethangfrom{\noindent ##1}}
小节 子秒 \setsubsechook{\sethangfrom{\noindent ##1}}
小节 子子安全 \setsubsubsechook{\sethangfrom{\noindent ##1}}
帕拉 段落 \setparahook{\sethangfrom{\noindent ##1}}
子段落 分段 \setsubparahook{\sethangfrom{\noindent ##1}}

请注意,参数前面必须有两个磅号 (##),而不是一个。

以下代码将子节格式化为块文本,但为节创建默认的悬挂缩进:

\documentclass{memoir}

\setsecnumdepth{subsection}
\setsubsechook{\sethangfrom{\noindent ##1}}

\begin{document}

\chapter{Lorem ipsum dolor sit amet}
\section{Lorem ipsum dolor sit amet, consectetur adipiscing elit.}
Lorem ipsum dolor sit amet.
\subsection{Lorem ipsum dolor sit amet, consectetur adipiscing elit.}
Lorem ipsum dolor sit amet.

\end{document}

输出: 仅小节是块文本。

相关内容