如何获得定理的正确自动引用

如何获得定理的正确自动引用

我有一些自己的定理环境。我的定理像章节一样被编号。现在我想使用 autoref。但它不像这里描述的那样工作(http://www.tug.org/applications/hyperref/manual.html) 和 aliascnt。那么我该如何获得它呢?

\documentclass[ngerman,halfparskip,12pt,pointednumbers]{scrreprt}
\usepackage{babel}
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage{amsmath,amsfonts,amssymb,amsthm,bbm}
\usepackage{hyperref}
\newtheoremstyle{absatz}
    {17pt}{10pt}{}{-1pt}{\scshape\bfseries}{.}{\newline}{}

\theoremstyle{absatz}

\newtheorem{satz}{Satz}[chapter]
\newtheorem*{satz*}{Satz}
\newtheorem{lemma}[satz]{Lemma}
\newtheorem{corollar}[satz]{Korollar} 

%\renewcommand*{\theoremautorefname}{Satz}
\begin{document}
\begin{satz}
\label{Satz}
text text theorem
\end{satz} 

In \autoref{Satz} we have shown...
\end{document}    

答案1

\autoref需要表单中的环境名称\<name>autorefname才能工作。因此,为了正确地“自动引用”你的satz定理,你应该使用

\newcommand{\satzautorefname}{Satz}

在此处输入图片描述

\documentclass[ngerman,halfparskip,12pt,pointednumbers]{scrreprt}
%\usepackage{babel}
%\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage{amsmath,amsfonts,amssymb,amsthm,bbm}
\usepackage{hyperref}
\newtheoremstyle{absatz}
    {17pt}{10pt}{}{-1pt}{\scshape\bfseries}{.}{\newline}{}

\theoremstyle{absatz}

\newtheorem{satz}{Satz}[chapter]
\newtheorem*{satz*}{Satz}
\newtheorem{lemma}[satz]{Lemma}
\newtheorem{corollar}[satz]{Korollar} 
\newcommand{\satzautorefname}{Satz}

\begin{document}
\begin{satz}
\label{Satz}
text text theorem
\end{satz} 

In \autoref{Satz} we have shown...
\end{document}  ​

答案2

我喜欢我的所有定理等都与方程式同步编号。为此,我使用以下宏来创建类似定理的环境:

% Some trickery to make \NewTheorem{} define theorem like environments
% work correctly with \autoref{}
\usepackage{aliascnt}
\def\NewTheorem#1{%
  \newaliascnt{#1}{equation}
  \newtheorem{#1}[#1]{#1}
  \aliascntresetthe{#1}
  \expandafter\def\csname #1autorefname\endcsname{#1}
}

然后我定义

\NewTheorem{Theorem}
\NewTheorem{Corollary}

\begin{Theorem}...\end{Theorem}等等,并在文中使用等等。

请注意,环境名称(TheoremCorollary等等)是 使用的标签\autoref

答案3

这里有一个有点“不太专业”的方法,我发现它非常有用和简单:

加载hyperref包并在序言中插入以下内容

\newcommand{\sref}[2]{\hyperref[#2]{#1 \ref{#2}}}

现在,您可以通过键入 来引用任何内容\sref{<theorem_description>}{<label_name>}<theorem_description>可以是任何您想要的内容。我个人不介意这样的解决方案,因为它几乎不需要额外的输入。此外,它可以在任何情况下以不同的方式输入,例如,我发现在句子开头时它非常有用。

这是 MWE

\documentclass{article}
\usepackage{hyperref}
\newcommand{\sref}[2]{\hyperref[#2]{#1 \ref*{#2}}}
\newtheorem{satz}{Satz}[section]
\newtheorem{folge}[satz]{Folge}

\begin{document}
\section{YOLO}

\begin{satz}\label{label1} Ein schoener Satz.
\end{satz}

\begin{folge}\label{label2}Wegen \sref{satz}{label1} folgt....
\end{folge}
\sref{Folge}{label2} has a capital, since it is the beginning of a sentence.

\end{document}    

输出:

在此处输入图片描述

相关内容