Как включить имя входного файла в сообщение об ошибке?

Как включить имя входного файла в сообщение об ошибке?

Я хочу добавить сообщение об ошибке в класс, который я создаю, когда пользователь (которым обычно буду я...) забывает или путает последовательность вызова макроса. Я могу сделать это:

\expandafter\ifblank\expandafter{\MyClass@requiredvalue}
{\ClassError{myclass}{Entry requires version selection using
      \protect\selectversion \on@line}{}}
{}}

в последней части последовательности, но поскольку у меня есть куча файлов, которые включены друг в друга, номер строки бесполезен без имени файла. Есть ли какой-то способ получить имя файла в дополнение к/вместо номера строки?

решение1

Thecurrfileупаковкапредоставляет несколько методов для получения имени и пути текущего файла. Например, вы можете использовать макрос \currfilename:

\ClassError{myclass}{Entry requires version selection using
  \protect\selectversion \on@line (\currfilename)}{}

Обратите внимание, что в некоторых случаях это может не работать. Например, если вы загрузите пакет currfileв файл определения класса, \currfilenameвместо имени файла определения класса будет указано имя файла документа tex. Каждый загруженный после этого файл даст правильный результат.

Связанный контент