Latex3: Сообщения \ msg_term не сообщают, откуда они приходят

Созданный на 11 мая 2021  ·  12Комментарии  ·  Источник: latex3/latex3

Как показывает следующий 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

decision-needed

Самый полезный комментарий

Я вроде как второй, но не думаю, что нам действительно нужна вторая ось. Ошибки + предупреждения всегда должны сообщаться imho в терминале + журнале, только для информации кажется, что действительно есть информация о двух классах (только журнал) и информация о термине.

Обратите внимание, что наличие отдельных осей в любом случае очень поможет, потому что обычно мы не хотим, чтобы вся информация внезапно превратилась в информацию о термине (что вы могли бы в любом случае, сопоставив информацию с информацией о термине), но обычно просто некоторая информация также всегда идет в терминал, поэтому я бы подумал о добавлении дополнительной категории terminfo и некоторых соответствующих \msg_terminfo:nn чтобы вы могли четко указать свои намерения в отношении поведения по умолчанию в коде без необходимости устанавливать это несколько скрытое в настройке msg .

Все 12 Комментарий

Я не очень хорошо знаком с 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 .

Была ли эта страница полезной?
0 / 5 - 0 рейтинги