获取代码以引用整个定义名称,而不是数字列表

获取代码以引用整个定义名称,而不是数字列表

我正在尝试排版定义,以便在整个工作过程中引用我的问题。以下是我目前所拥有的:

\begin{enumerate} %hint


\item 
\theoremstyle{definition}
\newtheorem{defn}{\textbf{Definition 2.2.1}}\label{2.2.1}
\textit{Let S be a set. A subset R of S x S is called an \textbf{equivalence relation} on S if
\begin{enumerate}
    \item 
    for all $a \in S, (a,a) \in R;$
    \item
    for all $a,b \in S, $if $(a,b) \in R,$ then $(b,a) \in R;$
    \item 
    for all $a,b,c \in S, $if $(a,b) \in R,$  and $(b,c) \in R,$ then $(a,c) \in R. $
\end{enumerate}
\textit{We will write $a \sim b$ to denote the fact that $(a,b) \in R.$}}
\end{enumerate}

这是我的代码迄今为止生成的内容:

在此处输入图片描述

有问题的代码在这里:

\begin{enumerate}

\item
Let  $x,x \in \mathbb{Z}$ such that $ x | x^k$ and $x|x^j$, then $x\sim x$ and the equivalence relation is reflexive as described by \ref{2.2.1}.\\

\end{enumerate}

生成:

在此处输入图片描述

我想更改的部分是 \ref{2.2.1}。在我的代码中,它生成一个单数,但我希望代码显示:

...等价关系是自反的,如定义 2.2.1 所述。

任何帮助将不胜感激。

答案1

我想鼓励您学习如何利用 LaTeX 的方法(如果您愿意的话,可以称之为它的“思维方式”)将内容问题与格式问题分开。虽然一开始会涉及一些额外的开销,但这样做会立即带来巨大的回报,因为您可以访问各种 LaTeX 软件包,这些软件包提供执行各种特定操作的宏,例如包括您希望交叉引用的对象的字符串标签。换句话说,如果已经有一个完美的轮子,就不要重新发明轮子了……

例如,学习如何使用机器阿姆斯特丹包来定义和使用类似定理的环境,包括“定义”环境。如果你这样做,那么创建一个给定定义的带标签交叉引用就很简单了,只需用 替换 ,\ref{defn:eq_rel}其中\cref{defn:eq_rel}\cref包提供的宏聪明人包裹。

通过将内容问题与格式问题分开,您的代码将很快变得更加强大和更具适应性。例如,如果您决定将等价关系的定义移到文档的其他位置,LaTeX 不仅会自动处理定义编号的变化,而且对该定义的任何交叉引用也会自动进行调整。

在此处输入图片描述

\documentclass{report} % or some other suitable document class
\usepackage{enumitem}  % more control over appearance of lists
\usepackage{amssymb}   % for '\mathbb' macro
\usepackage{amsthm}    % for '\newtheorem' macro
\usepackage[capitalize]{cleveref} % for '\cref' macro
\newtheorem{defn}{Definition}[section] % run this instruction *after* loading 'cleveref'.

\newcommand\boldemph[1]{\textup{\textbf{#1}}} % utility macro

\begin{document}
\setcounter{chapter}{2} % just for this example
\setcounter{section}{2}

\begin{defn} \label{defn:eq_rel} % use a descriptive label
Let $S$ be a set. A subset $R$ of $S \times S$ is called 
an \boldemph{equivalence relation} on $S$ if
\begin{enumerate}[label=\upshape(\alph*)]
    \item 
    for all $a \in S$, $(a,a) \in R$;
    \item
    for all $a,b \in S$, if $(a,b) \in R$, then $(b,a) \in R$;
    \item 
    for all $a,b,c \in S$, if $(a,b) \in R$ and $(b,c) \in R$, 
    then $(a,c) \in R$. 
\end{enumerate}
We will write $a \sim b$ to denote the fact that $(a,b) \in R$.
\end{defn}

\medskip\noindent
\dots

\bigskip
Let  $x$, $x\in\mathbb{Z}$, such that $x\mid x^k$ and $x\mid x^j$. 
Then $x\sim x$, and the equivalence relation is reflexive as 
described by \cref{defn:eq_rel}.

\end{document}

答案2

\@currentlabel保存当前的文本(通常是数字) 。如果你想捕获一些不同的东西,\label你可以在调用之前强制设置\@currentlabel为你想要的任何内容\label

在此处输入图片描述

\documentclass{article}

\usepackage{amssymb}

\makeatletter
\newcommand{\setref}[1]{\def\@currentlabel{#1}}
\makeatother

\newcommand{\newdefinition}[1]{%
  \textbf{#1}% Set definition
  \setref{#1}% Set label
}

\begin{document}

\begin{enumerate}
  \item 
  \begingroup
  \newdefinition{Definition 2.2.1}\label{def-2.2.1}
  \itshape
  Let~$S$ be a set. A subset~$R$ of $S \times S$ is called an \textbf{equivalence relation} on~$S$ if
  \begin{enumerate}
    \item 
    for all $a \in S, (a, a) \in R$;
    \item
    for all $a, b \in S$, if $(a, b) \in R$, then $(b, a) \in R$;
    \item 
    for all $a, b, c \in S$, if $(a, b) \in R$, and $(b, c) \in R$, then $(a, c) \in R$.
  \end{enumerate}
  We will write $a \sim b$ to denote the fact that $(a, b) \in R$.
  \endgroup
\end{enumerate}

\begin{enumerate}
  \item
  Let $x, x \in \mathbb{Z}$ such that $x \mid x^k$ and $x \mid x^j$, then $x \sim x$ and the equivalence 
  relation is reflexive as described by \ref{def-2.2.1}.
\end{enumerate}

\end{document}

*注意,的内容\@currentlabel写入了.aux,因此将会被扩展。

相关内容