Risposte nei forum create
-
AutoreRisposte
-
::
Se hai letto la risposta di @egreg, avrai anche letto che non c’è garanzia che il metodo funzioni in tutte le circostanze; anzi, io riformulerei la frase in modo ancora più drastico: è praticamente garantito che in alcune circostanze non funzionerà. Per esempio, non funzionerà con tutti i comandi e ambienti per produrre matematica che sono già definiti nel nucleo del LaTeX o in pacchetti come amsmath, i quali incorporano nelle loro rispettive definizioni dei caratteri [tt]$[/tt] di categoria 3 (math shift), che è staticamente fissata e non cambia dinamicamente.In altre parole, se il motivo per cui ti riproponi addirittura di ridefinire un comando primitivo del TeX (ovvero uno di quelli che, nell’intento di far comprendere meglio cosa essi rappresentino, io talvolta chiamo i «comandi di livello macchina») è quello di intercettare, appunto a livello primitivo, tutti i brani composti in modo matematico, sono totalmente scettico circa la possibilità che quel metodo ti permetta di ottenere quanto voluto. Comunque, farai a tutti noi un graditissimo favore se continuerai a tenerci aggiornati sull’andamento del tuo lavoro! 🙂
Ciao.
—
Gustavo
::
Dovresti includere un esempio (possibilmente minimo) compilabile che riproduca il problema; altrimenti si può solo tirare a indovinare, come faccio io ponendoti la domanda seguente: per caso, durante la compilazione compaiono avvertimenti del tipo
`
LaTeX Font Warning: Font shape `…' in size <...> not available
(Font) Font shape `…' tried instead on input line …
`
o simili?Ciao.
—
Gustavo
::renareto” post=111308[…]
per il documento di cui parlavo prima (un notiziario di pochi fogli in formato A5), devo utilizzare del codice che la classe article mi consente di usare, e altro codice (tipo \opening{} e \closing{} che invece sono della classe letter.)
[…]Potresti specificare esattamente quali sono le funzionalità della classe article di cui devi fare uso nel tuo documento? Potrebbe anche darsi che siano fra quelle fornite dalla classe articoletteracdp…
Ciao.
—
Gustavo
::
Nella speranza che possa essere d’aiuto:
`
% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly
% declare the paper format.\usepackage[T1]{fontenc} % Not always necessary, but recommended.
% End of standard header. What follows pertains to the problem at hand.\usepackage[italian]{babel}
\usepackage{amsmath} % irrilevante\begin{document}
Vediamo tre esempi:
\begin{center}
Il mio bel titolo composto senza neretto\\
con la sua formula~$\log q^{3}$
\end{center}\begin{center}
\bfseries
Il mio bel titolo composto \emph{in} neretto\\
ma con la formula $\log q^{3}$ \emph{non} in neretto
\end{center}\begin{center}
\bfseries\boldmath
Il mio bel titolo composto in neretto\\
e con la formula $\log q^{3}$ \emph{pure} in neretto
\end{center}La dichiarazione \verb|\boldmath| (equivalente a \verb|\mathversion{bold}|) fa
s\`{\i} che le formule matematiche che compaiono nel suo ambito di
visibilit\`{a} vengano composte in neretto, anche se limitatamente ai simboli
che possiedono una versone in neretto. Essa \`{e} soggetta alle ordinarie
regole di visibilit\`{a}, ma va impartita \emph{fuori} delle formule alle quali
la si vuole applicare. Per esempio, {\boldmath $x^{2}+y^{2}=1$} ha l'effetto
voluto, ma $\boldmath x^{2}+y^{2}=1$ no (e, durante la compilazione, si ottiene
anche un avvertimento al rifuardo!).\end{document}
`Ciao.
—
Gustavo
30 Maggio 2017 alle 19:36 in risposta a: PROBLEMA “File ended while scanning use of \@writefile.” #110670::
Come già in questo post, tenterò di usare, con qualche speranza di successo, la mia LaTeX-sfera di cristallo… 😉Un errore come
`
File ended while scanning use of \@writefile.
\par
l.35 \begin{document}
`
non mi fa tanto propendere per qualcosa di legato alla generazione dell’indice analitico, quanto piuttosto all’ordinaria rilettura del file [tt].aux[/tt] che avviene durante il [tt]\begin{document}[/tt]. Molto probabilmente, ciò che succede è semplicemente questo:- @mg42 compila una prima volta e, per una ragione che resta da chiarire, un sorgente [tt].tex[/tt] secondario, che viene richiamato dal sorgente [tt].tex[/tt] principale, non viene trovato;
- quando vede il messaggio di errore circa il file non trovato, @mg42 abortisce la compilazione senza permettere che TeX chiuda ordinatamente i file ausiliari, o magari, semplicemente, “lascia lì” il processo in sospeso, in attesa di risposta;
- in conseguenza di ciò, il file [tt].aux[/tt] rimane in uno stato incompleto, con un comando [tt]\@writefile[/tt] (un tipico comando “da file [tt].aux[/tt]”) scritto solo a metà;
- a partire dalla seconda combinazione, quando il file [tt].aux[/tt] viene riletto al [tt]\begin{document}[/tt], tale comando [tt]\@writefile[/tt] incompleto genera — com’è ovvio che sia — l’errore sopra riportato;
- e così via, il ciclo si ripete.
Ora, è assai probabile che, quando leggerà questa risposta, @mg42 si sarà già resa/o conto di tutto ciò e avrà quindi già capito da sola/o che il problema dell’errore che dà il titolo a questo filone è irrilevante e che il vero problema, piuttosto, è capire come mai non viene trovato il sorgente secondario (verosimilmente, un banale disguido relativo all’impostazione dei percorsi di ricerca); magari, ella o egli scriverà anche, come ha già fatto nell’altro caso, un messaggio di risposta a questo mio per confermare quanto ho appena detto; ebbene, proprio per questo, vi chiedo di perdonare la piccola digressione (o pistolotto? 🙂 ) che segue, di carattere generale, assolutamente non rivolta contro @mg42 e riguardo alla quale prego @mg42 stessa/o di non aversene a male.
Ecco, vorrei semplicemente rinnovare la raccomandazione a non rivolgersi immediatamente a Internet, come prima azione, non appena ci si imbatte in un problema: questo comportamento non aiuta a crescere né sé stessi, né la comunità degli utenti. Si cerchi, innanzitutto, di trovare una soluzione da soli, o anche soltanto di comprendere meglio il problema, studiandolo a fondo e aiutandosi con la consultazione di guide sistematiche, e solo in un secondo momento, e solo se ancora necessario, si affigga una domanda in Rete. Se si farà così, non solo si sarà sfruttata nel migliore dei modi un’opportunità per imparare qualcosa (risolvere problemi è il modo in cui si impara), ma si avrà anche modo di porre una domanda molto migliore, capace anche, magari, di far riflettere chi la legge, insegnandogli a sua volta qualcosa.
Ciao.
—
Gustavo
::
Un errore del genere può prodursi, ad esempio, quando includi un ambiente [tt]figure[/tt] dentro a un ambiente [tt]minipage[/tt]. Fai qualcosa del genere? Più in generale, hai qualche ambiente [tt]figure[/tt] che compaia in un qualche posto “strano”? E non è che per caso hai due figure una di seguito all’altra, ma nella prima ti sei dimenticato l’[tt]\end{figure}[/tt]?Ciao.
—
Gustavo
27 Maggio 2017 alle 9:02 in risposta a: [RISOLTO]: Problemi con riferimenti incrociati – \label e \ref #11065726 Maggio 2017 alle 17:06 in risposta a: [RISOLTO]: Problemi con riferimenti incrociati – \label e \ref #110655::
Devi:- compilare almeno due volte senza modificare le etichette tra le due compilazioni;
- leggere una guida introduttiva a LaTeX.
Il punto 2 è di gran lunga il più urgente! 😉 Per quanto riguarda il punto 1, LaTeX ti avviserà, alla fine di una data compilazione, se sono necessarie ulteriori compilazioni «to get cross-references right».
Ciao.
—
Gustavo
::
Quando usi un comando come`\newtheorem{thm}{Theorem}[section]`sei tu stessa che indichi, nel secondo argomento obbligatorio (in questo caso, [tt]{Theorem}[/tt]) quale parola usare nel titoletto del teorema: lo vedi bene nel caso di`\newtheorem{prop}[thm]{Propostion}`in relazione al quale puoi osservare, se fai attenzione, che i titoletti delle proposizioni riproducono il tuo refuso «Propostion». Invece l’ambiente [tt]proof[/tt], nel quale tu non metti mano 😉 , viene gestito direttamente dal pacchetto babel e dunque appare in italiano.Alcune osservazioni sono a questo punto d’obbligo:
- Ma tu vuoi scrivere in italiano o in inglese? 😕 🙂
- L’opzione [tt]14pt[/tt] non viene riconosciuta dalla classe report
- Perché specifichi l’opzione [tt]english[/tt] nel comando [tt]\documentclass[/tt]?
- Caricare il pacchetto amsfonts è superfluo se si carica amssymb (verrà caricato automaticamente).
- Ho notato che numeri i teoremi per capitolo e le definizioni per paragrafo ([tt]section[/tt]): è intenzionale?
Ciao.
—
Gustavo
19 Maggio 2017 alle 21:40 in risposta a: Warning di LaTeX: riferimenti incrociati non definiti #110599::
Gli avvertimenti dovrebbero sparire alla seconda compilazione. Tu, ovviamente, sai che, affinché i riferimenti incrociati funzionino, bisogna compilare almeno due volte, no? Del resto, se tu non lo sapessi, non otterresti i riferimenti incrociati come li vuoi, e non diresti che «sembrerebbe tutto perfetto», giusto?Ciao.
—
Gustavo
::
Sono diversi giorni che desidero affiggere questo messaggio correttivo, ma finora non ne ho mai trovato il tempo.Il problema TeXnico che riguarda [tt]\scantokens[/tt] è descritto, per esempio, nelle seguenti due domande apparse su TeX.SX:
- How to do [tt]\scantokens[/tt] inside [tt]\edef[/tt] without triggering “Runaway definition”;
- Using [tt]\input[/tt] vs. [tt]\scantokens[/tt] in section title (with package hyperref)
Leggendo le risposte mi è venuto in mente che in effetti c’è una soluzione più semplice, che non richiede troppi virtuosismi» (ne basta uno solo! 🙂 ): inibire il carattere [tt]\outer[/tt] del marcatore di fine file sopprimendone l’espansione con [tt]\noexpand[/tt]. Ecco il codice completo:
`
% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly
% declare the paper format.\usepackage[T1]{fontenc} % Not always necessary, but recommended.
\usepackage[ascii]{inputenc} % Just to check that the source is still pure,
% 7-bit-clean ASCII when you execute it, as it
% was when I wrote it.
% End of standard header. What follows pertains to the problem at hand.\usepackage[italian]{babel} % check compatibility
\usepackage{amsmath} % check compatibility
\usepackage{pdfcomment}\makeatletter
\@ifdefinable\@escaped@backslash{\edef\@escaped@backslash{\detokenize{\\}}}
\begingroup
\lccode`\~`\\
\lowercase{\endgroup \let ~\@escaped@backslash}\newcommand*\@tooltip@text{} % check availability of the name
\newcommand{\pdftool}[1]{%
\begingroup
\let\do\@makeother \dospecials
\catcode`\ 10
\catcode`\\\active
\everyeof{\noexpand}%
\edef\@tooltip@text{\scantokens{#1}}%
\pdftooltip{#1}{\@tooltip@text}%
\endgroup
}\makeatother
% \tracingscantokens = 1
\begin{document}
Formula con i~\verb|$| dentro al \emph{tooltip}:
\pdftool{$\frac{1}{2}-\sqrt{5}+a^{2}$};
formula con i~\verb|$| fuori dal \emph{tooltip}:
$\pdftool{\frac{1}{2}-\sqrt{5}+a^{2}}$.
E un paio di formule fuori corpo, che usano un ambiente di \textsf{amsmath}:
\begin{gather}
\pdftool{\int_{-\infty}^{+\infty} e^{-x^{2}} = \sqrt{\pi}}\\
\pdftool{e^{x+iy} = e^{x}(\cos y + i\sin y)}
\end{gather}
Attenzione per\`{o} con ambienti come \texttt{align}:
% %
% % Cosi` non puo` funzionare:
% \begin{align}
% \pdftool{\sin(\alpha\pm\beta) &= \sin\alpha\cos\beta\pm\cos\alpha\sin\beta}
% \\
% \pdftool{\cos(\alpha\pm\beta) &= \cos\alpha\cos\beta\mp\sin\alpha\sin\beta}
% \end{align}
%
% Bisogna fare cosi`, invece:
\begin{align}
\pdftool{\sin(\alpha\pm\beta)} &=
\pdftool{\sin\alpha\cos\beta\pm\cos\alpha\sin\beta}
\\
\pdftool{\cos(\alpha\pm\beta)} &=
\pdftool{\cos\alpha\cos\beta\mp\sin\alpha\sin\beta}
\end{align}% \showboxbreadth = \maxdimen
% \showboxdepth = \maxdimen
% % \tracingonline = 1
% \showlists\end{document}
`Ciao.
—
Gustavo
::
Sembra che il mio precedente messaggio non sia stato ben compreso: evidentemente non mi ero spiegato bene. Cercherò dunque ora di chiarire meglio, pur se ciò mi costringerà a essere prolisso, anche perché i messaggi inviati nel tempo intercorso da ieri hanno chiarito che la questione di cui ci stiamo occupando è piuttosto importante.Ripeto che il problema non sono i [tt]\catcode[/tt], bensì, solo e unicamente, il carattere «barra rovesciata» ([tt]\[/tt]) in quanto tale. Lo si capisce bene compilando il seguente esempio:
`
% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly
% declare the paper format.\usepackage[T1]{fontenc} % Not always necessary, but recommended.
\usepackage[ascii]{inputenc} % Just to check that the source is still pure,
% 7-bit-clean ASCII when you execute it, as it
% was when I wrote it.
% End of standard header. What follows pertains to the problem at hand.\usepackage[italian]{babel} % check compatibility
\usepackage{pdfcomment}\begin{document}
\begingroup
\showboxbreadth = \maxdimen
\showboxdepth = \maxdimen
\tracingonline = 1\catcode`\| = 0
\catcode`\< = 1 \catcode`\> = 2
\catcode`\{ = 12
\catcode`\} = 12
\catcode`\\ = 12|pdftooltip
<\\frac{1}{2}-\\sqrt{5}+a^{2}>
|pdftooltip<\frac{1}{2}-\sqrt{5}+a^{2}> |showlists
|endgroup\end{document}
`
Si vede perfettamente che, una volta attribuito il [tt]\catcode[/tt] 12 alla barra rovesciata (e, per questo esempio, anche alle due parentesi graffe), quello che causa la comparsa dei caratteri «coreani» (se davvero lo sono) è il puro e semplice fatto che la barra stessa è interpretata come inizio di una sequenza di escape nella conversione a stringa PDF-Unicode (che viene effettuata, credo, dal pacchetto hyperref): infatti il tooltip della parola «Giusto», nel quale la barra viene raddoppiata ([tt]\\[/tt]) in modo da rappresentare sé stessa tramite una sequenza di escape, ha l’aspetto desiderato, mentre quello della parola «sbagliato», in cui manca il raddoppiamento, ha i caratteri «coreani». Si osservi che il regime di [tt]\catcode[/tt] è il medesimo per entrambi.Ora, [tt]\detokenize{…}[/tt] è un costrutto espandibile che sostituisce la sequenza di token «[tt]…[/tt]» con la sua rappresentazione testuale, nella quale i caratteri usati hanno tutti [tt]\catcode[/tt] = 12, tranne lo spazio che ha il suo solito [tt]\catcode[/tt] = 10; insomma, funziona in modo simile a quello in cui opera un [tt]\write[/tt] (o, se preferite, un [tt]\typeout[/tt]), con l’importantissima differenza che non espande i token espandibili. Insomma, per avere un’idea di quale sia l’espansione di, poniamo
`\detokenize{\frac{1}{2}-\sqrt{5}+a^{2}}`
potete guardare all’output prodotto sul terminale da
`\typeout{\unexpanded{\frac{1}{2}-\sqrt{5}+a^{2}}}`
Si ottiene
`\frac {1}{2}-\sqrt {5}+a^{2}`
Ebbene, questa è anche l’espansione di [tt]\detokenize{…}[/tt], tutta con [tt]\catcode[/tt] = 12 tranne gli spazi, come detto.Pertanto, il problema si riduce a far sì che, in tale espansione, ogni occorrenza di [tt]\[/tt] venga sostituita con [tt]\\[/tt]. Con un po’ di conoscenza del TeX “a livello macchina”, non è poi così difficile (benché non sia proprio banale) escogitare una soluzione che funzioni in modo sufficientemente generale. Per il momento, propongo la seguente soluzione provvisoria:
`
% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly
% declare the paper format.\usepackage[T1]{fontenc} % Not always necessary, but recommended.
\usepackage[ascii]{inputenc} % Just to check that the source is still pure,
% 7-bit-clean ASCII when you execute it, as it
% was when I wrote it.
% End of standard header. What follows pertains to the problem at hand.\usepackage[italian]{babel} % check compatibility
\usepackage{amsmath} % check compatibility
\usepackage{pdfcomment}\makeatletter
\@ifdefinable\@escaped@backslash{\edef\@escaped@backslash{\detokenize{\\}}}
\begingroup
\lccode`\~`\\
\lowercase{\endgroup \let ~\@escaped@backslash}\newcommand*\@tooltip@text{} % check availability of name
\newcommand{\pdftool}[1]{%
\begingroup
\let\do\@makeother \dospecials
\catcode`\ 10
\catcode`\\\active
% \showtokens{#1}%
\everyeof{\iffalse{\fi}}%
% \typeout{==> \scantokens\bgroup #1}%
\edef\@tooltip@text{\scantokens\bgroup #1}%
\pdftooltip{#1}{\@tooltip@text}%
\endgroup
}\makeatother
\begin{document}
Formula con i~\verb|$| dentro al \emph{tooltip}:
\pdftool{$\frac{1}{2}-\sqrt{5}+a^{2}$};
formula con i~\verb|$| fuori dal \emph{tooltip}:
$\pdftool{\frac{1}{2}-\sqrt{5}+a^{2}}$.
E una formula fuori corpo, che usa un ambiente di \textsf{amsmath}:
\begin{gather}
\pdftool{\int_{-\infty}^{+\infty} e^{-x^{2}} = \sqrt{\pi}}\\
\pdftool{e^{x+iy} = e^{x}(\cos y + i\sin y)}
\end{gather}\begingroup
\showboxbreadth = \maxdimen
\showboxdepth = \maxdimen
\tracingonline = 1
\showlists
\endgroup\end{document}
`
Lo [tt]\showlists[/tt] incluso alla fine ha, come al solito, il solo scopo di consentirvi di ispezionare i nodi [tt]\pdfannot[/tt] che vengono prodotti. Notate che, nel tooltip, le sequenze di controllo del tipo di [tt]\sqrt[/tt] (control words) sono seguite da uno spazio indipendentemente dal fatto che uno spazio fosse presente anche nel codice originale oppure no: quest’informazione è andata irrimediabilmente perduta quando l’argomento di [tt]\pdftool[/tt] è stato «tokenizzato». Per risolvere questo problema, si può pensare a un altro approccio, affatto diverso, del quale però… parleremo alla prossima puntata! 🙂Scusate, ma per il momento devo fermarmi qui: quando avrò tempo, modificherò questo messaggio per aggiungervi le spiegazioni relative al funzionamento del codice sopra riportato. Bisogna ammettere che è stato inevitabile far ricorso a qualche virtuosismo TeXnico.
Ciao.
—
Gustavo
::
Non avevo mai letto la documentazione del pacchetto pdfcomment (e quindi, probabilmente, farei meglio a starmene zitto! 😳 ), ma da quel poco che sono riuscito a capire, ho paura che la faccenda non sia tanto semplice. A pag. 10, il manuale dice che «internally, the argument ⟨comment⟩ needs to be converted to PDFDocEncoding/PDFUnicode» e avverte di sostituire i caratteri «speciali» con i comandi che li rappresentano testualmente (per esempio, [tt]\_[/tt]); e presumo che, anche se sta parlando del comando [tt]\pdfcomment[/tt], queste avvertenze si applichino anche ai comandi successivi. Provo a indovinare: secondo me è proprio nella conversione a stringa Unicode che avviene il pasticcio.Si consideri il seguente programmino diagnostico:
`
\documentclass{article}
\usepackage{pdfcomment}\newcommand{\pdftool}[1]{%
\pdftooltip{\ensuremath{#1}}{\detokenize{#1}}%
}\begin{document}
\pdftool{\frac{1}{2}-\sqrt{5}+a^2}%
\begingroup
\showboxbreadth = \maxdimen
\showboxdepth = \maxdimen
\tracingonline = 1\catcode`\| = 0
\catcode`\\ = 12
|pdftooltip{Testo}{\\\\}|showlists
|endgroup\end{document}
`
(si noti che ho ripulito un po’ il codice, togliendo un [tt]\texttt{…}[/tt] fuori luogo e riposizionando [tt]\ensuremath[/tt]; ciò, tuttavia è risultato essere ininfluente). Il tooltip che viene generato per la parola «Testo» è «\\», e ciò dimostra che il carattere [tt]\[/tt] viene interpretato come inizio di una sequenza di escape anche quando ha [tt]\catcode[/tt] = 12, deponendo a favore del fatto che il problema stia appunto nella conversione a stringa Unicode e non nel [tt]\detokenize[/tt].Nel transcript file si possono vedere esattamente quali nodi [tt]\pdfannot[/tt] vengono generati: quello della formula matematica è
`
.\pdfannot(9.07217+3.44841)x53.93579{/Subtype /Widget /TU (\376\377\fra\000c\000\040\000{\0001\000}\000{\0\ETC.}
`
mentre quello per la parola «Testo» è
`
.\pdfannot(6.83331+0.0)x23.66669{/Subtype /Widget /TU (\\\\) /T (tooltip zref@1) /C [ ] /FT/Btn /F 768\ETC.}
`
Nel primo mi sembra di riconoscere delle sequenze di escape della codifica UTF-8; ma non me ne intendo.Ciao.
—
Gustavo
::
Tieni presente che il rettangolo rosso viene aggiunto dal visualizzatore PDF: lo stesso identico file PDF, generato da [tt]pdflatex[/tt] senza l’opzione [tt]colorlinks[/tt], può essere, per dire, visualizzato con i rettangoli rossi su Adobe Reader™, e senza rettangoli da un altro visualizzatore. Doresti indicare quale visualizzatore usi, e anche la tua versione del pacchetto hyperref.Ciao.
—
Gustavo
-
AutoreRisposte