调用宏时如何包含参数?

调用宏时如何包含参数?

首先,我想定义一个定理环境无编号,因此我尝试了以下代码:

\LoadClass[a4paper]{article}

\RequirePackage{amsmath,amssymb,amsthm} 
\RequirePackage{thmtools}

\declaretheoremstyle[]{testbox}
\declaretheorem[style=testbox,name=Theorem]{theo}
\renewcommand{\thetheo}{}    %Cancelling the number

\begin{document}
    \begin{theo}
        Content.
    \end{theo}
\end{document}

效果很好。然后我尝试将其扩展到

\LoadClass[a4paper]{article}

\RequirePackage{amsmath,amssymb,amsthm}
\RequirePackage{thmtools}

\declaretheoremstyle[]{testbox}
\newcommand{\newtestbox}[2]{
    \declaretheorem[style=testbox,name=#1]{#2}
    \renewcommand{\the#2}{}    %Error
}
\newtestbox{Theorem}{theo}

\begin{document}
    \begin{theo}
        Content.
    \end{theo}
\end{document}

但现在看来,这似乎\the#2被认为是某种不规范的反击。我该如何正确使用它?如果故事太长,我很抱歉。

答案1

使用numbered=no(thmtools手册第3页)。

\documentclass{article}

\usepackage{amsmath,amssymb,amsthm}
\usepackage{thmtools}

\declaretheoremstyle[]{testbox}
\declaretheorem[
  style=testbox,
  numbered=no,
  name=Theorem,
]{theo}

\begin{document}

\begin{theo}
Content.
\end{theo}

\end{document}

在此处输入图片描述

numbered=no与没有但有 时得到的(错误)输出进行比较\renewcommand{\thetheo}{},即

在此处输入图片描述

答案2

你可以说:

\LoadClass[a4paper]{article}

\RequirePackage{amsmath,amssymb,amsthm}
\RequirePackage{thmtools}

\declaretheoremstyle[]{testbox}
\newcommand{\newtestbox}[2]{
    \declaretheorem[style=testbox,name=#1]{#2}
    \expandafter\renewcommand\csname the#2\endcsname{}    %Error
}
\newtestbox{Theorem}{theo}

\begin{document}
    \begin{theo}
        Content.
    \end{theo}
\end{document}

相关内容