## 编译环境 操作系统 * [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 回答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} ```

你的回答

请登录后回答

你的回答将会帮助更多人,请务必认真回答问题。