在尝试回答缩进所有普通文本,我不得不使用包裹titlesec
取消缩进章节标题。有了\let\OldSection\section
,我确信
\def\section#1{\hspace*{-\LeftMargin}\OldSection{#1}}
或者
\def\section#1{\endChangeMargin\OldSection{#1}\ChangeMargin{\LeftMargin}{\RightMargin}}
会导致章节标题的正常放置,但事实并非如此。这是为什么?
此外,在章节标题之前还有一个垂直空格。这在链接问题的解决方案中也可以看到,其中包裹titlesec
被使用。
那么,如何才能调整章节标题的水平间距而不改变垂直间距呢?
代码:
\documentclass{article}
\usepackage{showframe}
\usepackage{lipsum}
\newcommand*{\LeftMargin}{0.5cm}%
\newcommand*{\RightMargin}{0.0cm}%
%% https://tex.stackexchange.com/questions/588/how-can-i-change-the-margins-for-only-part-of-the-text
\def\ChangeMargin#1#2{\list{}{\rightmargin#2\leftmargin#1}\item[]}%
\let\endChangeMargin\endlist%
% Not sure why these did not work
\let\OldSection\section
%\def\section#1{\hspace*{-\LeftMargin}\OldSection{#1}}%
\def\section#1{\endChangeMargin\OldSection{#1}\ChangeMargin{\LeftMargin}{\RightMargin}}%
%%%% The following achieves the desired result, but why does the above not work
%%%% https://tex.stackexchange.com/questions/25082/customizing-indentation-in-section-and-subsection-headings
%\usepackage{titlesec}
%\titlelabel{\hspace*{-\LeftMargin}\thetitle~}
\begin{document}
\ChangeMargin{\LeftMargin}{\RightMargin}
\section{Section Name}
\lipsum*[1-3]
\endChangeMargin
\end{document}
答案1
这
\def\section#1{\hspace*{-\LeftMargin}\OldSection{#1}}
不起作用,因为\OldSection
发出了\par
。因此\hspace
实际上位于节标题上方。
更改数字的正确方法是进行调整,\@seccntformat
使计数器固定在边距中。例如:
\documentclass{article}
\usepackage{showframe}
\usepackage{lipsum}
\makeatletter
\def\@seccntformat#1{\protect\makebox[0pt][r]{{\csname the#1\endcsname\quad}}}
\makeatother
\begin{document}
\section{Section Name}
\lipsum*[1-3]
\end{document}