XeTeX, mathspec e Babel

  • Creatore
    Topic
  • #42877
    Up
    0
    Down
    ::


    Il seguente codice compila perfettamente.
    Nel pdf lettere nella prima riga sono testo corsivo, quelle della seconda sono simboli matematici:`\documentclass[a4paper]{article}
    %\usepackage[italian]{babel}
    \usepackage{mathspec}

    \setmathsfont(Digits,Latin,Greek){Adobe Garamond Pro}
    \setmainfont{Adobe Garamond Pro}
    \pagestyle{empty}

    \begin{document}
    \centering
    \textit{defgh}
    \begin{equation}
    de”fgh
    \end{equation}
    \end{document}`In particolare si può notare come le virgolette davanti alla “f” nell’equazione vengano usate per correggere la spaziatura tra i caratteri in modalità matematica, come spiegato nel manuale di mathspec.

    Se si toglie il commento davanti a babel invece questa correzione non avviene e nel pdf compaiono le virgolette.
    Immagino sia un problema simile a questo, causato dall’uso che babel fa delle virgolette nella versione italiana. È possibile rammendare questo comportamento?

    🙂
    LuCa

Visualizzazione 8 filoni di risposte
  • Autore
    Risposte
    • #42878
      Up
      0
      Down
      ::

      Il seguente codice compila perfettamente.
      Nel pdf lettere nella prima riga sono testo corsivo, quelle della seconda sono simboli matematici:`\documentclass[a4paper]{article}
      %\usepackage[italian]{babel}
      \usepackage{mathspec}

      \setmathsfont(Digits,Latin,Greek){Adobe Garamond Pro}
      \setmainfont{Adobe Garamond Pro}
      \pagestyle{empty}

      \begin{document}
      \centering
      \textit{defgh}
      \begin{equation}
      de”fgh
      \end{equation}
      \end{document}`In particolare si può notare come le virgolette davanti alla “f” nell’equazione vengano usate per correggere la spaziatura tra i caratteri in modalità matematica, come spiegato nel manuale di mathspec.

      Se si toglie il commento davanti a babel invece questa correzione non avviene e nel pdf compaiono le virgolette.
      Immagino sia un problema simile a questo, causato dall’uso che babel fa delle virgolette nella versione italiana. È possibile rammendare questo comportamento?

      🙂
      LuCa

      `%\usepackage[italian]{babel}% NON con XeLaTeX
      \usepackage{polyglossia}
      \setmainlanguage{italian}`
      Ciao
      Enrico

    • #42879
      Up
      0
      Down
      ::

      `%\usepackage[italian]{babel}% NON con XeLaTeX
      \usepackage{polyglossia}
      \setmainlanguage{italian}`
      Ciao
      Enrico

      Grazie

      🙂
      LuCa

    • #42880
      Up
      0
      Down
      ::


      Bene.
      Risolto questo problema preliminare veniamo al sodo. 🙂

      Vorrei avere un documento che si può compilare contemporaneamente con pdflatex e con xelatex.
      Visto che alcune parti del preambolo devono essere diverse mi sono fatto aiutare dal pacchetto “ifxetex”, caricato alla tex-way per altri motivi.
      Il problema si pone quando il pacchetto mathspec mi constringe ad introdurre le virgolette per correzioni di spaziatura nelle formule: tali virgolette non dovrebbero esserci quando compilo con pdflatex.
      Dopo aver litigato abbondantemente con babel sono arrivato al seguente risultato:`\documentclass[a4paper]{article}
      \input ifxetex.sty
      \ifxetex
      \usepackage{mathspec}
      \usepackage{polyglossia}
      \setmainlanguage{italian}
      \setmathsfont(Digits,Latin,Greek){Adobe Garamond Pro}
      \setmainfont[Mapping=tex-text]{Adobe Garamond Pro}

      \let\origtilde=~
      \let\origquote=”
      \catcode`\~=\active
      \def~#1{\ifmmode\origquote#1\else\origtilde#1\fi}

      \else
      \usepackage[utf8]{inputenc}
      \usepackage[T1]{fontenc}
      \usepackage[italian]{babel}

      \let\origtilde=~
      \catcode`\~=\active
      \def~{\ifmmode\relax\else\origtilde\fi}
      \fi

      \begin{document}
      \centering
      \textit{de~fgh}
      \begin{equation}
      de~fgh
      \end{equation}
      \end{document}`In pratica utilizzo la tilde invece che le virgolette nel codice (non ha altri usi nel modo matematico giusto?) e ridefinisco questa come fosse le virgolette nel caso si compili con xelatex e come fosse un bel \relax nel caso si compili con pdflatex.
      Secondo voi è un approcio che può funzionare?

      Esiste un modo alternativo per non passare attraverso la definizione della ~, ridefinendo direttamente ” ?

      🙂
      LuCa

    • #42881
      Up
      0
      Down
      ::

      Bene.
      Risolto questo problema preliminare veniamo al sodo. 🙂

      Vorrei avere un documento che si può compilare contemporaneamente con pdflatex e con xelatex.
      Visto che alcune parti del preambolo devono essere diverse mi sono fatto aiutare dal pacchetto “ifxetex”, caricato alla tex-way per altri motivi.
      Il problema si pone quando il pacchetto mathspec mi constringe ad introdurre le virgolette per correzioni di spaziatura nelle formule: tali virgolette non dovrebbero esserci quando compilo con pdflatex.
      Dopo aver litigato abbondantemente con babel sono arrivato al seguente risultato:`\documentclass[a4paper]{article}
      \input ifxetex.sty
      \ifxetex
      \usepackage{mathspec}
      \usepackage{polyglossia}
      \setmainlanguage{italian}
      \setmathsfont(Digits,Latin,Greek){Adobe Garamond Pro}
      \setmainfont[Mapping=tex-text]{Adobe Garamond Pro}

      \let\origtilde=~
      \let\origquote=”
      \catcode`\~=\active
      \def~#1{\ifmmode\origquote#1\else\origtilde#1\fi}

      \else
      \usepackage[utf8]{inputenc}
      \usepackage[T1]{fontenc}
      \usepackage[italian]{babel}

      \let\origtilde=~
      \catcode`\~=\active
      \def~{\ifmmode\relax\else\origtilde\fi}
      \fi

      \begin{document}
      \centering
      \textit{de~fgh}
      \begin{equation}
      de~fgh
      \end{equation}
      \end{document}`In pratica utilizzo la tilde invece che le virgolette nel codice (non ha altri usi nel modo matematico giusto?) e ridefinisco questa come fosse le virgolette nel caso si compili con xelatex e come fosse un bel \relax nel caso si compili con pdflatex.
      Secondo voi è un approcio che può funzionare?

      Esiste un modo alternativo per non passare attraverso la definizione della ~, ridefinendo direttamente ” ?

      🙂
      LuCa

      \shorthandoff{“} dopo \begin{document}, se usi solo l’italiano.

      Ciao
      Enrico

    • #42882
      Up
      0
      Down
      ::

      \shorthandoff{“} dopo \begin{document}, se usi solo l’italiano.

      Ciao
      Enrico

      No, non funziona.
      \shorthandoff non viene definito da Polyglossia e pertanto quando compilo con xelatex dà errore. Per ovviare a questo ho provato a mettere \AtBeginDocument{\shorthandoff{“}} nel blocco di testo che viene processato durante la compilazione con pdflatex, ma in questo caso non si ha il comportamento voluto. È come se venisse ignorata la ridefinizione`\catcode`\”=\active
      \def”{\ifmmode\relax\else\origquote\fi}` Nel pdf compaiono le virgolette presenti nell’ambiente matematico che dovrebbero venir sostituite da \relax .

      `\documentclass[a4paper]{article}
      \input ifxetex.sty

      \ifxetex
      % CODICE PER XELATEX
      \usepackage{mathspec}
      \usepackage{polyglossia}
      \setmainlanguage{italian}
      \setmathsfont(Digits,Latin,Greek){Adobe Garamond Pro}
      \setmainfont[Mapping=tex-text]{Adobe Garamond Pro}

      \else
      % CODICE PER PDFLATEX
      \usepackage[utf8]{inputenc}
      \usepackage[T1]{fontenc}
      \usepackage[italian]{babel}

      \let\origquote=”
      \catcode`\”=\active
      \def”{\ifmmode\relax\else\origquote\fi}
      \AtBeginDocument{\shorthandoff{“}}
      \fi

      \begin{document}
      \centering
      \textit{de”fgh}
      \begin{equation}
      de”fgh
      \end{equation}
      \end{document}`:)
      LuCa

    • #42883
      Up
      0
      Down
      ::

      \shorthandoff{“} dopo \begin{document}, se usi solo l’italiano.

      Ciao
      Enrico

      No, non funziona.
      \shorthandoff non viene definito da Polyglossia e pertanto quando compilo con xelatex dà errore. Per ovviare a questo ho provato a mettere \AtBeginDocument{\shorthandoff{“}} nel blocco di testo che viene processato durante la compilazione con pdflatex, ma in questo caso non si ha il comportamento voluto. È come se venisse ignorata la ridefinizione`\catcode`\”=\active
      \def”{\ifmmode\relax\else\origquote\fi}` Nel pdf compaiono le virgolette presenti nell’ambiente matematico che dovrebbero venir sostituite da \relax .

      `\documentclass[a4paper]{article}
      \input ifxetex.sty

      \ifxetex
      % CODICE PER XELATEX
      \usepackage{mathspec}
      \usepackage{polyglossia}
      \setmainlanguage{italian}
      \setmathsfont(Digits,Latin,Greek){Adobe Garamond Pro}
      \setmainfont[Mapping=tex-text]{Adobe Garamond Pro}

      \else
      % CODICE PER PDFLATEX
      \usepackage[utf8]{inputenc}
      \usepackage[T1]{fontenc}
      \usepackage[italian]{babel}

      \let\origquote=”
      \catcode`\”=\active
      \def”{\ifmmode\relax\else\origquote\fi}
      \AtBeginDocument{\shorthandoff{“}}
      \fi

      \begin{document}
      \centering
      \textit{de”fgh}
      \begin{equation}
      de”fgh
      \end{equation}
      \end{document}`:)
      LuCa

      E \ifxetex lo butti? 🙂
      `\begin{document}
      \ifxetex\else
      \shorthandoff{“}
      \fi`
      Ciao
      Enrico

    • #42884
      Up
      0
      Down
      ::

      E \ifxetex lo butti? 🙂
      `\begin{document}
      \ifxetex\else
      \shorthandoff{“}
      \fi`
      Ciao
      Enrico

      🙁 no, non funziona ancora. Questo codice:`\documentclass[a4paper]{article}
      \input ifxetex.sty

      \ifxetex
      \usepackage{mathspec}
      \usepackage{polyglossia}
      \setmainlanguage{italian}
      \setmathsfont(Digits,Latin,Greek){Adobe Garamond Pro}
      \setmainfont[Mapping=tex-text]{Adobe Garamond Pro}

      \else
      \usepackage[utf8]{inputenc}
      \usepackage[T1]{fontenc}
      \usepackage[italian]{babel}

      \let\origquote=”
      \catcode`\”=\active
      \def”{\ifmmode\relax\else\origquote\fi}

      \fi
      \pagestyle{empty}

      \begin{document}
      \ifxetex\else
      \shorthandoff{“}
      \fi

      \centering
      \textit{de”fgh}
      \[
      de”fgh
      \]
      \end{document}`
      compilato con pdflatex produce:

      Invece dovrebbe produrre:

      LuCa

    • #42885
      Up
      0
      Down
      ::

      E \ifxetex lo butti? 🙂
      `\begin{document}
      \ifxetex\else
      \shorthandoff{“}
      \fi`
      Ciao
      Enrico

      🙁 no, non funziona ancora.

      E certo che non funziona: metti troppo presto la definizione di ” attivo e \shorthandoff{“} lo disattiva. Diamo anche una buona ripulita:
      `\documentclass[a4paper]{article}
      \usepackage{ifxetex}

      \ifxetex
      \usepackage{mathspec}
      \usepackage{polyglossia}
      \setmainlanguage{italian}
      \setmathsfont(Digits,Latin,Greek){Hoefler Text}
      \setmainfont[Mapping=tex-text]{Hoefler Text}
      \else
      \usepackage[utf8]{inputenc}
      \usepackage[T1]{fontenc}
      \usepackage[italian]{babel}
      \fi

      \DeclareRobustCommand\activequote{\ifmmode\else”\fi}
      \pagestyle{empty}

      \begin{document}
      \ifxetex\else
      \shorthandoff{“}
      \catcode`\”=\active
      \let”\activequote
      \fi

      \centering
      \textit{de”fgh}
      \[
      de”fgh
      \]
      \end{document}`
      Ciao
      Enrico

    • #42886
      Up
      0
      Down
      ::


      Ok, ora è perfetto! 🙂
      Grazie

      LuCa

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

Go to top