Как показывает следующий MCE, сообщения \msg_term
не сообщают, откуда они приходят (в отличие от сообщений \msg_warning
):
\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}
пишет:
Предупреждение о пакете mypackage: FOOBAR
ФУБАР
тогда как для последнего можно было ожидать:
Информация о пакете mypackage: FOOBAR
Я не очень хорошо знаком с l3msg
, но думаю, что это сделано намеренно. Если вам нужно сообщение «Информация», его можно получить с помощью \msg_info:nn
(но затем оно попадает в журнал).
\msg_info:nn
(но потом попадает в журнал).
В этом суть: AFAICT, довольно часто в терминале можно увидеть некоторые информационные сообщения, которые можно легко идентифицировать.
Дизайнерское решение здесь заключалось в том, что большинство сообщений являются сообщениями об ошибках / предупреждениях / информации и должны поступать как в терминал, так и в журнал. Две функции «нижнего уровня», \msg_term:nn
и \msg_log:nn
, довольно специализированы и предназначены для «не шумного».
большинство сообщений являются ошибками / предупреждениями / информацией и должны поступать как в терминал, так и в журнал.
Но именно информационные сообщения попадают только в журнал:
\ msg_ info: nnnnnn {module⟩} {message⟩} {arg one⟩} {arg two⟩} {arg three⟩} {arg four⟩}
Выдает информацию «модуль» «сообщение», передавая «аргумент один» на «аргумент четыре» для создания текста.
функции. Информационный текст добавляется в файл журнала.
@dbitouze А, извините, да: информация просто в журнале, как вы говорите. Цель «сырых» сообщений заключалась в том, чтобы они, скорее всего, были вещами очень низкого уровня, где дополнительный «шум» не требуется. Честно говоря, мы не видели, чтобы они часто использовались «в дикой природе» - я думаю, что меня интересует, оглядываясь назад, - это варианты использования. (Для действительно низкоуровневых вещей я бы в любом случае использовал \iow_log:n
/ \iow_term:n
.)
@josephwright Я склонен согласиться с тем, что «информация» должна иметь вид «предупреждение» с той разницей, что она не отображается на терминале, но не регистрирует данные по-другому. Например, предупреждения обычно форматируются с явным переносом строк на основе идеи о том, что в следующих строках есть некоторый префикс «(модуль)», и когда я меняю группу с предупреждения на информацию, я думаю, все, что должно измениться, - это то, где это отображается, а не то, как .
@FrankMittelbach Это так: вопрос был в том, что я думаю о \msg_log:nn
, который меньше (не) форматирует. Возможно, мы могли бы отбросить \msg_log:nn
и \msg_term:nn
, поскольку на самом деле они находятся между системой сообщений и просто записывают строки в журнал.
Здесь немного смешиваются два отдельных вопроса.
Отформатированные сообщения: в настоящее время у нас есть ошибка / предупреждение / информация, с последним
появляется только в журнале. @dbitouze запрашивает информационное сообщение, появляющееся на
терминал. Может быть, он сможет прояснить конкретный случай, когда такое сообщение
не должно быть просто предупреждающим сообщением?
Неформатированные сообщения: \ msg_ log: nn и \ msg_ term: nn. У меня нет мнения о
стоит ли их хранить.
ок, я явно ошибся концом флешки и неправильно прочитал запрос. В этом случае я бы сказал, что в обычном поведении 2e не должно быть никаких изменений (и система обмена сообщениями предназначена для 2e, даже если мы здесь, в репозитории Exp3)
@dbitouze также запрашивает информационное сообщение, появляющееся на терминале. Может быть, он сможет прояснить конкретный случай, когда такое сообщение не должно быть просто предупреждением?
Иногда нужно проинформировать пользователя о чем-то, но не напугать его предупреждением.
Я согласен с этим - концептуально я думаю, что у этих сообщений есть две оси: где они появляются и насколько они серьезны.
Скажем, у меня есть некоторый диагностический (незначительно полезный, но не бесполезный) вывод обработки некоторого материала, и я отправляю его в файл журнала по умолчанию. Отображение этого на консоли иногда может быть приятным («подробный» вариант для пользователя), но было бы неправильно называть эти вещи предупреждениями.
Я вроде как второй, но не думаю, что нам действительно нужна вторая ось. Ошибки + предупреждения всегда должны сообщаться imho в терминале + журнале, только для информации кажется, что действительно есть информация о двух классах (только журнал) и информация о термине.
Обратите внимание, что наличие отдельных осей в любом случае очень поможет, потому что обычно мы не хотим, чтобы вся информация внезапно превратилась в информацию о термине (что вы могли бы в любом случае, сопоставив информацию с информацией о термине), но обычно просто некоторая информация также всегда идет в терминал, поэтому я бы подумал о добавлении дополнительной категории terminfo
и некоторых соответствующих \msg_terminfo:nn
чтобы вы могли четко указать свои намерения в отношении поведения по умолчанию в коде без необходимости устанавливать это несколько скрытое в настройке msg .
Самый полезный комментарий
Я вроде как второй, но не думаю, что нам действительно нужна вторая ось. Ошибки + предупреждения всегда должны сообщаться imho в терминале + журнале, только для информации кажется, что действительно есть информация о двух классах (только журнал) и информация о термине.
Обратите внимание, что наличие отдельных осей в любом случае очень поможет, потому что обычно мы не хотим, чтобы вся информация внезапно превратилась в информацию о термине (что вы могли бы в любом случае, сопоставив информацию с информацией о термине), но обычно просто некоторая информация также всегда идет в терминал, поэтому я бы подумал о добавлении дополнительной категории
terminfo
и некоторых соответствующих\msg_terminfo:nn
чтобы вы могли четко указать свои намерения в отношении поведения по умолчанию в коде без необходимости устанавливать это несколько скрытое в настройке msg .