我有一个主文件,它使用 \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}{...} 在每个章节中