Preambolo Universale

  • Creatore
    Topic
  • #10244
    Up
    0
    Down
    ::


    Salve ragazzi,
    settimana dopo settimana stò imparando (grazie soprattutto alle vostre guide, nonchè agli innumerevoli Topic) ad utilizzare LaTeX.
    Ieri leggedo “LaTeX PDF HOWTO” ho trovato il seguente preambolo (definito universale):

    \ifx\pdfoutput\undefined
    \documentclass[12pt,a4paper]{article}
    \usepackage[dvips]{graphicx}
    %\usepackage{psfig}
    %\usepackage{epsfig}
    \RequirePackage[dvipdfm,hyperindex]{hyperref}
    %\RequirePackage[dvipdfm,colorlinks,hyperindex]{hyperref}
    \else
    \documentclass[pdftex,12pt,a4paper]{article}
    \usepackage[pdftex]{graphicx}
    \DeclareGraphicsExtensions{.pdf,.png,.jpg,.mps}
    \RequirePackage[hyperindex]{hyperref}
    %\RequirePackage[colorlinks,hyperindex]{hyperref}
    \usepackage{thumbpdf}
    \fi

    L’idea mi sembra ottima, però credo che ormai questo preambolo sia un pò vecchiotto (nel senso che viene ancora specificato il driver dvips piuttosto che pdflatex..);
    data la mia scarsa conoscenza in materia vi chiedo per favore se potete dare qualche suggerimento a proposito.
    Magari dei consigli per un suo miglioramento, mantenendo sempre come obbiettivo la creazione di un ps e di un pdf di ottima quallità.

    Vi rigrazio in anticipo

