Можно ли переопределить команду \Bnote в ednotes, чтобы она вела себя как обычная \footnote?

Можно ли переопределить команду \Bnote в ednotes, чтобы она вела себя как обычная \footnote?

В контексте пакета научного аппаратаednotesЯ хотел бы создать настраиваемую сноску \Bnote, которая будет вести себя как обычная сноска LaTeX; т. е. я хотел бы ввести в текст что-то вроде

blah blah.\Bnote{a}{This is the footnote text.} Blah blah blah...

И сноска появится под \Anoteслоем и будет выглядеть примерно так:

а Это текст сноски.

В ednotes.styфайле есть несколько команд, которые можно изменить для настройки \Bnote, но я не смог увидеть, как получить такое поведение. Почему, спросите вы, я просто не использую стандартную утилиту сносок? Потому что она выходит НАД слоем \Anote. Просто для ясности, поведение по умолчанию в ednote, которое я пытаюсь переопределить, заключается в использовании номера строки в качестве ссылки на сноску.

Я использую LuaLaTeX и TeXShop.

решение1

Я подозреваю, что возможно создать хак, который помещает "нормальные" сноски под "аппаратными" примечаниями ednotes. Поскольку я не знаю, как это сделать, вот второе лучшее решение, которое

  • удаляет номера строк и изменяет формат метки \Bnote;

  • определяет новый макрос \Bfootnote, который возится со footnoteсчетчиком, чтобы обеспечить (надеюсь) правильную автоматическую нумерацию нот «аппарата B».


\documentclass{article}

\usepackage[Bplain]{ednotes}

\linenumbers

\newcommand{\Bnotefmt}{%
  \renewcommand*{\sameline}[1]{\linesfmt{##1}}%
  \renewcommand*{\differentlines}[2]{\linesfmt{##1\textendash##2}}%
%  \renewcommand*{\linesfmt}[1]{\textbf{##1}\enspace}% DELETED
  \renewcommand*{\linesfmt}[1]{}% NEW
  \renewcommand*{\pageandline}[2]{##1.##2}% ##1 page, ##2 line.
  \renewcommand*{\repeatref}[1]{##1}% E.g., ...
  \renewcommand*{\repeatref}[1]{\textnormal{/}}% ... instead.
%  \renewcommand{\lemmafmt}[1]{##1\thinspace]\enskip}% DELETED
  \renewcommand{\lemmafmt}[1]
      {\stepcounter{footnote}\textsuperscript{##1}\addtocounter{footnote}{-1}}% NEW
  \renewcommand{\lemmaellipsis}{\textsymmdots}%
  \renewcommand{\notefmt}[1]{##1}%
}

\newcommand*{\Bfootnote}[1]{%
  \addtocounter{footnote}{-1}%
  \Bnote{\footnotemark}{#1}%
}

\begin{document}

\null\vfill% just for the example

Some text \Anote{a}{An apparatus A note.}.

Some text.\Bfootnote{An apparatus B note that behaves like a normal footnote.}

Some text.\Bfootnote{And another one.}

\end{document}

введите описание изображения здесь

решение2

В то же время я ( ednotesавтор ) сообщил по почте: ednotesиспользует manyfootкак "движок сносок". ednotesНастройка слоев сносок использует manyfootнастройку , чтобы создавать слои сносок без знаков сносок. Чтобы вернуть знаки сносок "назад", я думаю, не стоит пытаться изнутри ednotes, лучше использовать manyfootнапрямую.

В предыдущем решении я вижу переопределение \linesfmt. Это очень верно, несколько секунд назад я посмотрел на код и сам это обнаружил. Пол обнаружил это \lemmafmtраньше. Это решение выше действительно выглядит так, что оно должно работать; но manyfootуже предлагает счетчик, который лучше использовать напрямую.

решение3

Продолжая предложение Уве, вот еще один подход, который дает тот же результат, что и метод Lockstep (хотя и без автоматических счетчиков):

\documentclass{article}

\usepackage{ednotes}

\linenumbers

\newfootnote{Z}
\newcommand\footnoteZ[2]{\Footnotemark{#1}\FootnotetextZ{}{#2}}

\begin{document}

\null\vfill% just for the example

Some text \Anote{a}{An apparatus A note.}.

Some text.\footnoteZ{1}{An apparatus B note that behaves like a normal footnote.}

Some text.\footnoteZ{2}{And another one.}

\end{document}

Команда \newfootnote{}является частью пакета, manyfootзагружаемого ednote.

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