Ссылка на подобную теореме среду [имя]

Я использую ntheorem для набора ряда условий. В моей преамбуле я имею:

\theoremstyle{empty}
\newtheorem{Condtion}{Condtion}

Когда я хочу набрать условие, я пишу:

\begin{Condtion}[name]
\label{cnd:nm}
foo foo foo
\end{Condition}

Имя кажется полужирным на той же строке как запуск текста условия без числа или чего-либо.Прекрасно.

Что я хочу сделать, теперь, относятся к условию некоторым вариантом \ref команда, \ref называет число [который не отображен больше нигде] \thref, записи "Условие n" для энного условия \nameref написал имя РАЗДЕЛА маркировки. zref решение было предложено здесь, но кажется неудовлетворительным и громоздким.

Какие-либо предложения на простом способе сделать это? (Даже более простое zref решение было бы хорошо), В данный момент, я только что определил a \newcommand для каждого условия и использования это вместо того, чтобы цитировать само условие. Это является семантически непрозрачным и просто неудовлетворяющим...

(редактирование: Я послал по электронной почте одному автору ntheorem, Wolfgang May, и он объяснил, что нет действительно способа сделать это в ntheorem, начиная с [имя], опция не зарегистрирована.)

(редактирование: Это не простофиля, как предложено в комментарии, так как я интересуюсь ссылкой на среду ее дополнительной командой имени, не ссылаясь на раздел/главу, в котором это находится.)

7
задан Seamus 19 July 2010 в 13:45
поделиться

2 ответа

Я думаю, что следующие могут делать то, что вы хотите.

\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 (с другим ключом, конечно).

Для сред 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
10
ответ дан 6 December 2019 в 14:01
поделиться

вы можете ознакомиться с пакетом nameref , который распространяется вместе с hyperref. В документации nameref есть раздел о ссылках на "вещи".

Больше о ссылках можно найти в разделе TeX FAQ Ссылка на вещи по их имени.

2
ответ дан 6 December 2019 в 14:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: