为什么我不能用 \renewcommand 定义命令?

为什么我不能用 \renewcommand 定义命令?

我尝试使用布尔表达式,它已在我的 MNWE 上显示:

\documentclass[12pt, b4paper, twoside]{scrbook}   
\usepackage[log-declarations=false]{xparse} 
\usepackage{xltxtra} 
\usepackage{etoolbox}
\usepackage{amsmath, amsthm, amssymb, amsfonts, amsbsy} 

\newbool{pboldvectors}%
\booltrue{pboldvectors}%

\ifbool{pboldvectors}%
  {\renewcommand{\vecc}[1]{\mathbf{#1}}}                      % then clausule
  {\renewcommand{\vecc}[1]{\vec{#1}}}                         % else clausule

\begin{document} 
  \begin{equation}
     \vecc{x}
  \end{equation}
\end{document}

但没有成功。我得到了 Latex 错误:\vecc 未定义。以前,我使用过 ifthen 库,但它已经过时了。我想用这个开关进行数学格式化。

答案1

要使用\renewcomad命令,必须先定义。请\newcommand改用...

答案2

如果命令以前从未被定义过,则不能使用\renewcommand,例如 的情况\vecc

在这些情况下,您必须使用\newcommand而不是\renewcommand

因此代码

\documentclass[12pt, b4paper, twoside]{scrbook}   
\usepackage[log-declarations=false]{xparse} 
\usepackage{xltxtra} 
\usepackage{etoolbox}
\usepackage{amsmath, amsthm, amssymb, amsfonts, amsbsy} 

\newbool{pboldvectors}%
\booltrue{pboldvectors}%

\ifbool{pboldvectors}%
  {\newcommand{\vecc}[1]{\mathbf{#1}}}                      % then clausule
  {\newcommand{\vecc}[1]{\vec{#1}}}                         % else clausule

\begin{document} 
  \begin{equation}
     \vecc{x}
  \end{equation}
\end{document}

将工作。

相关内容