我有一些自己的定理环境。我的定理像章节一样被编号。现在我想使用 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}
等等,并在文中使用等等。
请注意,环境名称(Theorem
,Corollary
等等)是 使用的标签\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}
输出: