如何制作不带编号的自定义命令?

如何制作不带编号的自定义命令?

我有以下\definition命令/定理(我不太了解 LaTeX):

\newtheoremstyle{definition}
  {0.8cm}
  {0.8cm}
  {}
  {0.4cm}
  {\bfseries}
  {.}
  {0.4cm}
  {}
\theoremstyle{definition} \newtheorem{definition}{Definition}[section]

这会以我喜欢的方式产生定义,带有编号等,但我想要一个\definition*没有任何编号的带星号的版本。到目前为止,我尝试过的最好的方法是将最后一行更改为(并在\makeatletter和内换行\makeatother):

\theoremstyle{definition} \newtheorem{definition}{Definition}\@ifstar{[section]}{}

因为我见过有人在其他命令中做类似的事情(我不知道这一切是如何工作的,LaTeX 中的“编程”语法对我来说非常混乱)。但是,无论如何,这会在定义中产生定义编号,因此它会为第一个定义打印“定义 1。”,为第二个定义打印“定义 2。”,等等。

我遇到的另一个问题是,我(喜欢)这样写:

\definition{%
  A \emph{\textbf{heterogeneous system}} is one that contains two or more co- 
existent phases. 
}{\label{definition:heterogeneous-system}}

但标签似乎不存在。有没有办法让该语法与之前定义定义的方式兼容?还是我必须强制使用该\begin \end语法?如果是后者,我该如何制作带星号的版本?

提前致谢。

编辑:复制粘贴材料:

\documentclass[a4paper,3.3mm]{article}

\usepackage{amsthm}

\newtheoremstyle{definition}
  {0.8cm}
  {0.8cm}
  {}
  {0.4cm}
  {\bfseries}
  {.}
  {0.4cm}
  {}
\theoremstyle{definition} \newtheorem{definition}{Definition}[section]

\begin{document}

\section{Section number one}

\definition{%
  Some definition, has numbering 1.1.
}{\label{definition:1}}

\definition*{%
  Some other definition, should have no numbering at all.
}{\label{definition:2}}

\end{document}

我还希望能够引用定义,并让其显示编号(如果有)或其他内容(如果没有)(最好是可自定义的超链接)。但是,这是可选的,因此 \cite{definition:1}只需打印1.1.(使用通常的超链接)并\cite{definition:2}[text]打印text指向定义的超链接。

答案1

你误用了命令。\newtheorem{definition}{Definition}你正在定义一个环境。存在的事实\definition只是为了实施的原因,而且不是正如您所相信的,一个带有两个参数的命令。

\documentclass[a4paper]{article}

\usepackage{amsthm}

\newtheoremstyle{definition}
  {0.8cm}
  {0.8cm}
  {}
  {0.4cm}
  {\bfseries}
  {.}
  {0.4cm}
  {}
\theoremstyle{definition} 
\newtheorem{definition}{Definition}[section]
\newtheorem*{definition*}{Definition}

\begin{document}

\section{Section number one}

\begin{definition}\label{definition:1}
Some definition, has numbering 1.1.
\end{definition}

\begin{definition*}  
Some other definition, should have no numbering at all.
\end{definition*}

\end{document}

在此处输入图片描述

只要看一下下面的例子就能知道你的语法发生了什么。

\documentclass[a4paper]{article}

\usepackage{amsthm}

\newtheorem{theorem}{Theorem}[section]

\begin{document}

\section{Section number one}

\theorem{A theorem}{\label{x}}

Some text after the theorem.

\end{document}

在此处输入图片描述

相关内容