提问于:
浏览数:
4460
## 编译环境
操作系统
* [x] Windows 7/8/10
* [ ] macOS
* [ ] Linux
`若需勾选,请把[ ]改成[x]`
Tex发行版
* [x] TexLive `年份`
* [ ] MikTeX `版本号`
* [ ] CTeX
`若需勾选,请把[ ]改成[x]`
## 我的问题
我想要的引用效果是
1. 详见余弦定理
2. 详见勾股定理
3. 详见定理 1
4. 详见引理 2
但实际效果是
1. 详见test
2. 详见test
3. 详见定理 1
4. 详见引理 2
代码如下:
```tex
\documentclass[scheme = chinese]{ctexart}
\usepackage[a4paper]{geometry}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{aliascnt}
\usepackage{hyperref}
\usepackage{ntheorem}
\theoremstyle{plain}
\newtheorem{theorem}{定理}
\renewcommand{\theoremautorefname}{定理}
\newaliascnt{lemma}{theorem}
\newtheorem{lemma}[lemma]{引理}
\aliascntresetthe{lemma}
\providecommand*{\lemmaautorefname}{引理}
\begin{document}
\section{test}
\begin{theorem}[余弦定理]\label{theorem}
\[a^2 = b^2 + c^2 - 2bc\cos A\]
\end{theorem}
\begin{lemma}[勾股定理]\label{lemma}
\[a^2 + b^2 = c^2\]
\end{lemma}
\begin{enumerate}
\item 详见\nameref{theorem}
\item 详见\nameref{lemma}
\item 详见\autoref{theorem}
\item 详见\autoref{lemma}
\end{enumerate}
\end{document}
```
2 回答
1
蹲个答案。
我目前查手册发现 `ntheorem` 配合 `amsmath` 和 `hyperref` 需要额外加选项,所以写代码为
```
\documentclass{ctexart}
\usepackage{amsmath}
\usepackage[amsmath,hyperref]{ntheorem}
\newtheorem{thm}{定理}
\newtheorem{lem}{引理}
\usepackage{hyperref}
\begin{document}
\begin{thm}[余弦定理]\label{theorem}
\[a^2 = b^2 + c^2 - 2bc\cos A\]
\end{thm}
\begin{lem}[勾股定理]\label{lemma}
\[a^2 + b^2 = c^2\]
\end{lem}
\begin{enumerate}
\item 详见\nameref{theorem}
\item 详见\nameref{lemma}
\item 详见\autoref{theorem}
\item 详见\autoref{lemma}
\end{enumerate}
\end{document}
```
但是这样依然不足以解决你的问题。
-
回复 U14021 :嗯……我以往多用 amsthm – OsbertWang 2020-08-19 21:14 回复
-
谢谢大佬,我已经找到一种解决的办法了。感觉 amsthm 和 hyperref 之间的兼容性要好很多 – U14021 2020-08-17 22:48 回复
1
自问自答一下,似乎 `thmtools` 能解决这个问题,虽然不知道是怎么解决的。
代码如下:
```tex
\documentclass[scheme = chinese]{ctexart}
\usepackage[a4paper]{geometry}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{hyperref}
\usepackage[thmmarks,amsmath]{ntheorem}
\usepackage{thmtools}
\declaretheorem[
style=plain,
name={定理},
refname={定理}
]{theorem}
\declaretheorem[
style=plain,
sibling=theorem,
name={引理},
refname={引理}
]{lemma}
\begin{document}
\section{test}
\begin{theorem}[余弦定理]\label{theorem}
\[a^2 = b^2 + c^2 - 2bc\cos A\]
\end{theorem}
\begin{lemma}[勾股定理]\label{lemma}
\[a^2 + b^2 = c^2\]
\end{lemma}
\begin{enumerate}
\item 详见\nameref{theorem}
\item 详见\nameref{lemma}
\item 详见\autoref{theorem}
\item 详见\autoref{lemma}
\end{enumerate}
\end{document}
```
你的回答
请登录后回答
你的回答将会帮助更多人,请务必认真回答问题。