LaTeX:重新定义加星号命令
我想重新定义 \part*
命令,以便它自动添加内容行。事实证明这很困难,因为我想在我的加星号版本中重用原始的 \part*
命令。
通常(即对于未加星号的命令)我会这样做:
\let\old@part\part
\renewcommand\part[2][]{
\old@part[#1]{#2}
… rest of definition}
也就是说,我会将 \part
的原始定义保存在 \old@part
中并使用它。
但是,这不适用于带星号的命令,因为它们没有定义单个词位(与上面示例中的 \part
命令不同)。这归结为以下问题:如何保存加星号的命令?
请注意,我已经知道如何使用 \WithSuffix
命令重新定义加星号的命令本身后缀
包。这不是问题。
I want to redefine the \part*
command so that it automatically adds a contents line. This proves difficult since I want to reuse the original \part*
command inside my starred version.
Normally (i.e. for unstarred commands) I would do it like this:
\let\old@part\part
\renewcommand\part[2][]{
\old@part[#1]{#2}
… rest of definition}
That is, I would save the original definition of \part
in \old@part
and use that.
However, this doesn’t work for starred commands since they don’t define a single lexeme (unlike the \part
command in the example above). This boils down to the following question: How can I save a starred command?
Notice that I already know how to redefine a starred command itself, using the \WithSuffix
command from the suffix
package. This isn’t the problem.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
没有
\part*
命令。发生的情况是\part
命令查看其后面的下一个字符(使用\@ifstar
),然后分派到其他两个例程之一,该例程基于以下内容执行实际工作:关于那里是否有星号。参考:TeX FAQ 条目 使用 * 选项定义的命令
There is no
\part*
command. What happens is the\part
command takes a look at the next character after it (with\@ifstar
) and dispatches to one of two other routines that does the actual work based on whether there's an asterisk there or not.Reference: TeX FAQ entry Commands defined with * options
感谢@smg 的回答,我拼凑出了一个完美运行的解决方案。这是完整的源代码,以及解释性注释:(
这需要包
suffix
和ifthen
。)现在,我们可以使用它:
Thanks to @smg’s answer, I’ve cobbled together a solution that works perfectly. Here’s the complete source, along with explanatory comments:
(This needs the packages
suffix
andifthen
.)Now, we can use it: