有没有一种方法,使用amsthm
和thmtools
(也可能使用其他软件包)让 LaTeX 跟踪特定类型定理的数字,但又不让这些数字真正出现在打印的文本中?
例如:
\documentclass{article}
\usepackage{amsthm}
\usepackage{thmtools}
\declaretheoremstyle[numbered=yes]{probs}
\declaretheorem[name=PROBLEMS,style=probs,numberwithin=section]{problems}
\begin{document}
\section{First section}
\begin{problems}
Blah-blah
\end{problems}
\end{document}
我想要的输出应该是:
请注意答案是不是简单地使用numbered=no
(或者,不thmtools
声明\newtheorem*
)——因为我仍然想引用定理的数字(而不是名称),例如与 一起使用\hyperref
。
[这个问题与我的问题有关如何使用 cleveref 获取类似定理的名称和列表项编号?
答案1
我不推荐这种风格,但可以通过欺骗preheadhook
让其\theproblems
不执行任何操作,然后稍后再使用 启用它postheadhook
,这样label
选项(或\label
命令)无论如何都会使用非空\theproblems
。
enumitem
但是,可以使用专门用于以下用途的简单列表来更改枚举引用problems
:
\documentclass{article}
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage{enumitem}
\usepackage{hyperref}
\declaretheoremstyle[numbered=yes]{probs}
\declaretheorem[name=PROBLEMS,style=probs,numberwithin=section,preheadhook={\let\theproblems\relax},postheadhook={\newcommand{\theproblems}{\thesection.\arabic{problems}}\leavevmode}]{problems}
\newlist{probenum}{enumerate}{1}
\setlist[probenum,1]{label={\arabic*)},ref={Problem \thesection(\arabic*)}}
\begin{document}
\section{First section}
\begin{problems}
\begin{probenum}
\item foo \label{foo}
\item bar \label{bar}
\end{probenum}
\end{problems}
\section{other}
\begin{problems}
\begin{probenum}
\item foo \label{fooother}
\item bar \label{barother}
\end{probenum}
\end{problems}
In \ref{fooother}, \ref{bar} or in \ref{foo} it is shown that
\end{document}