我正在使用 ntheorem 来排版一组条件。在我的序言中我有:
\theoremstyle{empty}
\newtheorem{Condtion}{Condtion}
当我想排版一个条件时,我写:
\begin{Condtion}[name]
\label{cnd:nm}
foo foo foo
\end{Condition}
该名称以粗体显示,与条件文本的开头位于同一行,不带数字或任何内容。完美的。
我现在想做的是通过某种变体来引用条件\ref
命令,
\ref 呼叫号码 [在其他任何地方都没有显示]
\thref 为第 n 个条件写入“条件 n”
\nameref 写入标签的 SECTION 名称。
建议使用 zref 解决方案here http://groups.google.com/group/comp.text.tex/browse_thread/thread/227d1a4a9e546696#,但似乎并不令人满意且笨拙。
关于执行此操作的简单方法有什么建议吗? (即使是更简单的 zref 解决方案也会很好)目前我刚刚定义了一个\newcommand
对于每个条件并使用它而不是引用条件本身。这在语义上是不透明的并且令人不满意......
(编辑:我给 ntheorem 的一位作者 Wolfgang May 发了电子邮件,他解释说在 ntheorem 中实际上没有办法做到这一点,因为 [name] 选项没有被记录。)
(编辑:这不是评论中建议的欺骗,因为我有兴趣通过其可选名称命令引用环境,而不是引用它所在的部分/章节。)
我认为以下内容可能会满足您的要求。
\makeatletter
\def\namedlabel#1#2{\begingroup
\def\@currentlabel{#2}%
\label{#1}\endgroup
}
\makeatother
然后你用它作为
\begin{theorem}
\namedlabel{thm:seamus}{Seamus' Theorem}
Here is Seamus' Theorem.
\end{theorem}
Here I reference~\ref{thm:seamus}.
不幸的是,它只能通过名称引用,尽管我想你可以使用普通的\label
以及(当然使用不同的密钥)。
For the amsthm
您可以使用的环境
\makeatletter
\let\@old@begintheorem=\@begintheorem
\def\@begintheorem#1#2[#3]{%
\gdef\@thm@name{#3}%
\@old@begintheorem{#1}{#2}[#3]%
}
\def\namedthmlabel#1{\begingroup
\edef\@currentlabel{\@thm@name}%
\label{#1}\endgroup
}
\makeatother
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)