Risposte nei forum create
-
AutoreRisposte
-
::
Innanzitutto, benvenuto sul forum del GuIT! 🙂A tutte le cose sacrosante che ti ha già detto @OldClaudio, aggiungo le seguenti due:
- In generale: non affiggere mai il codice sorgente sotto forma di immagine, ma sempre sotto forma di testo (vedi sotto per sapere come fare). Per poter anche solo prendere in considerazione l’idea di aiutarti, chi legge il tuo messaggio deve essere messo in grado di copiare il tuo codice e incollarlo in un file del proprio computer, per poterlo provare; o pensi forse che uno abbia anche il tempo e la voglia di copiarsi il codice a mano? Per inserire del codice in un messaggio, fai clic sul pulsante che raffigura un piccolo foglio con sopra i simboli [tt]<>[/tt] (quello immediatamente alla destra di quello che raffigura un fumetto); nel testo del messaggio che stai componendo compariranno due tag denominati [ [tt]code[/tt] ] e [ [tt]/code[/tt] ]; ebbene, copia il codice dal tuo editor e incollalo tra questi due tag.
- In particolare per questa domanda: LaTeX posiziona la scritta «Piano 1» a cavallo della riga perché ciò è esattamente quel che gli chiedi di fare con il tuo (assurdo) comando [tt]\multirow[/tt]. Per il resto, non si riesce a capire che ruolo logico l’etichetta «Piano 1» debba avere nella tabella; ti suggerisco di allegare, questo sì sotto forma di immagine, un disegno, anche fatto a mano, che raffiguri il risultato che vuoi ottenere.
Ciao.
—
Gustavo
::
Bella domanda! Essa offrirebbe lo spunto per una «dotta disquisizione» sulla primitiva [tt]\insert[/tt] di TeX, che tuttavia vi — e mi 🙂 — risparmio, a meno che qualcuno non sia espressamente interessato. Qui basterà ricordare che la primitiva [tt]\insert[/tt], che e ciò che il comando [tt]\footnotetext[/tt] utilizza “a livello macchina” per creare la nota a piè di pagina, può essere usata anche in modo matematico e anche nelle formule fuori corpo (displayed formulae); di conseguenza, anche [tt]\footnotetext[/tt] può essere usato in tali contesti. (Nota: neanche i doubly dangerous bend paragraphs del TeXbook spiegano con chiarezza la questione, e in particolare la Rule 1 dell’appendice G omette di menzionare i nodi di tipo [tt]\insert[/tt] tra quelli che vengono copiati inalterati dalla lista matematica alla sua traduzione in lista orizzontale; tuttavia le cose stanno come ho detto.)Questo è importante, perché mettere il comando [tt]\footnotetext[/tt] fuori dell’ambiente matematico, come suggerisce @OldClaudio, non è la soluzione ideale (be’, a dire il vero la soluzione ideale resta sempre l’altra soluzione che suggerisce @OldClaudio, e cioè non usare le note nelle formule! 😉 ): infatti, a meno di non fare giravolte strane con il contatore [tt]footnote[/tt], dire «fuori dell’ambiente matematico» vuole in pratica dire «dopo l’ambiente matematico», come nell’esempio seguente:
`
Testo prima dell'equazione:
\begin{equation}
\underbrace{a+b}_{\text{somma\footnotemark}} = c
\end{equation}
\footnotetext{Si usa il segno~$+$.}
Testo dopo l'equazione.
`
Purtroppo, se si fa così, la nota a piè di pagina resta “attaccata” al testo dopo l’equazione, e apparirà quindi nella pagina sbagliata se TeX decide di cambiare pagina subito dopo l’equazione stessa, cosa non solo possibilissima, ma anche ben accetta.Questo inconveniente non si presenta se si sposta [tt]\footnotetext[/tt] dentro l’ambiente [tt]equation[/tt]; bisogna però avere l’accortezza di farlo comparire obbligatoriamente al livello più esterno della formula: se lo si usa dentro una qualunque sottoformula, il che, in pratica, vuol più o meno dire dentro una qualunque coppia di parentesi graffe, esso non avrà effetto. In pratica, basterà metterlo subito prima dell’[tt]\end{equation[/tt] (o costrutto equivalente).
Ecco un esempio completo e compilabile, che dimostra anche il corretto funzionamento dei riferimenti ipertestuali. Per chi ne ha voglia, sono anche preimpostati, ma non attivati, alcuni tracciati diagnostici che spiegano in dettaglio cosa succede,
`
% 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} % controllo compatibilita`
\usepackage{hyperref}\newcommand*{\ShowLists}{%
% % Decommentare le linee seguenti per avere i attivare diagnostici:
% \begingroup
% \showboxbreadth = 10000
% \showboxdepth = 10
% \tracingonline = 1
% \showlists
% \endgroup
}\begin{document}
Testo prima dell'equazione:
\begin{equation}
\underbrace{a+b}_{\text{somma\footnotemark}} = c
\footnotetext{Si usa il segno~$+$.}
\ShowLists
\end{equation}
\ShowLists
Testo dopo l'equazione.\end{document}
`Ciao.
—
Gustavo
::robitex” post=112269[…] mi son reso conto che in LuaTeX il comando \set non è necessario!
Si può usare la sintassi del costruttore di tabelle Lua…
[…]D’altra parte, fornire dello “zucchero sintattico” che usi solo le convenzioni di LaTeX, con il fine di non obbligare l’utente a imparare la sintassi di Lua e l’uso del comando [tt]\directlua[/tt], è una cosa che può valer la pena di fare, no? 🙂
Ciao.
—
Gustavo
::robitex” post=112224[…]
Mi chiedevo appunto cosa intendessero con il primo argomento ‘continuation’.
[…]Serve a specificare una stringa da premettere a tutte le linee del messaggio d’errore (attenzione: non di aiuto) successive alla prima, ammesso che ce ne siano; infatti, di solito i messaggi d’errore sono molto sintetici.
Il motivo di ciò si spiega meglio con un esempio. Create una cartella vuota con un nome a vostra scelta, poi dentro di essa create un file di puro testo chiamato [tt]packageerrorxmpl.sty[/tt], con il seguente contenuto:
`
\NeedsTeXFormat{LaTeX2e}\relax % LaTeX2e is required!
\ProvidesPackage{packageerrorxmpl}
[2017/11/18 v1.00 Example of a package error message]
\PackageError{packageerrorxmpl}{%
An unusually long package error message\MessageBreak
(very long indeed!) that takes up 3 lines\MessageBreak
without actually saying anything useful%
}{%
A brief and uninformative help message.%
}
\endinput
`
Poi, sempre nella stessa cartella, salvate il seguente sorgente LaTeX (il nome che gli date non ha importanza):
`
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[italian]{babel}
\usepackage{packageerrorxmpl}\begin{document}
Testo testo testo.
\end{document}
`
Compilandolo, apparirà il seguente messaggio d’errore:
`
! Package packageerrorxmpl Error: An unusually long package error message
(packageerrorxmpl) (very long indeed!) that takes up 3 lines
(packageerrorxmpl) without actually saying anything useful.See the packageerrorxmpl package documentation for explanation.
Type Hfor immediate help.
…l.10 }
?
`
(sempre che non abbiate impostato [tt]file_line_error_style = t[/tt], vedi sotto). La stringa [tt](packageerrorxmpl)[/tt] è appunto la stringa «di continuazione», e guardando il messaggio di errore si capisce che essa svolge la funzione di assicurare il corretto allineamento in verticale delle righe di testo che compongono il messaggio stesso; infatti, poiché la lunghezza della prima riga dipende dalla lunghezza del nome del pacchetto, il modo più semplice di dare alle righe successive la corretta indentazione è quello di premettere, anche a esse, una stringa di caratteri che contenga il nome del pacchetto; tale stringa contiene anche un numero di spazi opportunamente calcolato per avere lo stesso numero di caratteri della stringa [tt]! Package … Error: [/tt].Come già accennato, questo astuto trucco viene mandato a pallino se si imposta il flag [tt]file_line_error_style[/tt] a [tt]true[/tt], per cui gli autori di classi tendono a non utilizzare messaggi di errore lunghi più di una riga, confinando eventuali chiarimenti nel messaggio di aiuto a essi associato. Per gli avvertimenti, però, questo problema non c’è, ed ecco perché è invece abbastanza comune vedere messaggi di avvertimento lunghi più righe; eccone qui un esempio: 😉
`
Class letteracdp Warning: Some text that did not fit into the folded flap
(letteracdp) was moved into the main text below the folding;
(letteracdp) warning issued on input line 45.
`Ciao.
—
Gustavo
::ASP” post=112231[…]
Grazie al tuo [tt]\showthe\catcode`\~[/tt], posso dirvi che l’errore risiede nel preambolo: appena metto il codice subito dopo [tt]\begin{document}[/tt], il numero che mi viene indicato è 12 .
[…]OK, e allora continuiamo: spingiamoci fin dentro il preambolo. Sposta la linea`\showthe\catcode`\~[/tt]`sopra [tt]\begin{document}[/tt]: continua a rispondere con 12, o passa a dare la risposta attesa, cioè 13?
Se continua a rispondere 12, tu risali un po’ alla volta il preambolo, fino ad arrivare persino sopra la dichiarazione [tt]\documentclass[/tt]. Ti conviene fare una ricerca binaria: mettendo la riga diagnostica sopra [tt]\documentclass[/tt] (cioè, proprio all’inizio del file), la risposta deve essere 13. Poi prova mettendola subito sopra [tt]\begin{document}[/tt]. Poi prova subito sotto [tt]\documentclass[/tt]. Poi prova a metà circa del preambolo. Poi a un quarto oppure a tre quarti del preambolo, a seconda della risposta avuta al passo precedente. E così via. In questo modo dovresti riuscire a identificare il pacchetto che causa il problema, o a concludere che il problema è causato addirittura dalla classe di documento (o da uno dei pacchetti che essa richiede).
Prima di fare ciò, tuttavia, prova a cancellare tutti i file ausiliari, come ti ha già suggerito @Marluxia, e a effettuare una compilazione “vergine” lasciando la linea diagnostica sotto [tt]\begin{document}[/tt]: la risposta è 12 o 13?
Ciao.
—
Gustavo
::
Mi permetto di apportare qualche piccola correzione al codice di @robitex:
`
% 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}
\makeatletter
\newcommand*\set[2]{\global\@namedef{namespacekey@#1}{#2}} % “\global”?
\newcommand*\get[1]{%
\@ifundefined{namespacekey@#1}{%
\GenericError
{}% continuation
{Undefined field `#1'}% error message
{No doc to read!}% reference to documentation
{The field you used has not been defined: define it!}% help
}{%
\@nameuse{namespacekey@#1}%
}%
}
\makeatother\set{saluto}{Ciao!}
\set{commiato}{Arrivederci!}\begin{document}
\get{saluto}
Carissimo \get{nome}, % errore: indefinito!
bla bla bla. \get{commiato}
\bigbreak
\set{saluto}{Buon giorno.}
\get{saluto}
\end{document}
`
Gli argomenti di [tt]\GenericError[/tt] erano sbagliati (nulla di grave, naturalmente!). Inoltre, mi domando se non sia il caso di esplorare la possibilità di rimuovere il [tt]\global[/tt] dal comando [tt]\set[/tt], rendendo le definiioni dei campi locali ai gruppi.Ciao.
—
Gustavo
::
Non escono i «??», almeno dopo aver compilato due volte: esce «(vedi Figura ).», cioè manca del tutto il numero della figura stessa. Questo succede perché un comando [tt]\label[/tt] non può essere dato al di fuori del gruppo nel quale si trova il comando che stampa il contatore al quale si riferisce.Parentesi: versione più TeXnica. Il comando [tt]\label[/tt] non può essere dato al di fuori del gruppo nel quale viene eseguito il comando [tt]\refstepcounter[/tt] relativo al contatore al quale si vuole generare il riferimento: infatti, [tt]\refstepcounter[/tt] imposta [tt]\@currentlabel[/tt] per mezzo di un [tt]\protected@edef[/tt], non di un [tt]\protected@xdef[/tt]. Se ci si pensa un attimo, si vede che non potrebbe essere altro che così. Fine parentesi.
Ora, il tuo codice
golden_boy” post=112171[…]
`
(vedi Figura \ref{MeshCloud}).\begin{figure}[!h]
\begin{center}
\includegraphics[scale=0.45]{PIC}
\caption{Mesh e Clouds in un metodo PIC}
\end{center}
\label{MeshCloud}
\end{figure}
`
[…]fa proprio ciò che ho appena detto non doversi fare: il comando [tt]\caption[/tt], il quale genera il numero al quale si vuol fare riferimento, si trova dentro a un gruppo (quello implicato dall’ambiente [tt]center[/tt]), ma il comando [tt]\label[/tt] si trova fuori dal quel gruppo; se lo sposti dentro, subito sotto [tt]\caption[/tt], vedrai che il riferimento incrociato funziona correttamente.
Come ha già rimarcato @robitex, tuttavia, questo non significa ancora che il codice sia “pulito”; infatti:
- non bisognerebbe mai usare lo specificatore [tt]h[/tt] da solo per un oggetto mobile, con o senza [tt]![/tt] di accompagnamento;
- in un oggetto mobile è, in generale, sbagliato usare l’ambiente [tt]center[/tt], perché genera degli spazi verticali eccessivi; si usi invece la semplice dichiarazione [tt]\centering[/tt], come fa vedere @robitex;
- non dimentichiamo, inoltre, che di solito è bene scrivere [tt]…vedi figura~\ref{MeshCloud}[/tt], con il simbolo [tt]~[/tt].
Ciao.
—
Gustavo
::
Innanzitutto, eliminiamo l’ovvio: ovviamente sai che per risolvere i riferimenti incrociati occorrono almeno due compilazioni successive completate correttamente (e non di rado anche di più), vero? 🙂Ciò premesso, la prima cosa che mi viene da chiederti è se, oltre al problema che tu riporti, si verifichi per caso qualche altro errore che impedisca la corretta terminazione della compilazione.
Aggiungo qualche osservazione non richiesta e del tutto scorrelata dal problema che lamenti:
- Togli lo spazio prime di [tt]~[/tt]: non`L'esempio descritto è schematizzato nella figura ~\ref{fig:1.2}`bensì`L'esempio descritto è schematizzato nella figura~\ref{fig:1.2}`
- Non usare etichette numeriche come [tt]fig:1.2[/tt]: se cambi l’ordine delle figure, che fai, ridefinisci tutte le etichette? Usa invece etichette mnemoniche, p.e. [tt]fig:GraficoEsperimentoDellePapere[/tt].
- Non usare mai lo specificatore [tt]h[/tt] da solo per un oggetto mobile. Accompagna sempre [tt]h[/tt] con almeno uno specificatore [tt]t[/tt].
Ciao.
—
Gustavo
::lorenzo.pantieri” post=112020
Difenderei, invece, l’uso dei quantificatori, che Lorenzo sembra deprecare in quanto «stenografia».
Non depreco i simboli logici. Dico solo che a volte non aggiungono molto al discorso. Se dico che “dati due numeri razionali distinti, c’è sempre un numero razionale fra essi comrpeso” il tutto è chiarissimo. E scriverlo con i simboli logici non aggiunge chiarezza, anzi.
Va bene, adesso non mettiamoci a litigare: c’è naturalmente del vero anche nel tuo punto di vista, e, come ho detto, l’approccio didattico dipende moltissimo dalle situazioni che uno si trova davanti. Quel che mi premeva sottolineare è che non bisogna neanche considerare il formalismo come un tabù.
lorenzo.pantieri” post=112020Ho studiato analisi con un professore considerato fra i massimi analisti viventi […]
Interessante! Chi era? Magari è lo stesso con il quale ho studiato io…
Ciao.
—
Gustavo
::
Ahimè, gran magra figura quella di colui il quale si atteggia a “bacchettatore” e poi sbaglia a sua volta! Naturalmente, nella formula con la quale, nel mio precedente messaggio, pretendevo di esprimere la proprietà di densità ordinale manca un «a<b implica»: l’enunciato corretto si esprime con qualcosa di simile a
`\forall a\in\R, \forall b\in\R \quad \bigl(aA = (B+b)·h/2 che non dalla frase «l’area è data dalla metà del prodotto della somma delle basi per l’altezza»; e allo stesso modo in cui, a un certo punto, si è cominciato a scrivere 3x^2+4x=x+1 anziché «il triplo del quadrato della cosa aumentato del quadruplo della cosa uguagli…». Ma naturalmente, tutto dipende anche dal tipo di scuola e di alunni.Chiedo di nuovo scusa per il reiterato off-topic.
Ciao.
—
Gustavo
::
Non posso davvero trattenermi dal fare due commenti del tutto estranei all’uso di (La)TeX e, dunque, off-topic.Mike95″ post=112005[…]
`
Vediamo le proprietà delle 4 operazioni nell'insieme numerico in cui lavoriamo; cioè l'insieme dei Reali $\Re$ \\
L'insieme $\Re$ è l'insieme di tutti i numeri da $-\infty$ a $+\infty$, grazie all'assioma di Dedekind è anche un insieme “Denso”:
\newtheorem*{ass}{Assioma di Dedekind}
\begin{ass}
Considerati due numeri qualunque $a$ e $b$ esisterà sempre un numero $c$ che gli starà in mezzo a questi due.
\end{ass}
`
[…]Ripeto, non posso esimermi dall’osservare che questo testo contiene errori di forma, di sostanza e, direi anche, di “esposizione didattica” (se così posso esprimermi).
- Il testo sembrerebbe essere una dispensina di matematica destinata ad alunni delle superiori; capisco che da molti anni viene considerato doveroso, da parte degli insegnanti, abbassare il loro linguaggio al livello di quello delle «chat», ma arrivare addirittura a palesi sgrammaticature come «esisterà sempre un numero c che gli starà in mezzo a questi due» mi sembra davvero troppo.
- Ritengo che, sebbene con ragazzi di quest’età, oltretutto spesso svogliati, si possa (e si debba!) acconsentire all’uso di un linguaggio colloquiale per introdurre un concetto, in matematica non si possa comunque prescindere dall’insegnare, senza cedimenti o compromessi, anche il linguaggio tecnico proprio della disciplina. Pertanto, si includano pure commenti e spiegazioni preliminari in stile discorsivo e informale, ma quando si giunge alla formulazione — per così dire — “incorniciata” di un teorema o di un assioma, si usi il linguaggio appropriato:`\forall a\in\mathbb{R}, \forall b\in\mathbb{R} \quad \exists c\in\mathbb{R} \text{ tale che } a
tutti i numeri da -∞ a +∞»? «Tutti» quali? - (Il punto più importante) L’assioma di Dedekind non è quello citato: esso non asserisce che i numeri reali formano un insieme ordinato denso (che è appunto la proprietà espressa dall’enunciato riportato nell’esempio), bensì che essi formano un insieme ordinato completo, cioè un insieme ordinato nel quale ogni sottoinsieme non vuoto e superiormente limitato ha un estremo superiore. La densità ordinale è una proprietà posseduta anche dall’insieme dei numeri razionali, il quale, però, non è completo (com’è ben noto!).
Spero che ora non divampi un flame perché mi sono permesso di “bacchettare” l’autore della domanda… 😐
Ciao.
—
Gustavo
18 Ottobre 2017 alle 1:34 in risposta a: Elemento numerato che non si aggiorni in base alla posizione nel documento #111693::
È chiaro che, negli stretti termini in cui l’hai formulato, il problema è irrisolvibile con (La)TeX in linea di principio.Questo perché (La)TeX è un programma di tipocomposizione che funziona compilando uno o più file sorgenti; un file sorgente è un puro e semplice file di testo, cioè una pura e semplice sequenza ordinata di caratteri, e quindi semplicemente non incorpora l’informazione relativa all’ordine temporale nel quale i caratteri sono stati inseriti.
Mi spiego meglio: dato un file sorgente [tt].tex[/tt] che contenga il testo seguente
`
\documentclass{article}
\begin{document}
Pippo.\par
Pluto.\par
Paperino.\par
\end{document}
`
semplicemente non c’è alcun modo di sapere se esso sia stato scritto tutto in una volta, oppure creando dapprima un file che contenesse solo
`
\documentclass{article}
\begin{document}
Pippo.\par
Paperino.\par
\end{document}
`
e poi modificandolo in un secondo momento con l’aggiunta della riga`Pluto.\par`Il tuo problema richiede di aggiungere in qualche modo al file sorgente l’informazione circa l’ordine temporale di inserimento delle sue parti, mediante l’utilizzo di un opportuno sistema di markup, che dovrà essere progettato in base alle tue esigenze. Ti chiedo quindi di riflettere su questo punto e di indicarci che tipo di notazione sei disposto a usare per contrassegnare le parti del tuo documento che si rifericono a differenti versioni dello stesso.
In teoria, sarebbe possibile automatizzare anche quest’aspetto mediante l’utilizzo di file ausilari che trasportino da una compilazione all’altra l’informazione relativa agli stati precedenti del documento: sconsiglio fortemente di adottare un approccio di questo tipo. Creare questa sorta di “metadocumenti appiccicosi” (sticky) crea di solito complicazioni a non finire nella loro gestione. Per esempio, una compilazione viene avviata per errore su una versione del documento nuova, ma non ancora finita; ciò comporta la generazione automatica delle informazioni ausiliarie come se si fosse veramente creata una nuova versione, per cui l’utente si rende conto che, quando avvierà la compilazione della nuova versione completata e corretta, questa verrà interpretata come una versione ulteriore; l’utente cerca allora di cancellare i file ausiliari, ma questo peggiora ulteriormente, e di molto, la situazione… In poco tempo, l’utente finirà col trovarsi nella stessa situazione in cui vanno tipicamente a finire i personaggi dei cartoni animati che maneggiano oggetti appiccicosi, e cioè avvolto in un viluppo inestricabile al quale partecipano anche le sue quattro membra, formando artistici nodi asimmetrici.
Ciao.
—
Gustavo
::
Distratto come sono, ho completamente dimenticato di considerare il problema del separatore delle cifre decimali, che in italiano deve essere la virgola e non il punto. Se si usa siunitx, tutto quello che c’è da fare è aggiungere la seguente riga di codice
`
\sisetup{output-decimal-marker={,}}
`
nel preambolo; ecco l’esempio completo modificato:
`
% 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}
\usepackage{siunitx}
\usepackage{xparse} % per “\NewDocumentCommand” e compagnia\sisetup{output-decimal-marker={,}}
% Per evitare ripetizioni:
\NewDocumentCommand \miagrand { m o }
{%
\IfNoValueTF {#2}{%
\SI{#1}{\newton\metre}%
}{%
\SI{#1e#2}{\newton\metre}%
}%
}\begin{document}
Testo che precede le formule. Ne metto solo tre per riga perch\'{e} quattro
non ci stanno nella giustezza preimpostata dalla classe \texttt{article}.
%
\begin{flalign*}
M_{1} &= \miagrand{0} &
M_{2} &= \miagrand{4.13}[6] &
M_{3} &= \miagrand{8.25}[6] \\
M_{4} &= \miagrand{1.11}[7] &
M_{5} &= \miagrand{1.11}[7] &
M_{6} &= \miagrand{1.11}[7] \\
M_{7} &= \miagrand{1.11}[7] &
M_{8} &= \miagrand{1.11}[7] &
M_{9} &= \miagrand{1.2345}[12]
\end{flalign*}
%
Testo che segue le formule.\end{document}
`
Se non si usa siunitx, si potrebbe pensare di cambiare localmente il [tt]\mathcode[/tt] del carattere [tt],[/tt], ma già questa diventa una modifica antipatica da fare “a mano”: ecco un motivo in più per usare sempre siunitx! 🙂Ciao.
—
Gustavo
-
AutoreRisposte