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
[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!