renewcommand 和 RenewDocumentCommand 之间真正的区别是什么?

renewcommand 和 RenewDocumentCommand 之间真正的区别是什么?

我有一个主文件,它使用 \include 调用几个章节。对于每个章节,我都使用 renewcommand 重命名章节的简称。这很好用,但使用 RenewDocumentCommand 就不行了。这里有 3 个 MWE(它们真的很短,但足以理解问题):

第一个工作正常:

\documentclass[10pt,a4paper]{book}

\newcommand\chap{}

\begin{document}

\renewcommand{\chap}{Premier chapitre}
\chapter{Chapitre 1}\label{Chapitre:\chap}

Début du chapitre 1

\chap\quad\ref{Chapitre:\chap}%to see if everything is okay

\renewcommand{\chap}{Deuxième chapitre}
\chapter{Chapitre 2}\label{Chapitre:\chap}

Début du chapitre 2

\chap\quad\ref{Chapitre:\chap}%to see if everything is okay
\end{document}

现在,第二个使用RenewDocumentCommand:

\documentclass[10pt,a4paper]{book}

\NewDocumentCommand\chap{}{}

\begin{document}

\RenewDocumentCommand{\chap}{}{Premier chapitre}
\chapter{Chapitre 1}\label{Chapitre:\chap}

Début du chapitre 1

\chap\quad\ref{Chapitre:\chap}%to see if everything is okay

\RenewDocumentCommand{\chap}{}{Deuxième chapitre}
\chapter{Chapitre 2}\label{Chapitre:\chap}

Début du chapitre 2

\chap\quad\ref{Chapitre:\chap}%to see if everything is okay
\end{document}

如您所见,有两个问题:

  • 我有一个警告:标签“Chapitre:\chap”被多次定义。
  • \chap 命令工作正常,但引用 \ref{Chapitre:\chap} 不起作用。我不明白为什么它不起作用而 \chap 却起作用

因此我尝试将 \label{Chapitre:\chap} 替换为 \label{Chapitre:Premier chapitre},并且效果很好:

\documentclass[10pt,a4paper]{book}

\NewDocumentCommand\chap{}{}

\begin{document}

\RenewDocumentCommand{\chap}{}{Premier chapitre}
\chapter{Chapitre 1}\label{Chapitre:Premier chapitre}

Début du chapitre 1

\chap\quad\ref{Chapitre:\chap}%to see if everything is okay

\RenewDocumentCommand{\chap}{}{Deuxième chapitre}
\chapter{Chapitre 2}\label{Chapitre:Deuxième chapitre}

Début du chapitre 2

\chap\quad\ref{Chapitre:\chap}%to see if everything is okay
\end{document}

那么,renewcommand 和 RenewDocumentCommand 之间真的有区别吗?我做错了什么吗?

PS: 在我的真实文件中,

  • \newcommand{\chap}{} 在我的主文件中
  • \renewcommand{\chap}{...} 在每个章节中

相关内容