- Questo topic ha 5 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 13 anni, 9 mesi fa da
antonio.macrì.
-
CreatoreTopic
-
12 Dicembre 2012 alle 10:12 #81281::
Vorrei generare in un sorgente [tt].tex[/tt] un avviso che compaia nella finestra dei messaggi quando si compila (come succede ad esempio per [tt]pgfplots[/tt] a proposito della compatibilità). Non dico nel file [tt].log[/tt] ma proprio nella finestrella che compare sotto il codice (con riferimento a Texmaker) con le scritte rosse per gli errori e blu per gli avvisi. Ho provato con [tt]\typeout[/tt] e [tt]\immediate\write16[/tt] (che ho spudoratamente copiato dal codice di [tt]pgfplots[/tt]), ma riesco ad ottenere gli avvisi solo nel file [tt].log[/tt]. Come si fa?Grazie
-
CreatoreTopic
-
AutoreRisposte
-
-
12 Dicembre 2012 alle 10:54 #81282::
Liverpool” post=80513Vorrei generare in un sorgente [tt].tex[/tt] un avviso che compaia nella finestra dei messaggi quando si compila (come succede ad esempio per [tt]pgfplots[/tt] a proposito della compatibilità). Non dico nel file [tt].log[/tt] ma proprio nella finestrella che compare sotto il codice (con riferimento a Texmaker) con le scritte rosse per gli errori e blu per gli avvisi. Ho provato con [tt]\typeout[/tt] e [tt]\immediate\write16[/tt] (che ho spudoratamente copiato dal codice di [tt]pgfplots[/tt]), ma riesco ad ottenere gli avvisi solo nel file [tt].log[/tt]. Come si fa?
Grazie
`\PackageWarning{liverpool}{Messaggio da liverpool}`
Ciao
Enrico
-
12 Dicembre 2012 alle 12:14 #81283::
Liverpool” post=80513Vorrei generare in un sorgente [tt].tex[/tt] un avviso che compaia nella finestra dei messaggi quando si compila (come succede ad esempio per [tt]pgfplots[/tt] a proposito della compatibilità). Non dico nel file [tt].log[/tt] ma proprio nella finestrella che compare sotto il codice (con riferimento a Texmaker) con le scritte rosse per gli errori e blu per gli avvisi. Ho provato con [tt]\typeout[/tt] e [tt]\immediate\write16[/tt] (che ho spudoratamente copiato dal codice di [tt]pgfplots[/tt]), ma riesco ad ottenere gli avvisi solo nel file [tt].log[/tt]. Come si fa?
Grazie
`\documentclass{article}
\begin{document}
\makeatletter
\def\text{Qui l'avviso che potrebbe anche andare\MessageBreak
a capo nell'output}
\def\textnl{\text, senza l'indicazione\MessageBreak del numero di riga}\ClassWarning{nome}{\text}
\ClassWarningNoLine{nome}{\textnl}
\PackageWarning{nome}{\text}
\PackageWarningNoLine{nome}{\textnl}\@latex@warning{\text}
\@latex@warning@no@line{\textnl}\GenericWarning{\@spaces\@spaces\space}{%
Warning: \text}
\GenericWarning{\@spaces\@spaces\space}{%
Warning: \textnl\@gobble}
.
\end{document}`Forse non sbaglio se dico che LaTeX suddivide gli avvisi in due categorie: quelli generati da un pacchetto/classe e quelli interni al nucleo di LaTeX. I primi quattro comandi servono per la prima categoria (Class
Warning o PackageWarning ). I due seguenti vengono usati internamente da LaTeX (LaTeX Warning). Gli ultimi due sono le varianti del comando base al quale si rifanno tutti i precedenti.[tt]\GenericWarning[/tt] dà la massima libertà, ma produce un output non formattato, per questo c’è bisogno di quegli [tt]\@spaces[/tt] ed eventualmente di [tt]\@gobble[/tt].
Ciò che viene mostrato nella finestrella è semplicemente quello che gli editor hanno ricavato analizzando il log. Più un messaggio è ben formato, più facile sarà riconoscerlo per gli editor: per questo motivo io non userei [tt]\GenericWarning[/tt]. Per il riconoscimento degli avvisi TeXmaker controlla semplicemente che compaia la stringa “Warning: “, ma il comportamento degli altri editor può variare. Per esempio TeXworks cerca esplicitamente l’output dei primi sei comandi.
In definitiva credo che la scelta migliore sia usare [tt]\PackageWarning[/tt]. Non deve necessariamente trovarsi dentro un pacchetto, puoi usarlo dovunque: se per esempio stai scrivendo una libreria per pgfplots, puoi mettere come primo argomento il nome della libreria stessa (o persino “pgfplots”). 😉
PS: per altro, sugli avvisi/info io non prenderei ispirazione dal codice di pgfplots… non riesco a spiegarmi perché faccia qualcosa come `! Package pgfplots Warning: …` ossia mostrare un avviso preceduto da “!”, che è tipico degli errori! Fregando in questo modo gli editor… 🙁 Oltre a quella “notification” di [tt]compat=newest[/tt] che nessun editor (mi risulta) riconosce: perché non un info o un warning? Boh!
-
12 Dicembre 2012 alle 14:15 #81284
-
12 Dicembre 2012 alle 14:47 #81285::
Liverpool” post=80517Grazie a tutti. Ancora due domande:
1) ciò che segue [tt]\PackageWarning[/tt] dovrebbe essere il nome del pacchetto che genera l’errore?
2) perché mi avete consigliato [tt]\PackageWarning[/tt] e non [tt]\@latex@warning[/tt]?Ciao
Il primo argomento è una stringa qualsiasi e otterrai [tt]Package
Warning[/tt]. Puoi usare anche [tt]\@latex@warning[/tt], perché no? Ma con il primo eviti i giochini con [tt]\makeatletter[/tt] e [tt]\makeatother[/tt]. Non rispecchierà veramente la realtà, ma se il tuo scopo è di far riconoscere l’avviso ai metodi balordi di TeXStudio o Kile, è una via sicura. Perché “metodi balordi”? Perché disabituano l’utente a prestare attenzione al log; non hai idea di quanti esempi che producono errori, bellamente ignorati da chi chiede aiuto, si vedano in giro. Ciao
Enrico
-
12 Dicembre 2012 alle 21:02 #81286::
egreg9″ post=80519Non rispecchierà veramente la realtà, ma se il tuo scopo è di far riconoscere l’avviso ai metodi balordi di TeXStudio o Kile, è una via sicura. Perché “metodi balordi”? Perché disabituano l’utente a prestare attenzione al log; non hai idea di quanti esempi che producono errori, bellamente ignorati da chi chiede aiuto, si vedano in giro.
Punto di vista autorevole, ma personalmente non son d’accordo.
L’utente con un minimo di pratica sa che il log è importante, che può aiutare a risolvere dei problemi e sa che ogni tanto va letto comunque (per esempio io lo faccio prima della “consegna”). Ma non trovo affatto pratico leggerlo a ogni compilazione.
Per un principiante, trovo ingiustificabile chiedergli di scorrere ogni volta il log in cerca di avvisi (o errori), si perderebbe tra tutti quei file, quei numeri e quell’accozzaglia amorfa che ne vien fuori. Se gli errori sono ignorati da un utente inesperto, secondo me in gran parte ne è causa il meccanismo pressoché scriteriato che c’è dietro (TeX non aiuta affatto, ma spesso è colpa dei pacchetti; per fortuna mi pare che LaTeX3 stia cercando di render più razionale la gestione dei messaggi).
Perciò quei “metodi balordi” secondo me sono necessari. Non lo dico perché in quello di TeXworks c’è del mio, ma semmai è il contrario: l’ho scritto convinto dell’importanza di un decente riconoscimento dei messaggi.
Ogni tanto Lorenzo sottolinea qualche punto debole di LaTeX che spaventa i principianti e li allontana: ecco, secondo me questo è uno di quelli.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.