我正在尝试重新定义\subsubsection
报告类,使其行为类似\paragraph
且标题后没有换行符。
它与这个问题但我不知道如何从中推断出相反的效果。
我尝试获取段落使用代码\show\paragraph
并用\subsubsection
其重新定义如下,但尽管它可以编译,但当我尝试使用它时它却不起作用。
\renewcommand{\subsubsection}{\long macro :->\@startsection{subsubsection}{4}{\z@ }{3.25ex \@plus 1ex \@minus .2ex}{-1em}{\normalfont \normalsize \bfseries}}
我想知道如何解决我原来的问题,但是现在,我也很好奇我做错了什么,\renewcommand
因为在我看来,我会在其他问题上再次遇到它,我会尝试通过修改乳胶的运作方式来解决它。
梅威瑟:
\RequirePackage[l2tabu, orthodox]{nag}
\documentclass[12pt]{report}
\usepackage{listings}
\def\thesection{\Roman{section}}
\def\thesubsection{\thesection.\Alph{subsection}}
\setcounter{secnumdepth}{2}
%\renewcommand{\subsubsection}{\long macro :->\@startsection{subsubsection}{4}{\z@ }{3.25ex \@plus 1ex \@minus .2ex}{-1em}{\normalfont \normalsize \bfseries}}
\begin{document}
\chapter{Chapter 1}
\label{c:c1}
\section{Section 1}
\label{s:s1}
\subsection{Subsection 1}
\label{ss:ss1}
\subsubsection{\lstinline{<Upper|Lower> Triangular}} defines a triangular matrix ...
\end{document}
答案1
的输出\show
无法按您尝试的方式使用。它表示这\subsection
是一个没有参数的“长”宏,替换文本紧随其后->
。
正确的寻找地点是report.cls
,你在哪里找到
\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\normalfont\normalsize\bfseries}}
\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
{3.25ex \@plus1ex \@minus.2ex}%
{-1em}%
{\normalfont\normalsize\bfseries}}
\@startsection
解释不同行为的关键点是: for的第四个参数为负数\subsubsection
,表示抑制下一段落的缩进;而第五个参数为正数,表示 TeX 不会将标题“插入”。因此
\makeatletter
\renewcommand\subsection{%
\@startsection{subsubsection}{3}{\z@}{3.25ex \@plus1ex \@minus.2ex}%
{-1em}{\normalfont\normalsize\bfseries}}
\makeatother
第二个参数\@startsection
告诉 LaTeX 分段命令的级别,以便secnumdepth
和tocdepth
应该保持3
。
重要的提示
和命令是必需的\makeatletter
,\makeatother
因为我们正在做涉及 LaTeX 内部命令的事情。
@
每次使用名称中包含的命令时,代码必须位于.sty
文件中或被该对包围。参见\makeatletter 和 \makeatother 起什么作用?了解更多信息。
答案2
\long macro :->
不是宏定义的一部分,您需要更改@
定义中的 catcode。以下应该有效:
\makeatletter
\renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@}%
{3.25ex \@plus 1ex \@minus .2ex}{-1em}{\normalfont\normalsize\bfseries}}
\makeatother
答案3
如果你不想手动操作,你可以使用这titlesec
其用法在这个问题中描述:定义自定义切片命令