\if \ifx per controllo

  • Creatore
    Topic
  • #94319
    Up
    0
    Down
    ::


    Salve a tutti, non sono riuscito a venire a capo di un problema. Mi scuso se è già stato affrontato ma con le cose trovate in rete non ho ancora risolto.

    Mi capita di avere figure in un testo che latex mette nelle pagine più opportune (inserite con \includegraphics). Per non scrivere ogni volta “come visibile in figura \ref{…} a pagina \pageref{…}” ho creato un comando \rif:

    `\newcommand{\rif}[1]{figura \ref{#1} a pagina \pageref{#1}\hspace{0.3mm}}`

    Tuttavia mi sembra brutto avere “figura 1.2 a pagina 20” se sono già a pagina 20. In quel caso vorrei scrivere solo figura 1.2. Quindi ho riscritto il comando così:

    `\newcommand{\rif}[1]{
    \ifx\thepage\pageref{#1}
    figura \ref{#1} \hspace{0.3mm}
    \else
    figura \ref{#1} a pagina \pageref{#1}\hspace{0.3mm} \fi}`

    che però non funziona. Qualcuno mi aiuta ? Ultimo problemino se dopo \rif{} c’è un punto a volte viene tagliato, quindi ho provato a mettere hspace{}. Ulteriori soluzioni ?

    Un cordiale saluto a tutti !

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #94320
      Up
      0
      Down
      ::

      Hochwart” post=93902Salve a tutti, non sono riuscito a venire a capo di un problema. Mi scuso se è già stato affrontato ma con le cose trovate in rete non ho ancora risolto.

      Mi capita di avere figure in un testo che latex mette nelle pagine più opportune (inserite con \includegraphics). Per non scrivere ogni volta “come visibile in figura \ref{…} a pagina \pageref{…}” ho creato un comando \rif:

      `\newcommand{\rif}[1]{figura \ref{#1} a pagina \pageref{#1}\hspace{0.3mm}}`

      Tuttavia mi sembra brutto avere “figura 1.2 a pagina 20” se sono già a pagina 20. In quel caso vorrei scrivere solo figura 1.2. Quindi ho riscritto il comando così:

      `\newcommand{\rif}[1]{
      \ifx\thepage\pageref{#1}
      figura \ref{#1} \hspace{0.3mm}
      \else
      figura \ref{#1} a pagina \pageref{#1}\hspace{0.3mm} \fi}`

      che però non funziona. Qualcuno mi aiuta ? Ultimo problemino se dopo \rif{} c’è un punto a volte viene tagliato, quindi ho provato a mettere hspace{}. Ulteriori soluzioni ?

      Un cordiale saluto a tutti !

      Perché non dai un’occhiata al pacchetto varioref? Il tuo codice non funziona e non c’è modo di farlo funzionare, perché non puoi mai usare [tt]\thepage[/tt] per sapere a che pagina ti trovi. L’unico modo è di fare due passate e varioref sa già come.

      Ciao
      Enrico

    • #94321
      Up
      0
      Down
      ::


      Grazie mille per la disponibilità. Grazie al pacchetto da te citato sono riuscito in parte a sistemare con la seguente definizione:
      `\newcommand{\rif}[1]{figura \ref{#1}\vpageref[]{#1}}`

      ma se la figura è nella stessa pagina succede una cosa di questo tipo:
      come visibile in \rif{figura}. Dunque si diceva che… –> come visibile in figura 1.3 . Dunque si diceva che…

      Quello spazio dopo il punto da dove esce ? E contemporaneamente mi chiedo come mai varioref mi metta una spazio all’interno di \vpageref… Quanto mi piacerebbe programmare sto latex…

      Grazie ancora del consiglio !

    • #94322
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Stai usando male il pacchetto varioref: il seguente codice`\documentclass{article}
        \usepackage[italian]{babel}
        \usepackage{kantlipsum}
        \usepackage[italian]{varioref}

        \begin{document}
        \kant[1]

        \begin{figure}
        \caption{Fifua da citare}\label{fig:fig}
        \end{figure}
        \dots\ nella figura~\vref{fig:fig}. Dunque, come si diceva\dots \kant[2]

        \end{document}` fa quello che vuoi senza bisogno di definire \rif, enon mette spazi spuri dopo le citazioni. Provalo.

      • #94323
        Up
        0
        Down
        ::


        Accidenti sono un imbecille, grazie 😉

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

    Go to top