基本上,我需要在小节后缩进段落,如下所示:
基本上,我需要缩进小节后的所有内容。我已经为小节的标题设置了正确的格式,如下所示:
\documentclass[12pt]{report}
\usepackage{titlesec}
\titleformat{\subsection}[block]{\bfseries\itshape\normalsize\hspace{2em}}{\thesubsection}{1em}{}
\begin{document}
\end{document}
我在这里找到了一个解决方案:缩进整个段落
然而,问题是为了应用该解决方案,我需要在每个小节之前和之后手动添加代码。
另一个解决方案是:缩进每个 \subsubsection 元素
建议使用新环境:
\documentclass{article}
\usepackage{changepage}
\usepackage{lipsum}
\newenvironment{subs}
{\adjustwidth{3em}{0pt}}
{\endadjustwidth}
\begin{document}
\subsection{A subsection}
\lipsum[2]
\begin{subs}
\subsubsection{One}
\lipsum[3]
\subsubsection{Two}
\lipsum[4]
\end{subs}
\end{document}
但是,这有同样的问题:我需要手动添加\begin...\end
每个子部分的环境。有更好的解决方案吗?
答案1
与你的第一次一样引用答案并且使用etoolbox
,patchcmd
你可以假设它\leftskip
没有用于其他任何事情,魔法是:
\patchcmd{\subsection}{-3.25ex\@plus -1ex \@minus -.2ex}{3.25ex\@plus -1ex \@minus -.2ex\setlength{\leftskip}{0cm}}{}{}
\patchcmd{\subsection}{1.5ex \@plus .2ex}{1.5ex \@plus .2ex\setlength{\leftskip}{2cm}}{}{}
\patchcmd{\section}{-3.5ex \@plus -1ex \@minus -.2ex}{-3.5ex \@plus -1ex \@minus -.2ex\setlength{\leftskip}{0cm}}{}{}
\section
它在和开始时关闭移位\subsection
,并在进入 时将其打开\subsection
。这是一个 MWE,我在其中更改了页面大小以适应两页上的示例:
\documentclass[12pt,a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{etoolbox}
\usepackage{lipsum}
\usepackage[margin=25mm]{geometry}
\makeatletter
\patchcmd{\section}{-3.5ex \@plus -1ex \@minus -.2ex}{-3.5ex \@plus -1ex \@minus -.2ex\setlength{\leftskip}{0cm}}{}{}
\patchcmd{\subsection}{-3.25ex\@plus -1ex \@minus -.2ex}{3.25ex\@plus -1ex \@minus -.2ex\setlength{\leftskip}{0cm}}{}{}
\patchcmd{\subsection}{1.5ex \@plus .2ex}{1.5ex \@plus .2ex\setlength{\leftskip}{2cm}}{}{}
\makeatother
\begin{document}
\setcounter{chapter}{3}
\section{Section Foo}
\lipsum[1]
\subsection{A subsection}\label{s:first}
\lipsum[2]
\subsection{Another subsection}
\lipsum[3-5]
\section{Section Bar}
\textbf{As seen in section \ref{s:first}}
\lipsum[5]
\subsection{Test again}
\lipsum[5]
\end{document}
注1:这也适用于hyperref
,只要您在加载之前制作补丁即可。
笔记2:这种方法很可能不是兼容titlesec
。它假设分段命令(下面\chapter
)基于标准\@startsection
命令。这不是问题,因为您也可以以类似的方式修补标题的格式以获得斜体
注3:要确定第二个参数的值\patchcmd
(取决于类和 ptsize),您必须查看 sectionng 命令的内容。为此,我使用自定义命令:
\newcommand{\mymeaning}[1]{{\small\noindent{\bfseries \string #1} = \meaning #1\par\medskip}}
基于标准命令\meaning
并进行一些修饰,并\mymeaning{\subsection}
在文档中执行例如。