Referência com uma tag dinâmica

Referência com uma tag dinâmica

Tenho uma lista de várias condições com um parâmetro e gostaria de incluir o parâmetro explicitamente na tag da condição. No entanto, também gostaria de fazer referência à definição de cada condição (com o parâmetro fixo) posteriormente no texto. (É um pouco difícil de descrever, mas se você olhar o código abaixo, espero que fique claro o que quero dizer.)

Isso pode ser feito usando enumitem (ou algum outro pacote compatível)?

Nós:

\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}

Responder1

Você pode definir o rótulo e a refsaída separadamente em enumitem, usando labela chave e refpara \begin{enumerate}. Isto pode ser usado para mostrar onno rótulo, mas não na referência. Isso permite referenciar a equação pelo número principal e adicionar seu próprio subscrito.

Agora você pode definir um comando de referência separado com dois argumentos, a equação e o subscrito, usando o comando \hyperref[target label]{link text}.

Para evitar uma caixa de link duplo, você pode desabilitar o link para \refusar o formato de estrela ( \ref*) e deixar \hyperrefcriar a caixa de link (ou link colorido com \usepackage[colorlinks]{hyperref}) para o rótulo combinado.

MWE:

\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}

Resultado:

insira a descrição da imagem aqui

informação relacionada