Output LaTeX e XeLaTeX

  • Creatore
    Topic
  • #95381
    PM
      Up
      0
      Down
      ::


      Salve, dovendo scrivere diverse pagine con molte lettere greche, simboli matematici, trovo irrinunciabile poter editare caratteri utf8 direttamente nel testo. All’inizio usavo semplicemente

      `
      \usepackage[utf8x]{inputenc}
      \SetUnicodeOption{mathletters}
      \SetUnicodeOption{autogenerated}
      `

      e tutto funzionava (quasi) al meglio: rimaneva il problema che espressioni tipo

      `
      x_α
      `

      non venivano accettate, ma andavano scritte come

      `
      x_{α}
      `

      inoltre, ciò che era più grave, la sua incompatibilità con BibLaTeX, a cui pure mi era difficile rinunciare.
      Successivamente ho visto che XeLaTeX poteva fare al caso mio: basta aggiugere nel preambolo il pacchetto “unicode-math” . Tutto ciò mi pare molto funzionale, tuttavia rimangono dei problemi:

      1) Il risultato di un documento compilato con (Pdf)LaTeX e con XeLaTeX è qualitativamente diverso indipendentemente dalla presenza del pacchetto “unicode-math”: come esempio
      ho provato il a compilare il seguente documento (minimale senza aggiunta di alcun pacchetto non canonico) con PdfLaTeX

      `
      \documentclass[a4paper,10pt]{article}
      \usepackage[utf8]{inputenc}
      \usepackage{lipsum}

      %opening
      \title{Una prova}
      \author{PMi}

      \begin{document}

      \maketitle

      \begin{abstract}
      \lipsum[1]
      \end{abstract}

      \section{Prima sezione}
      \lipsum[1-10]
      \end{document}
      `

      e la seguente “traduzione” in XeLaTeX (sempre minimale):

      `
      \documentclass[a4paper,10pt]{article}
      \usepackage{fontspec}
      \usepackage{lipsum}

      %opening
      \title{Una prova}
      \author{PM}
      \begin{document}

      \maketitle

      \begin{abstract}
      \lipsum[1]
      \end{abstract}

      \section{Prima sezione}
      \lipsum[1-10]
      \end{document}
      `

      Il corpo del documento sembra il solito, la segmentazione delle righe la solita, tuttavia il documento compilato con PdfLaTeX appare più snello ed elegante, nell’altro i caratteri sono più marcati, spessi e meno nitidi, col risultato che il documento sembri più sporco.

      2) Dovendo scrivere usando alcuni pacchetti (come ad esempio quelli del JHEP): http://jhep.sissa.it/jhep/help/JHEP_TeXclass.jsp
      ho notato che addirittura cambia la segmentazione del testo (va a capo in punti diversi) e rende l’output veramente sgradevole.

      Vorrei cortesemente sapere

      1) Se c’è modo di impostare XeLaTeX perché, almeno nei documenti minimali, dia un output gradevole cone PdfLaTeX;
      2) Qualche suggerimento su come poter integrare XeLaTeX su un generico pacchetto (pensando ad esempio a quello sopra linkato);
      3) Eventualmente se ci fosse modo di convertire i caratteri utf8 in comandi LaTeX standard (i.e. α che diventi \alpha) al momento della compilazione LaTeX e non frapponendo un precompilatore che faccia queste sostituzioni, in modo da preservare il reverse search da pdf a sorgente (cliccando sul pdf, l’editor posiziona alla riga sorgente interessata)

      Ringrazionadovi preventivamente

      P.M.

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


          Non mi riuslta che i font Latin Modern OpennType siano peggiori di font Computer Modern; certo non sono gli stessi. Nel tuo esempio minimo eseguito con PdfLATeX, usi i font Computer Modern, che hanno la codifica OT1, e non contengono lettere accentate (co il testo generato con il pacchetto Lipsum non usi lettere accentate) ma le metriche dei caratteri sono diverse dall’esempio eseguito con xeLaTeX dove i font di default sono I Latin Modern OpenType che hanno metriche diverse da quelle dei CM , ma contengono tutte le lettere accentate, e i simboli speciali, ma non contengono il greco, se no il greco matematico, ciò i simboli matematici rappresentati da lettere greche.

          Personaemete fari almeno il tentivo di confrontare il tuo esempio minimo con quelloc he otterresti impostando nel file per pdfLaTeX le righe {code]\usepackage[utf8]{inputenc
          \usepackage[T1]{fontenc}
          \usepackage{lmodern}[/code]dopo di che puoi commentare le due soluzioni e vedere se sono simili, diverse, più nitide, eccetera.

          Poi prenderei un testo in italiano con molte parole accentate, anche un testo privo di senso come è privo di senso il latinorum di lipsum, contenente parole di diverse lunghezze, e che venga compostocon almeno una decina di righe; seleziona l’italiano come opzione per babel per i due esempi minimi da eseguire con pdfLaTeX, e imposta l’italiano come main language a polyglossia.Poi ocmpilao co i Computer Moderm. esamina i tre risultati; e vedrai che essi avranno aspetti diversi anche per che che riguarda la cesura in fin di riga, perché gli accenti con i Computer Modern riducono le possibilità di sillabazione; invece con i Latin Moder codificati T1, oppure con quelli OpenType i risultati saranno assai simili, se non identici.

          A questo punto sta a te decidere che cosa fare; quale programma e quali font usare; per lo scopo che hai descritto, direi che il problema di scrivere β invece di \beta nel testo matematico del file soregente non è un vero problema; cambiare tastiera (graficamante, non innestandone un altra materiale), scrivere la lettera greca, e poi ricambiare tastiera, è più lungo che scrivee \beta.

          Il problema della ricerca invers (cliccare sul PDF, er andare al punto corrispondente del file TeX sorgente, viene eseguito assolutamente nello stesso modo, anche perché sia la ricerca diretta sia la ricerca inversa non sono così precise, ma tip portano da una finestra all’altra sempre cn una certa approssimazione. Di solito la matematica non è sincronizzata, quindi cliccando su una finestra il cursore si psota nell’altra evidenziando una parte di testo corrispondente (e formula), ma non sul carattere preciso che hai cliccato. Se unsi un buon o shell editor con il visualizzatore PDF integrato, com TeXShop. TeXworks, TeXstudio e alcuni altri specifici per il Mac, come TeXpad o TeXnicle) la sincronizzazione è basata sullo stesso programma e produce gli stessi risultati.

        • #95383
          Up
          0
          Down
          ::

          PM” post=95002
          3) Eventualmente se ci fosse modo di convertire i caratteri utf8 in comandi LaTeX standard (i.e. α che diventi \alpha) al momento della compilazione LaTeX e non frapponendo un precompilatore che faccia queste sostituzioni, in modo da preservare il reverse search da pdf a sorgente (cliccando sul pdf, l’editor posiziona alla riga sorgente interessata)

          Non sono sicuro di aver capito esattamente quello che vai cercando…
          Tu vuoi che (ad esempio) cliccando alt+h sulla tastiera a schermo compaia l’equivalente latex di ∆ (\Delta)?

          Se è questo che cerchi…molti editor hanno delle opzioni di autocompletamento che si occupano appunto di fare questo tipo di cose. Di default l’autocompletamento temo sia disattivato, ma dovresti poter attivarlo e modifcare il suo comportamento in base alle tue esigenze (ovviamente questo non crea problemi con il reverse search).

          Sul resto lascio la parola agli altri che non so dove mettere le mani 🙂

        • #95384
          PM
            Up
            0
            Down
            ::


            Grazie per le pronte risposte.
            Per quanto riguarda il cambio di tastiera, esso non è necessario in quanto, avendo rimappato la tastiera, mi basta premer AltGr + b per ottenere β ed è un’operazione immediata. Naturalmente il tempo che si risparmia non è molto, però, in questo modo io riesco a fare dei passaggi matematici direttamente in latex perché le lettere mi appaiono direttamente sullo schermo, invece, nell’altro modo mi è molto più difficile. Dunque, oltre che risparmiare (un po’) di tempo, risparmio spazio sulla mia scrivania (che peraltro è assente perché viaggio spesso in treno) e carta.
            Per quanto riguarda la differenza oggettiva che si ha nel vedere i due testi (segmentazione esclusa), essa dipende dal rendering, in quanto su altri computer, la differenza è quasi assente.

            Farò qualche prova. Grazie mille.

          • #95385
            PM
              Up
              0
              Down
              ::


              Confermo che ho provato ad includere il pacchetto lmodern, nel documento compilato in PdfLaTeX e, rendering a parte, l’effetto è il solito rispetto all’altro. È possibile fare usare a XeLaTeX lo stesso font che usa LaTeX (CM)?

            • #95386
              OldClaudio
              Partecipante
                Up
                0
                Down
                ::


                Il CM che usa pdflatex non dovrebbe mai essere usato da nessuno che scriva anche solo una parola con un diacritico. Questa affermazione è una affermazione assoluta, anche se contiene un condizionale.:smile:

                Premetto che non capisco che cosa ci trovi di meglio nell’output usando i CM rispetto agli LM. Tuttavia non entro nei gusti altrui. qando dico che i CM non dovrebbero essere usati, mi riferisco al fatto che la cesura in fin di riga con gli accenti sovrapposti, invece che con i carattarei già disegnati con il ooro accento, per me è una ragiona sufficiente per non prenderli nemmeno in considerazione. Ma de gustibus…

                Allora si possono usare i CM anche con XeLaTeX? sì e le strade sono due.

                1) Non usi il pacchetto fontspec e per quel che riguarda i font li tratti nel preambolo come se si trattasse di un file PDF, poi magari usi polyglossia per la gestione delle lingue; ma se vuoi puoi usare al suo post babel; in altre parole prendi il file come lo prepareresti se scrivessi in inglese (senza nemmeno una citazione di un autore non inglese e con il cognome contenente un accento), ma invece di compilaro con pdflatex, lo compili con xelatex.

                2) usi xelatex come si deve ma invece di usare i Latin Modern di default usi i CMU (computer Modern Unicode); leggiti al guida di fontspec epr sapere come caricare i vari font con grazie, senza grazie, monospaziati e compagnia e usa il programma otfinfo per sapre il nome, i nomi delle famiglie che vuoi usare nel tuo documento. I CMU contengono anche il greco e il cirillico, iltre ai caratteri dell’alfabeto IPA. e migliaia di altri simboli; per la matematica però devi continuanare ad usare i Latin Modern Math, perché non mi risulta che i cmu abbiano le pagine relative alla patematica conformi alle necessità di un matematico medio e a quelle del mark-up matematico di LaTeX.

                Consiglio mio personale e non richiesto da te: non seguire la strada 1).

              • #95387
                PM
                  Up
                  0
                  Down
                  ::


                  Seguendo il consiglio di OldClaudio, ho deciso di intraprendere la strada 2). Seguendo degli esempi su internet ho usato

                  `
                  \setmainfont{CMU Serif}
                  `

                  tuttavia la compilazione non è andata a buon fine. Il messaggio di errore ottenuto è

                  `
                  The font “CMU Serif” cannot be found \setmainfont{CMU Serif}
                  `

                  premetto che ho una distro linux con TUTTI i pacchetti per tex & co istallati…
                  come posso risolvere il problema?

                • #95388
                  OldClaudio
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    E la cache dei font è aggiornata?
                    Perché, se hai TeX Live completa e aggiornata, essi si trovano nella cartella …/texlive/2014/dexmf-distr/fonts/opentype/cm-unicode.
                    Perché Linux li vada è necessario aggiornare la cache dei font; come si faccia con la tua versione di Linux non lo saprei, ma tu certamente sai dove guardare per trovare la giusta informazione al fine di eseguire questa operazione.

                  • #95389
                    Up
                    0
                    Down
                    ::


                    A me questo codice non dà problemi:
                    `%!TEX TS-program = xelatex
                    %!TEX encoding = UTF-8 Unicode

                    \documentclass{article}

                    \usepackage{fontspec}
                    \setmainfont{CMU Serif}

                    \begin{document}

                    Ciao.

                    \end{document}`
                    In passato ho avuto gli stessi problemi del nostro amico con altri font, ma solo perché il nome che scrivevo nell’argomento di [tt]\fontspec[/tt] era evidentemente sbagliato. Bisogna inserire il nome con cui il font è noto al sistema operativo. Su (Mac) OS X c’è l’applicazione Libro Font che risolve i problemi, ma a volte mi è capitato che nemmeno quel nome fosse corretto. Ho risolto con qualche prova, e talvolta è bastato levare Serif, per esempio.

                    Ciao
                    Tommaso

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

                Go to top