Autoref sensibile alle parentesi

  • Creatore
    Topic
  • #96985
    Up
    0
    Down
    ::


    Ciao a tutti, sto scrivendo la tesi di dottorato, in inglese. Trattandosi di una tesi teorica, ho moltissime equazioni. Sono un grande fan di autoref, che mi permette di non scrivere equation~ref{eq:key} o Table~ref{tab:key} (ho omesso qua il backslash, altrimetni lo interpretava come un comando), ma di chiamare \autoref{eq:key} e ~\autoref{tab:key}. La policy mi impone di scrivere equation (numeo), equations (numero1)-(numero1), oppure Equation (numero) nel caso in cui sia ad inizio frase. Tuttavia, se cito tra parentesi, non devo incorrere nella doppia parentesi, ovvero devo mettere (see equation 2.3) e non (see equation (2.3)).
    Per ottenere equation (numero), ho messo
    def\equationautorefname{equation}
    \labelformat{equation}{(#1)}
    come nell’esempio sotto. Ovviamente, incorro nel problema della doppia parentesi, come si può vedere dall’esempio che ho postato sotto.

    La mia domanda è la seguente: esiste un modo per configurare autoref in modo che gestisca da solo questa situazione, ovvero omettendo le parentesi quando è richiamato dentro a delle parentesi tonde?

    `
    \documentclass[a4paper,11pt]{book}
    % \documentclass[a4paper,11pt,draft]{book}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage{amsmath,amssymb,amsthm}
    \usepackage{xcolor}
    \usepackage[italian, english]{babel}
    \selectlanguage{english}
    \usepackage{xspace}
    \usepackage{graphicx}
    \usepackage[round]{natbib}
    % \usepackage{aas_macros}
    \usepackage{booktabs}
    \usepackage{longtable}
    \usepackage{fancyhdr}
    \usepackage{setspace}
    \usepackage{subfig}
    \usepackage{microtype}
    % \usepackage{empheq}
    % \usepackage{lscape}
    % \usepackage{epigraph}
    % \usepackage{frontespizio}
    % \usepackage{pxfonts}
    % \usepackage{euler}
    % \usepackage{txfonts}
    % \usepackage{mathrsfs}
    % \usepackage[textheight=\textheight, textwidth=\textwidth,
    % bindingoffset=1cm, vcentering]{geometry}

    % \usepackage{listings}
    % \lstset{language=[08]fortran,
    % basicstyle=\tiny} %,numbers=left, numberstyle=\tiny,stepnumber=4, numbersep=5pt}

    \usepackage{datetime}
    % \usepackage{marginnote}
    \usepackage{multicol}
    \usepackage{varioref}
    \usepackage{aliascnt}
    \usepackage{pdfpages}
    % \usepackage{layaureo}
    \usepackage[figuresright]{rotating}
    \usepackage{upgreek}
    \usepackage{hyperref}
    \hypersetup{
    % colorlinks=false,
    pdfborder={0 0 0},
    unicode=true,
    }
    %
    %
    \date{today}

    \onehalfspacing
    %
    \begin{document}
    \def\chapterautorefname{Chapter}
    \def\sectionautorefname{Section}
    \def\subsectionautorefname{subsection}
    \def\equationautorefname{equation}
    \def\figureautorefname{Fig.}
    \labelformat{equation}{(#1)}

    % references for multiple equations
    \newcommand*{\autorefs}[2]{eqs.~\ref{#1}-\ref{#2}}
    \newcommand*{\Autoref}[1]{Equation~\ref{#1}}
    \newcommand*{\Autorefs}[2]{Equations~\ref{#1}-\ref{#2}}
    \frontmatter
    % \graphicspath{{figs/}}
    %

    \tableofcontents
    \listoffigures
    \listoftables

    \mainmatter
    \chapter{New chapter}
    \begin{equation}
    \boldsymbol{F} = m\boldsymbol{a} \label{eq:newton}
    \end{equation}
    \begin{equation}
    E=mc^2 \label{eq:einstein}
    \end{equation}

    \autoref{eq:einstein}, see
    \autorefs{eq:newton}{eq:einstein}, (see \autoref{eq:newton}), (see
    \autorefs{eq:newton}{eq:einstein})

    \backmatter

    \end{document}
    `

    PS: se avete commenti su qualche errore od errato uso dei pacchetti, segnalate pure.

    Grazie!

Visualizzazione 0 filoni di risposte
  • Autore
    Risposte
    • #96986
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        La domanda è interessante, am come fa a sapere [tt]\autoref[/tt] che lo si sta usando dentro delle parentesi, in un inciso parentetico?
        Lo potrebbe sapere se il semplice uso della parentesi aperta impostasse a true una variabile logica e la chiusura della parentesi dell’inciso reimpostasse la variabile logia a false.

        Per esssere sicuri che altre parentesi dentro l’inciso non disturbino questo giochetto di variabili logiche bisognrebbe usare un altro metodo per generare l’inciso, per esempio un ambiente o almeno un comando il cui argomento ia l’inciso stesso; allora dentro l’inciso puoi usare un comando diverso da quello che useresti fuori dell’inciso.

        Ma a quel punto mi sorgerebbe una domanda: si fa prima a scrivere quello che dici, o è meglio scrivere l’inciso nella forma [tt](see eqn.~\refequ:key})[/tt] ?

        Analogamante, lasciando perdere che una soluzione con \autore può andar bene per l’inglese, e male per l’italiano, non è meglio scrivere [tt]equation~\eqret{equ:key}[/tt] (con o senza maisucola) per una sola equazione e [tt]equations\eqref{equ:kestart}–\eqref{equ:keyend}[/tt] ?

        Come farei io, la cosa andrebbe bene sia per l’inglese (senza articoli o preposizioni articolate) e l’italiano (con gli articoli o le preposizioni articolate correttamente poste al singolare o al plurale).

        Però l’uso di \autoref, almeno in inglese sembra abbastanza utile. Peccato che funzioni solo quando usi hyperref. Per un testo a stampa non servirebbe a nulla.

        Forse vedo la cosa con occhio pessimista, ma mi pare che tutto sommato l’uso di ‘autoref non semplifichi granché la vita di chi compone il testo sorgente.

    Visualizzazione 0 filoni di risposte
    • Devi essere connesso per rispondere a questo topic.

    Go to top