Conforme mostrado pelo seguinte MCE, \msg_term
mensagens não dizem de onde vêm (ao contrário de \msg_warning
mensagens):
\begin{filecontents*}[overwrite]{mypackage.sty}
\ProvidesExplPackage
{mypackage}
{2021-05-11}
{0.1}
{
My Nice package
}
\NeedsTeXFormat{LaTeX2e}
%
\msg_new:nnn {mypackage} {Foo} {FOOBAR}
\msg_warning:nn {mypackage} {Foo}
\msg_term:nn {mypackage} {Foo}
\end{filecontents*}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass{article}
\usepackage{mypackage}
\begin{document}
\end{document}
escreve:
Empacotar meu pacote Aviso: FOOBAR
FOOBAR
ao passo que, para o último, seria de se esperar:
Pacote mypackage Info: FOOBAR
Não estou muito familiarizado com l3msg
, mas acho que isso é intencional. Se você quiser uma mensagem "Info", ela pode ser obtida usando \msg_info:nn
(mas depois vai para o log).
\msg_info:nn
(mas depois vai para o log).
Esse é o ponto: AFAICT, é bastante comum ver no terminal algumas mensagens de informação que são perfeitamente identificáveis.
A decisão de design aqui foi que a maioria das mensagens são de erro / aviso / informações e devem ir para o terminal e para o log. As duas funções de 'nível inferior', \msg_term:nn
e \msg_log:nn
, são bastante especializadas e devem ser 'não barulhentas'.
a maioria das mensagens é de erro / aviso / informação e deve ir tanto para o terminal quanto para o log.
Mas, precisamente, as mensagens informativas vão apenas para o registro:
\ msg_ info: nnnnnn {⟨módulo⟩} {⟨mensagem⟩} {⟨arg um⟩} {⟨arg dois⟩} {⟨arg três⟩} {⟨arg quatro⟩}
Emite ⟨módulo⟩ de informações ⟨mensagem⟩, passando ⟨arg um⟩ para ⟨arg quatro⟩ para o criador de texto
funções. O texto das informações é adicionado ao arquivo de log.
@dbitouze Ah, desculpe, sim: as informações estão apenas no log quando você diz. O objetivo com as mensagens 'brutas' era mais provável que fossem coisas de nível muito baixo, onde 'ruído' adicional não é necessário. Para ser honesto, não os vimos muito usados 'na natureza' - acho que o que me pergunto, em retrospectiva, são os casos de uso. (Para coisas de nível realmente baixo, eu usaria \iow_log:n
/ \iow_term:n
qualquer maneira.)
@josephwright Eu tendo a concordar que "info" deve ser como "aviso", com a diferença de que não é mostrado no terminal, mas não que registra as coisas de maneira diferente. Por exemplo, os avisos são geralmente formatados com quebras de linha explícitas com base na ideia de que há algum prefixo "(módulo)" nas linhas seguintes e quando eu mudo um grupo de aviso para informações, acho que tudo o que deve mudar é onde aparece, não como .
@FrankMittelbach É esse o caso: a questão era: acho que \msg_log:nn
, que faz menos (nenhuma) formatação. Indiscutivelmente, poderíamos eliminar \msg_log:nn
e \msg_term:nn
, pois na verdade eles estão entre o sistema de mensagens e simplesmente despejando linhas no log.
Duas questões distintas estão se misturando um pouco aqui.
Mensagens formatadas: atualmente temos erro / aviso / informação, com a última
aparecendo apenas no log. @dbitouze pede uma mensagem
terminal também. Talvez ele possa esclarecer um caso concreto em que tal mensagem
não deveria ser simplesmente uma mensagem de aviso?
Mensagens não formatadas: \ msg_ log: nn e \ msg_ term: nn. Não tenho opinião sobre
se deve mantê-los.
ok, obviamente entendi errado e li a solicitação incorretamente. Nesse caso, eu diria que não deve haver mudança no comportamento 2e normal (e o sistema de mensagens é para 2e, mesmo que estejamos aqui no repo expl3)
@dbitouze pede uma mensagem
Às vezes, você deseja informar o usuário sobre algo, mas não o assustar com um aviso.
Eu concordo com isso - conceitualmente acho que há dois eixos nessas mensagens: onde elas aparecem e quão severas são.
Digamos que eu tenha algum resultado de diagnóstico (marginalmente útil, mas não inútil) do processamento de algumas coisas e o envio para o arquivo de log por padrão. Mostrá-lo no console pode ser bom às vezes (uma opção de usuário “detalhada”), mas seria errado chamar essas coisas de avisos.
Eu meio que concordo com isso, mas não acho que realmente queremos um segundo eixo. erros + avisos devem sempre ser relatados imho no terminal + log, apenas para informações, parece que realmente existem duas classes info (somente log) e term-info.
Observe que ter eixos separados ajudaria muito de qualquer maneira, porque normalmente não queremos que todas as informações de repente se tornem term-infos (o que você poderia de qualquer maneira mapeando info para term-info), mas normalmente apenas algumas informações para sempre ir para o terminal, então eu consideraria adicionar uma outra categoria terminfo
e alguns \msg_terminfo:nn
para que você possa deixar suas intenções para o comportamento padrão claras no código sem a necessidade de definir isso algo oculto na configuração do msg .
Comentários muito úteis
Eu meio que concordo com isso, mas não acho que realmente queremos um segundo eixo. erros + avisos devem sempre ser relatados imho no terminal + log, apenas para informações, parece que realmente existem duas classes info (somente log) e term-info.
Observe que ter eixos separados ajudaria muito de qualquer maneira, porque normalmente não queremos que todas as informações de repente se tornem term-infos (o que você poderia de qualquer maneira mapeando info para term-info), mas normalmente apenas algumas informações para sempre ir para o terminal, então eu consideraria adicionar uma outra categoria
terminfo
e alguns\msg_terminfo:nn
para que você possa deixar suas intenções para o comportamento padrão claras no código sem a necessidade de definir isso algo oculto na configuração do msg .