我正在尝试使用 LaTeX3 重写部分命令。出于测试目的,我所做的基本上是这样的:
\ProvideDocumentCommand \p { o m }
{ \IfNoValueTF{#1}
{ %
\paragraph{\textsf{#2}}
}
{ %
\paragraph[#1]{\textsf{#2}}
}
}
但我想重写\paragraph
命令,以便可以以标准方式重用任何自定义。我做了一些挖掘,显然我需要掌握 expl3,我看到了多种实现此目的的方法,例如这里但我试图找到一些可以作为.sty
类分发的东西。我深入研究skrapport
类,但信息量太大。有没有人可以一步一步地向我解释从\ProvidesExplClass
命令重写到任何类型的部分或简单的过程\cite
?
答案1
该类skrapport
用简单的模式定义部分:
\DeclareDocumentCommand\paragraph{som}{
\__skrapport_generic_section:nnnnn{paragraph}{4}{#1}{#2}{#3}
}
第一个参数\__skrapport_generic_section:nnnnn
是关联的计数器名称级别,第二个参数是级别,第三个参数是可能的*
,第四个参数是可能的可选参数(简称),最后第五个参数是完整标题。
因此,为了更改\paragraph
标题的字体,您只需要
\ExplSyntaxOn
\RenewDocumentCommand\paragraph{som}{
\__skrapport_generic_section:nnnnn{paragraph}{4}{#1}{#2}{\sffamily#3}
}
\ExplSyntaxOff
在您的文档序言中。以下是示例文档。
\documentclass{skrapport}
\ExplSyntaxOn
\RenewDocumentCommand\paragraph{som}{
\__skrapport_generic_section:nnnnn{paragraph}{4}{#1}{#2}{\sffamily#3}
}
\ExplSyntaxOff
\begin{document}
\paragraph{This is a paragraph title}
Text follows.
\end{document}