章节缩进

章节缩进

我希望每个部分、小节等的缩进方式与代码通常嵌套的方式类似:

int 函数() {
     如果(x){
        做这些事  
     }
     // 更多代码在这里
}

我并不是想格式化代码,我只是真的很喜欢用缩进来直观地了解一个部分在哪里结束。实现这一点的最佳方法是什么?我试过使用,adjustwidth但它不支持嵌套的子部分。我想远离嵌套的 \items,因为我想要所有伴随分段的支持(目录等)。

答案1

这是一个非常快捷的解决方案,但有许多限制(特别是当您开始考虑列表和不同的对齐模式(居中等)时)。但这可能足以让您开始使用。诀窍是调整\leftskip,即在段落的每一行之前插入的粘合。

在所附的代码中,\setindents如果缩进被其他东西弄乱了,您可以随时根据需要重新执行该命令。

\documentclass[a4paper]{article}
\usepackage{lipsum}

\newlength\secindent
\newlength\origleftskip
\setlength\secindent{4em}
\setlength\origleftskip{\leftskip}

\def\setindents#1{%
  \leftskip=\dimexpr\origleftskip+#1\secindent\relax
}

\def\mysec{\setindents{0}\section}
\def\mysubsec{\setindents{1}\subsection}
\def\mysubsubsec{\setindents{2}\subsubsection}

\begin{document}

\mysec{foo}
\lipsum[2-3]

\mysubsec{bar}
\lipsum[4-5]

\mysec{baz}
\lipsum[6-7]

\mysubsubsec{blah}
\lipsum[8-9]

\end{document}

如果有必要,你可以写类似

\let\origsection\section
\def\section{\setindents{0}\origsection}

等等,以获得您想要的行为,而无需更改当前文本。


一种完全不同的方法可能是类似于framed包的方法,但是你会失去使用浮点数的能力(并且嵌套可能很棘手)。

没有真正的原因导致adjustwidthfromchangepage无法嵌套。我已将其添加到问题追踪器

这些事情在常规 LaTeX 中都相当棘手。(我希望 LaTeX3 中的新样板能让这一切变得简单。)

相关内容