我希望每个部分、小节等的缩进方式与代码通常嵌套的方式类似:
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
包的方法,但是你会失去使用浮点数的能力(并且嵌套可能很棘手)。
没有真正的原因导致adjustwidth
fromchangepage
无法嵌套。我已将其添加到问题追踪器。
这些事情在常规 LaTeX 中都相当棘手。(我希望 LaTeX3 中的新样板能让这一切变得简单。)