Visualizzazione 5 filoni di risposte
  • Autore
    Risposte
    • #10245
      Up
      0
      Down
      ::


      Il preambolo è un po’ vecchiotto, ma direi che è completamente funzionante anche ora; quello che è cambiato da quando è stato scritto quel preambolo ad oggi è che pacchetti come graphicx e hyperref sono diventati abbastanza furbi per controllare, automaticamente, se il documento è stato compilato con latex o con pdflatex e quindi caricando il driver corretto (rispettivamente, dvips e pdftex). Quel preambolo,però, fa qualcosa in più di rendere un documento compilabile in due sistemi, perché carica pacchetti specifici per ogni tipo di compilatore.

      Ciao.

    • #10246
      Up
      0
      Down
      ::

      Il preambolo è un po’ vecchiotto, ma direi che è completamente funzionante anche ora; quello che è cambiato da quando è stato scritto quel preambolo ad oggi è che pacchetti come graphicx e hyperref sono diventati abbastanza furbi per controllare, automaticamente, se il documento è stato compilato con latex o con pdflatex e quindi caricando il driver corretto (rispettivamente, dvips e pdftex). Quel preambolo,però, fa qualcosa in più di rendere un documento compilabile in due sistemi, perché carica pacchetti specifici per ogni tipo di compilatore.

      Non è del tutto corretto. La riga \ifx\pdfoutput\undefined non è capace di distinguere fra latex e pdflatex, come sarebbe l’intenzione, almeno con le più recenti distribuzioni.
      `\documentclass[12pt,a4paper]{article}
      \usepackage{ifpdf}
      \usepackage{graphicx}
      \ifpdf
      \usepackage[hyperindex]{hyperref}
      \usepackage{thumbpdf}
      \else
      \usepackage[dvipdfm,hyperindex]{hyperref}
      \fi`
      Anche se dvipdfm mi sembra un progetto quasi defunto. Il distillatore pdf di Ghostscript funziona bene. Il comando \DeclareGraphicsEstensions per pdflatex è del tutto superfluo. Non è bene usare \RequirePackage in documenti, ma solo in pacchetti. Un’eccezione potrebbe essere proprio per il pacchetto ifpdf se vogliamo dare opzioni diverse a \documentclass:`\RequirePackage{ifpdf}
      \ifpdf
      \documentclass[

    • #10247
      Up
      0
      Down
      ::


      con il latex di distribuzione miktex 2.5.* il codice che hai indicato non funziona (almeno a me) perchè texify non è in grado di distinguere tra latex e pdflatex. con il comando texify ottenevo sempre un pdf e un errore perchè yap non aveva alcun dvi da visulaizzare.
      correggendo il codice così invece è tornato tutto a funzionare come prima:

      `\newif\ifpdf
      \ifx\pdfoutput\undefined
      \pdffalse
      \else
      \ifnum\pdfoutput=1
      \pdftrue
      \else
      \pdffalse
      \fi
      \fi
      \ifpdf
      \documentclass[pdftex,12pt,a4paper,italian,oneside]{report}
      \usepackage[pdftex]{graphicx}
      \DeclareGraphicsExtensions{.png,.pdf,.jpg}
      \RequirePackage[colorlinks,hyperindex]{hyperref}
      \usepackage{thumbpdf} \else

      \documentclass[12pt,a4paper,italian,oneside]{report}
      \usepackage[dvips]{graphicx}
      \RequirePackage[dvipdfm,hyperindex]{hyperref}
      \fi`

    • #10248
      Up
      0
      Down
      ::

      con il latex di distribuzione miktex 2.5.* il codice che hai indicato non funziona (almeno a me) perchè texify non è in grado di distinguere tra latex e pdflatex. con il comando texify ottenevo sempre un pdf e un errore perchè yap non aveva alcun dvi da visulaizzare.
      correggendo il codice così invece è tornato tutto a funzionare come prima:
      `\newif\ifpdf
      \ifx\pdfoutput\undefined
      \pdffalse
      \else
      \ifnum\pdfoutput=1
      \pdftrue
      \else
      \pdffalse
      \fi
      \fi
      \ifpdf
      \documentclass[pdftex,12pt,a4paper,italian,oneside]{report}
      \usepackage[pdftex]{graphicx}
      \DeclareGraphicsExtensions{.png,.pdf,.jpg}
      \RequirePackage[colorlinks,hyperindex]{hyperref}
      \usepackage{thumbpdf} \else

      \documentclass[12pt,a4paper,italian,oneside]{report}
      \usepackage[dvips]{graphicx}
      \RequirePackage[dvipdfm,hyperindex]{hyperref}
      \fi`

      Che significa “non distingue fra latex e pdflatex”? Da quello che ho letto sulla pagina di manuale, per compilare in pdflatex devi passare l’opzione –pdf. Il tuo codice iniziale è molto simile a quello di ifpdf, ma anche meno robusto. Lancio la palla a qualche sfortunato che è costretto a usare MikTeX. 😀

      Una versione più robusta del codice sarebbe
      `\newif\ifpdf
      \ifx\pdfoutput\undefined
      \else
      \ifx\pdfoutput\relax
      \else
      \ifnum\pdfoutput<1 %
      \else
      \pdftrue
      \fi
      \fi
      \fi`
      C’è un test in più e si tiene conto che \pdfoutput potrebbe avere anche valori diversi da 1; se è maggiore di zero, pdflatex produce il pdf, altrimenti dvi.

      Insisto che passare pdftex ai pacchetti e definire le estensioni dei file grafici è perfettamente inutile. E ti ripeto di non usare \RequirePackage nei documenti, potresti incorrere in guai con la legge che ammette solo pochissimi comandi con maiuscole e minuscole; guarda che potresti ricevere una visita della Thought Police.

      Ciao
      Enrico

    • #10249
      max.guitar
      Partecipante
        Up
        0
        Down
        ::

        Il comando \DeclareGraphicsEstensions per pdflatex è del tutto superfluo. Non è bene usare \RequirePackage in documenti, ma solo in pacchetti. Un’eccezione potrebbe essere proprio per il pacchetto ifpdf se vogliamo dare opzioni diverse a \documentclass:`\RequirePackage{ifpdf}
        \ifpdf
        \documentclass[

        Salve,
        esiste una procedura per includere nel ciclo “If – Else” di “ifpdf” anche il driver “dvips”?
        In questo modo si avrebbero a disposizione tutte le opzioni di compilazione.

        Grazie per i preziosi aiuti!
        _____________________
        Saluti: Max.

      • #10250
        Up
        0
        Down
        ::

        Il comando \DeclareGraphicsEstensions per pdflatex è del tutto superfluo. Non è bene usare \RequirePackage in documenti, ma solo in pacchetti. Un’eccezione potrebbe essere proprio per il pacchetto ifpdf se vogliamo dare opzioni diverse a \documentclass:`\RequirePackage{ifpdf}
        \ifpdf
        \documentclass[

        Salve,
        esiste una procedura per includere nel ciclo “If – Else” di “ifpdf” anche il driver “dvips”?
        In questo modo si avrebbero a disposizione tutte le opzioni di compilazione.

        Fra \ifpdf e \else e fra \else e \fi puoi mettere tutto quello che vuoi.

        Ciao
        Enrico

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

    Go to top