Ссылка с динамическим тегом

Ссылка с динамическим тегом

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

Можно ли это сделать с помощью enumitem (или какого-либо другого, надеюсь, совместимого пакета)?

Мве:

\documentclass{article}
\usepackage{amsthm}
\usepackage{hyperref}
\usepackage{enumitem}
\newtheorem*{theorem}{Theorem}
\begin{document}
    Consider the following conditions:
    \begin{enumerate}[label=(\roman{*})$_n$]
        \item
        \label{item:first_condition}
        Some condition
        \item
        \label{item:second_condition}
        Some other conditon.
    \end{enumerate}
    
    How I would imagine I could type it:
    \begin{theorem}
        \ref{item:first_condition}[7] holds.
    \end{theorem}
    \begin{theorem}
        If \ref{item:second_condition}[n] holds, then \ref{item:first_condition}[n+2] holds.
    \end{theorem}
    
    How I would like it to look like:
    \begin{theorem}
        (i)$_7$ holds.
    \end{theorem}

    \begin{theorem}
        If (ii)$_n$ holds, then (i)$_{n+2}$ holds.
    \end{theorem}
\end{document}

решение1

Вы можете задать метку и refвывод отдельно в enumitem, используя как ключ, так labelи refдля\begin{enumerate} . Это можно использовать для отображениянв метке, но не в ссылке. Это позволяет ссылаться на уравнение по основному номеру и добавлять свой собственный нижний индекс.

Теперь вы можете определить отдельную команду ссылки с двумя аргументами, уравнением и нижним индексом, используя команду \hyperref[target label]{link text}.

Чтобы избежать двойного блока ссылок, вы можете отключить ссылку для \refиспользования формы звезды ( \ref*) и позволить \hyperrefсоздать блок ссылок (или цветную ссылку с \usepackage[colorlinks]{hyperref}) для комбинированной метки.

МВЭ:

\documentclass{article}
\usepackage{amsthm}
\usepackage{hyperref}
\usepackage{enumitem}
\newcommand{\nref}[2]{\hyperref[#1]{\ref*{#1}$_{#2}$}}
\newtheorem*{theorem}{Theorem}
\begin{document}
    Consider the following conditions:
    \begin{enumerate}[label=(\roman{*})$_n$,ref=(\roman*)]
        \item
        \label{item:first_condition}
        Some condition
        \item
        \label{item:second_condition}
        Some other conditon.
    \end{enumerate}
    
    How I would imagine I could type it:
    \begin{theorem}
        \nref{item:first_condition}{7} holds.
    \end{theorem}
    \begin{theorem}
        If \nref{item:second_condition}{n} holds, then \nref{item:first_condition}{n+2} holds.
    \end{theorem}
    
    How I would like it to look like:
    \begin{theorem}
        (i)$_7$ holds.
    \end{theorem}

    \begin{theorem}
        If (ii)$_n$ holds, then (i)$_{n+2}$ holds.
    \end{theorem}
\end{document}

Результат:

введите описание изображения здесь

Связанный контент