取消缩进章节标题

取消缩进章节标题

在尝试回答缩进所有普通文本,我不得不使用包裹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}

相关内容