- Questo topic ha 6 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 4 anni, 3 mesi fa da
OldClaudio.
-
CreatoreTopic
-
16 Maggio 2022 alle 17:03 #120975::
Salve a tutti!Sto tentando di scrivere un testo .tex che sia compilabile sia con pdflatex, sia con lualatex.
Questo testo contiene anche delle formule matematiche nei titoli.
Quando questi titoli appaiono nell’indice, pdflatex compila correttamente, lualatex si inchioda con l’errore:
`! Improper alphabetic constant.
\times
l.59 …ione in $\N: \quad \left(\N;~\times\right)$}`L’esempio che produce questo comportamento è:
`% !TEX encoding = UTF-8 Unicode
\documentclass{memoir}\RequirePackage{amsmath, amssymb, amsthm}
\RequirePackage[italian]{babel}
\usepackage{iftex}\ifpdftex\typeout{************* PDFTeX*****************}
\RequirePackage[utf8]{inputenc}
\RequirePackage{stix2} % font\else
\ifluatex\typeout{************* LuaLaTeX *****************}
\usepackage{fontspec}
\setmainfont{STIX}[Ligatures=TeX]
\usepackage[math-style=ISO]{unicode-math}
\setmathfont{STIX Two Math}
\fi
\fi\RequirePackage[colorlinks, hyperindex, pagebackref,
linkcolor=RoyalBlue, filecolor=RoyalBlue,
citecolor = black, urlcolor=RoyalBlue]{hyperref}
\RequirePackage[usenames, dvipsnames]{xcolor}\newcommand{\N}{\mathbb{N}}
\begin{document}
\setcounter{tocdepth}{2}
\tableofcontents\chapter{Numeri naturali}
\section{L'origine dei numeri}
\label{sec:nat_origine}\section{I numeri naturali}
\label{sec:nat_naturali}\section{Operazioni con i numeri naturali}
\label{sec:nat_operazioni}\subsection{Proprietà delle operazioni}
\subsection{Addizione in $\N: \quad \left(\N;~+\right)$}
\subsubsection{Funzione addizione}
\subsubsection{Proprietà dell'addizione}
\subsection{Sottrazione in $\N: \quad \left(\N;~-\right)$}
\subsubsection{Funzione sottrazione}
\subsubsection{Proprietà della sottrazione}
\subsection{Moltiplicazione in $\N: \quad \left(\N;~\times\right)$}
La moltiplicazione è legata all'azione di contare oggetti disposti in uno
schieramento rettangolare.\end{document}`
Qualche indicazione per risolvere il problema?
Grazie per l’attenzione.
Daniele
-
CreatoreTopic
-
AutoreRisposte
-
-
16 Maggio 2022 alle 18:51 #120976
-
16 Maggio 2022 alle 21:50 #120977::
L’informazione di @robitex è parzialmente giusta; in relatà ha dimenticato il gruppo che racchiude il seocndo argomento di \texorpdfstring. Vedi pagina 25 della documentazione di hyperref co il solito comando texdoc hyerref.In genrale è epricoloso mettere dei comandi sviluppabili nei bookmarks; nel tuo caso il comando sviluppabile sarebbe \times; Io, nel tuo esempio modificato ho tolto la chiamata a inputenc nel ramo relativo a pdfLaTeX (come sia ora (da tre anni almento) la codifica UTF-8 è di default anche per pdfLaTeX, oltre che per Lua e Xe Latex.
È una piccola innocente disattenzione quella di specificare la chiamata a inputenc se l’opzione è utf8, perché in questo caso ci pensa il nucleo di LaTeX a non caricare il pacchetto.Capisco benissimo che i vari \RequirePackage, dovrebbero essere dei normali \usepackage, perché hai semplicemente copiato quelle chiamate dal tuo file .sty che usi per comporre il tuo testo e le hai incollate in questo EMC. @robitex ha fatto bene a segnalrti le piccole imprecisioni.
Tuttavia veniamo al nodo della questione; nel secondo argomento di \texorpdfastirng ho toltola matematica e ho sostituito il segno di moltiplicazione con una X maiuscola testuale senza grazie; matematicamante parlando la cosa non va bene, ma il bookmark è completo, comprensibile lo stesso e funziona come link alla sezione giusta.
Se vuoi cheil segno di moltiplicazione sia corretto, dovresti caricarlo direttamente come glifo di un code point di Unicode relativo ai font matematici STTIXS Toe Math che carichi; la ricerca del cose point di quel glifo non è cosa facile; è piuttosto laboriosa. Potresti cavartela usando il pacchetto unicodefonttable di cui si parla anche nel prossimo numero di ArsTeXnica che è ancora in lavorazione, ma appena prontosarà accessibile per essere scaricato dai soci del GuIT. Oppure dei il comando texdoc unicodefonttable da terminale e cerchi di decifrare la documentazione direi un po’ scarna, ma sufficiente se la leggi con attenzione,
`% !TEX encoding = UTF-8 Unicode
\documentclass{memoir}\RequirePackage{amsmath, amssymb, amsthm}
\RequirePackage[italian]{babel}
\usepackage{iftex}\ifpdftex\typeout{************* PDFTeX*****************}
% \RequirePackage[utf8]{inputenc} % CB <-- non serve nemmeno per pdfLaTeX \RequirePackage{stix2} % font \else \ifluatex\typeout{************* LuaLaTeX *****************} \usepackage{fontspec} \setmainfont{STIX}[Ligatures=TeX] \usepackage[math-style=ISO]{unicode-math} \setmathfont{STIX Two Math} \fi \fi \RequirePackage[colorlinks, hyperindex, pagebackref, linkcolor=RoyalBlue, filecolor=RoyalBlue, citecolor = black, urlcolor=RoyalBlue]{hyperref} \RequirePackage[usenames, dvipsnames]{xcolor} \newcommand{\N}{\mathbb{N}} \begin{document} \setcounter{tocdepth}{2} \tableofcontents \chapter{Numeri naturali} \section{L'origine dei numeri} \label{sec:nat_origine} \section{I numeri naturali} \label{sec:nat_naturali} \section{Operazioni con i numeri naturali} \label{sec:nat_operazioni} \subsection{Proprietà delle operazioni} \subsection{Addizione in $\N: \quad \left(\N;~+\right)$} \subsubsection{Funzione addizione} \subsubsection{Proprietà dell'addizione} \subsection{Sottrazione in $\N: \quad \left(\N;~-\right)$} \subsubsection{Funzione sottrazione} \subsubsection{Proprietà della sottrazione} \subsection{Moltiplicazione in \texorpdfstring{$\N: \quad \left(\N;~\times\right)$}{N: (N; \textsf{X})}} La moltiplicazione è legata all'azione di contare oggetti disposti in uno schieramento rettangolare. \end{document}` -
17 Maggio 2022 alle 6:16 #120978::
Innanzi tutto grazie per le indicazioni.È bello perché le vostre risposte e i miei esperimenti mi hanno fatto sorgere più domande di quante ne avessi all’inizio.
Il codice di EMC ora è:
`% !TEX encoding = UTF-8 Unicode
\documentclass{memoir}\usepackage{amsmath, amssymb, amsthm}
\usepackage[italian]{babel}
\usepackage{iftex}\ifpdftex\typeout{************* PDFTeX*****************}
\usepackage{stix2} % font\else
\ifluatex\typeout{************* LuaLaTeX *****************}
\usepackage{fontspec}
\setmainfont{STIX}[Ligatures=TeX]
\usepackage[math-style=ISO]{unicode-math}
\setmathfont{STIX Two Math}
\fi
\fi\usepackage[colorlinks, hyperindex, pagebackref,
linkcolor=RoyalBlue, filecolor=RoyalBlue,
citecolor = black, urlcolor=RoyalBlue]{hyperref}
\usepackage[usenames, dvipsnames]{xcolor}\newcommand{\N}{\mathbb{N}}
\begin{document}
\setcounter{tocdepth}{2}
\tableofcontents\chapter{Numeri naturali}
\section{Operazioni con i numeri naturali}
\label{sec:nat_operazioni}\subsection{Addizione in $\N: \quad \left(\N;~+\right)$}
\subsection{Sottrazione in $\N: \quad \left(\N;~-\right)$}
% Questo non funziona con lualatex
% \subsection{Moltiplicazione in $\N: \quad \left(\N;~\times\right)$}
%% Questo, con pdflatex presenta un puntino al posto della crocetta
\subsection{Moltiplicazione in $\N: \quad \left(\N;~×\right)$}
%\subsection{Moltiplicazione in
\texorpdfstring{$\N: \quad \left(\N;~ \times\right)$}{N: (N; x)}}% perché nell'indice le enne appaiono in mathbb?
\subsection{Moltiplicazione in
\texorpdfstring{$\N: \quad \left(\N;~\times\right)$}{N: (N; \textsf{X})}}% × MULTIPLICATION SIGN (U+00D7)
\subsection{Moltiplicazione in
\texorpdfstring{$\N: \quad \left(\N;~\times\right)$}{N: (N; ×)}}La moltiplicazione è legata all'azione di contare oggetti disposti in uno
schieramento rettangolare.\end{document}
`Prima domanda:
Il simbolo della moltiplicazione sembra essere: × MULTIPLICATION SIGN (U+00D7).
Ma quando compilo con pdflatex appare un puntino al posto della crocetta.
È perché le due istruzioni: 1. \usepackage{stix2} e 2. \setmathfont{STIX Two Math} non sono del tutto equivalenti?Seconda domanda:
Come mai nell’indice il simbolo N appare in mathbb anche se non è scritto così?
È perché il secondo argomento di \texorpdfstring viene usato solo nei riferimenti e non nel titolo dell’indice?Se ho capito bene, la soluzione più semplice è quella di robitex.
Grazie a tutti per le preziose indicazioni che mi avete dato.
Daniele
-
17 Maggio 2022 alle 6:27 #120979::
Daniele; questa soluzione funziona sia con \pdfLaTeX sia con \LuaLaTeX`% !TEX encoding = UTF-8 Unicode
\documentclass{memoir}\RequirePackage{amsmath, amssymb, amsthm}
\RequirePackage[italian]{babel}
\usepackage{iftex}\ifpdftex\typeout{************* PDFTeX*****************}
% \RequirePackage[utf8]{inputenc} % CB <-- non serve nemmeno per pdfLaTeX \RequirePackage{stix2} % font \else \ifluatex\typeout{************* LuaLaTeX *****************} \usepackage{fontspec} \setmainfont{STIX}[Ligatures=TeX] \usepackage[math-style=ISO]{unicode-math} \setmathfont{STIX Two Math} \fi \fi \RequirePackage[colorlinks, hyperindex, pagebackref, linkcolor=RoyalBlue, filecolor=RoyalBlue, citecolor = black, urlcolor=RoyalBlue]{hyperref} \RequirePackage[usenames, dvipsnames]{xcolor} \newcommand{\N}{\mathbb{N}} \begin{document} \setcounter{tocdepth}{2} \tableofcontents \chapter{Numeri naturali} \section{L'origine dei numeri} \label{sec:nat_origine} \section{I numeri naturali} \label{sec:nat_naturali} \section{Operazioni con i numeri naturali} \label{sec:nat_operazioni} \subsection{Proprietà delle operazioni} \subsection{Addizione in $\N: \quad \left(\N;~+\right)$} \subsubsection{Funzione addizione} \subsubsection{Proprietà dell'addizione} \subsection{Sottrazione in $\N: \quad \left(\N;~-\right)$} \subsubsection{Funzione sottrazione} \subsubsection{Proprietà della sottrazione} \subsection{Moltiplicazione \texorpdfstring{in $\N: \quad \left(\N;~\times\right)$}{in N:\quad (N; \texttimes\right)}} La moltiplicazione è legata all'azione di contare oggetti disposti in uno schieramento rettangolare. \end{document}` Risposte alle tue domande: 1) stix2 e stix two math sono due font diversi; il prio è type1 e il secondo è OpenType, il primo può contenere al massimo 256 caratteri e il seocndo ne può contenere milioni, di oslito non più di diverse decine dimigliaia.. La SIL che ha messo insieme sia quelli OpenType sia gli altri, ha fatto miracoli per ottenere i seocndi, i quali però rappresentano sempre un ripiego. 2) Il seocndo argomento di \texorpdfstring serve solo per i bookmarks chenon possono contenre matematica di nessun genere.Se vuo che nell'indice compaiano cose diverse da quelle che comapiono nel titolo della sezione devi usare l'argomeentofacoltativo di ogni comandi di sezionamenti. Ora ti faccio una domanda io: perché vuoi mettere delle formule neititoli delle varie sezioni a diversi livelli gerarchici? Qui è una questione più filosofica che tipografica; tradotto in termini meno formali, è una questione di gusti personali. Me dietro a questi gusti dovrebbe esserci un pensiero. Secondo il mio pensiero, che ripeto è personale, e non deve necessariamente essere condiviso da altri. un titolo deve essere breve e ma deve contenere abbastanza informazione da capire di che cosa tratta la sezione. Ora quando hi un capitolo che parla di “Numeri naurali, diviso in sezioni de descrivono le operazioni che si possono eseguire sui numenri di questo insieme, no è necessario specificare che queste sezioni si riferiscono ai numeri naturali; dentro un capitolo relativo ai numeri naturali. Quindi, sempre secondo il mio parere personale è del tutto superfluo disre in linguaggio matematico quello che sostnzialmente hai già dettocon lo scritto in linguaitaliana. Se poi il testo è dedicato a lettori neofiti rispetto alla matematica, quelle formule neititoli vano spiegate bene nel corpo delle sezioni. A maggior ragione le formule sono superflue nei booktab, sempre secondo il mio prere; ma credo che fosse anche il parere di chi si è occupato dell'iperlinguaggio, cioè del pacchetto hyperref, perché ha implementato i booktab inmodo che noncontengano né cambiamenti di font, nè, meno che mai la matematica. Capisco invece i greci e i russi che scrivono spessodocumenti bilingui, e che quindi possono avere problemi con il cambio di font; sr si leggono i loro file di documentazione si vede benissimo quali acrobazie fanno per comporre documenti con due alfabeti diversi; con Lua e Xe Latex molti dei loro problemi sono svaniti, ma quando dovevano lavorare con i font Type1 avevano dei seri problemi. -
17 Maggio 2022 alle 10:59 #120980::
OldClaudio” post=121501Daniele; questa soluzione funziona sia con \pdfLaTeX sia con \LuaLaTeX`% !TEX encoding = UTF-8 Unicode
\documentclass{memoir}
[…]
\subsection{Moltiplicazione \texorpdfstring{in $\N: \quad \left(\N;~\times\right)$}{in N:\quad (N; \texttimes\right)}}[…]
\end{document}`
Ok. All’inizio pensavo fosse un problema legato ai titoli, poi un problema legato alle voci dell’indice, adesso che ho capito che riguarda i riferimenti, tutto è più chiaro e più semplice. Le diverse soluzioni provate sono tutte funzionanti.
Risposte alle tue domande:
1) stix2 e stix two math sono due font diversi; il prio è type1 e il secondo è OpenType, il primo può contenere al massimo 256 caratteri e il seocndo ne può contenere milioni, di oslito non più di diverse decine dimigliaia.. La SIL che ha messo insieme sia quelli OpenType sia gli altri, ha fatto miracoli per ottenere i seocndi, i quali però rappresentano sempre un ripiego.
Non è possibile caricare gli OpenType stix anche compilando con pdflatex?
2) Il seocndo argomento di \texorpdfstring serve solo per i bookmarks chenon possono contenre matematica di nessun genere.Se vuo che nell’indice compaiano cose diverse da quelle che comapiono nel titolo della sezione devi usare l’argomeentofacoltativo di ogni comandi di sezionamenti.
Finalmente mi pare di avere capito quale era il problema e anche la soluzione.
Ora ti faccio una domanda io: perché vuoi mettere delle formule neititoli delle varie sezioni a diversi livelli gerarchici? Qui è una questione più filosofica che tipografica; tradotto in termini meno formali, è una questione di gusti personali. Me dietro a questi gusti dovrebbe esserci un pensiero. Secondo il mio pensiero, che ripeto è personale, e non deve necessariamente essere condiviso da altri. un titolo deve essere breve e ma deve contenere abbastanza informazione da capire di che cosa tratta la sezione. Ora quando hi un capitolo che parla di “Numeri naurali, diviso in sezioni de descrivono le operazioni che si possono eseguire sui numenri di questo insieme, no è necessario specificare che queste sezioni si riferiscono ai numeri naturali; dentro un capitolo relativo ai numeri naturali. […]
Concordo sostanzialmente con te. Il motivo di evidenziare nel titolo che stiamo parlando di numeri naturali è che nell’insegnamento, una certa ridondanza (sintetica) è utile.
Per la mia esperienza, non è affatto detto che un alunno che apre il libro e legge il titolo “Moltiplicazione” si renda conto che si sta parlando di numeri naturali, e questo anche se nella testatina c’è scritto “Numeri naturali”!Un’altra domanda che mi ero dimenticato di scrivere nel messaggio precedente, riguarda un errore strano.
Quando compilo con pdflatex dopo aver compilato con lualatex ottengo l’errore:`! Undefined control sequence.
\symbb l.6 …eft (\symbb {N};~+\right )$}{3}{section*.2}
%`
Cancellando il file .aux la compilazione funziona correttamente.
Questo dipende dal fatto che lualatex e pdflatex usano il file .aux in modo diverso e per certi versi incompatibile?Grazie ancora per l’interesse, una buona giornata.
Daniele
-
17 Maggio 2022 alle 11:55 #120981::
Alla domanda se non è possibile caricare gli OpenType anche per dflatex, la risposta è assolutamente no, perché pdfLaTeX trova i glifi da mettere nel file di uscita se hanno indirizzi di un solo byte, 8 bit. E non c’è possibilità di fare diversamente; il fatto che pdfLaTeX possa lavroare con i Type2 in pilzze di 256 caratteri al massimo dipende dal fatto che con un solo byte per calcolarne l’indirizzo quindi con 8 bit, puoi avere solo 256 combinazioni di zeri e di uni, che vanno da 00000000 (0 decimanel) a 11111111 (255 decimale); aven cominciato da zero, le combinazioni possibili sono 256.Xelatex prima e LualaTeX poi sononati appunto proprio per superare il limite dei 256 caratteri. Gli OpenType possono arrivare dino a 4 bite di indirizzo e se trasformi il numero binari in deicmali otieni $ 256^4= *^{32} = 42.949.672.96$ combinazioni possibili, non tutta indirizzabili, ma stiamo parlando di milioni di indirizzi possibili. Come ti ho scritto di fatto nemmeno i fotn OpenType che contengono gli ideogrammi cino-giapponesi arrivano ad userne più di diverse decine di migliaia.
Alla seconda domanda: certo i file aux di pdf/Xe/Lua LaTeX sono diversi anche perché gestiscono in font in modo diverso; Aggiungerei poi che questo è particolarmente evidente con i fon matematici; PdfLaTeX usa quattro gruppi (lettere, operatori, simboli, grandi simboli) in tre corpi diversi, quindi usa 12 famiglie per ogni ambiente matematico; Xe e Lua usano n solo font che contiene da solo tutti i glifi di ogni corpo, di ogni nerezza, di ogni foggia di ogni tipo matematico, tutti nello stesso file .otf.
Ricorda anche che spesso i font OpenType sono descritti come font TrueType o Type!, solo per distingure se gli archi che compongono il contorno di ogni segno, son ottenuti con curve di Bézier di secondogrado (TrueType) o di terzogrado (Type1). Questo non ri=duce la confusione della terminologia. L’unica cosa che distingue i Type1 e TrueType a 256 caratteri dai font OpenType di tipo TT e Type1, E che il numero di glifi è quasi illimitato, e gli archi sono ottenuti con parabole o con archi di terzo grado. Da matematico sai benissimo che le parabole non hanno flessi,mentre i polinomi di terzo grado possono avere flessi, e li hanno se il primo e l’ultimo coefficiente del polinomio hanno segni opposti. È ovvio che la maggior parte dei segni grafici dei caratteri hanno flessi; quindi con gli archi di parabola biaogn congiungere due parabole con concavità opposte ma con la stessa tangente nel punto di congiunzione. Ne segue che con i font TrueType per descrivere lo stesso glifo occorrono più archi parabolici di quanti ne servano per lo stesso carattere ha in contonrni descritti da curve di terzo grado.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.