\paragraph
以下是和\subparagraph
中的命令book.cls
。
\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
{3.25ex \@plus1ex \@minus.2ex}%
{-1em}%
{\normalfont\normalsize\bfseries}}
\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
{3.25ex \@plus1ex \@minus .2ex}%
{-1em}%
{\normalfont\normalsize\bfseries}}
我希望小段落编号位于左边距,并且我希望标题后的第一个段落不缩进。我依赖于以下语法描述:\@startsection
这里有一种可行的方法,但我希望从长远来看不要采用,就是直接修改中的定义book.cls
,比如:
\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
{-3.25ex \@plus-1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\normalfont\normalsize\bfseries}}
\newcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}%
{-3.25ex \@plus-1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\normalfont\normalsize\bfseries}}
book.cls
是否可以在不修改 的情况下,使用临时做出相同的更改patchcmd
?
下面粘贴了必要的 MWE,它显示或不显示效果,取决于我是否修改了book.cls
。
\documentclass{book}
\usepackage{lipsum}\usepackage[margin=0.5in]{geometry}
\setcounter{secnumdepth}{6}
\begin{document}
\chapter{A chapter}
\section{A section}\lipsum[2]
\subsection{A subsection}\lipsum[2]
\subsubsection{A subsubsection}\lipsum[2]
\paragraph{A paragraph}\lipsum[2]
\subparagraph{A subparagraph}\lipsum[2]
\end{document}
答案1
具体到你的问题:“我可以使用 patchcmd 来修改中的定义book.cls
吗?”答案是肯定的:
\documentclass{book}
\usepackage{lipsum,etoolbox}% http://ctan.org/pkg/{lipsum,etoolbox}
\usepackage[margin=0.5in]{geometry}% http://ctan.org/pkg/geometry
\usepackage{etoolbox}
\setcounter{secnumdepth}{6}
\begin{document}
\chapter{A chapter}
\section{A section}\lipsum[2]
\subsection{A subsection}\lipsum[2]
\subsubsection{A subsubsection}\lipsum[2]
\paragraph{A paragraph}\lipsum[2]
\subparagraph{A subparagraph}\lipsum[2]
% Update \subparagraph from book.cls
\makeatletter
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\patchcmd{\subparagraph}{\parindent}{\z@}{}{}% Remove indent
\patchcmd{\subparagraph}{3.25ex \@plus1ex \@minus .2ex}{-3.25ex \@plus-1ex \@minus -.2ex}{}{}% Update spacing/indent
\patchcmd{\subparagraph}{-1em}{1.5ex \@plus .2ex}{}{}% Update display/hang
\makeatother
\subparagraph{A subparagraph}\lipsum[2]
\end{document}
由于您对 中更新的“3 次搜索”感兴趣\subparagraph
,所有这些搜索都不同,因此\patchcmd
需要 3 个单独的 s,因为替换适用于模式匹配(这样更简单,尽管只使用一个就可以实现)。根据您的偏好,使用 可能更容易\renewcommand
:
\makeatletter
\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}%
{-3.25ex \@plus-1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\normalfont\normalsize\bfseries}}
\makeatother
以上内容提供了全部的的结构\subparagraph
,并且更加清晰。