通过修改 \ref 获得“定理 x 的证明”标题

通过修改 \ref 获得“定理 x 的证明”标题

我遇到了一个问题,上一个问题,而现在它又回来了。

这个想法是使用\ref颜色的内部链接A,并\cref提供(!) 和颜色nameinlink选项cleveref获取包含数学内容的链接。

Audrey Blumsohn 好心地为我提供了以下解决方案:

\documentclass{article}

\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[usenames,dvipsnames]{xcolor}
\newtheorem{theorem}{Theorem}
\usepackage{varioref}
\usepackage{hyperref}
\usepackage[noabbrev,capitalise,nameinlink]{cleveref}
\hypersetup{colorlinks={true},linkcolor={blue},citecolor=green}

\newcommand{\mref}[3][red]{\hypersetup{linkcolor=#1}\cref{#2}{#3}\hypersetup{linkcolor=blue}}%<<<changed

\begin{document}
\section{Bla}
\label{sec:bla}
\begin{theorem}
\label{th:gauss}
Gauss
\end{theorem}

\section{blabla}

In section \ref{sec:bla} we found \mref{th:gauss}

And again \ref{sec:bla} we found \mref{th:gauss}

\end{document}

但仍然存在问题。也就是说,当我在证明环境中使用它进行交叉引用时,此解决方案不起作用,得到如下结果

定理1的证明。

原则上我应该写

\begin{proof}[\mref{thm:1} 的证明]

使用 写出的“定理 1” \mref

有沒有方法可以得到結果?

提前谢谢您!

答案1

该命令\cref只需要一个参数,而不是两个。

\newcommand{\mref}[2][red]{%
  \hypersetup{linkcolor=#1}%
  \cref{#2}%
  \hypersetup{linkcolor=blue}%
}

这将解决问题。

\documentclass{article}

\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[usenames,dvipsnames]{xcolor}


\usepackage{varioref}
\usepackage{hyperref}
\usepackage[noabbrev,capitalise,nameinlink]{cleveref}
\hypersetup{colorlinks={true},linkcolor={blue},citecolor=green}

\newtheorem{theorem}{Theorem}

\newcommand{\mref}[2][red]{%
  \hypersetup{linkcolor=#1}%
  \cref{#2}%
  \hypersetup{linkcolor=blue}%
}

\begin{document}
\section{Bla}
\label{sec:bla}
\begin{theorem}
\label{th:gauss}
Gauss
\end{theorem}

\begin{proof}[Proof of \mref{th:gauss}]
Obvious.
\end{proof}

\section{blabla}

In section \ref{sec:bla} we found \mref{th:gauss} which is nice.

And again \ref{sec:bla} we found \mref{th:gauss} which is nice.

\end{document}

在此处输入图片描述

相关内容