Вторая ссылка внутри примечания приводит к появлению дополнительной точки.

Вторая ссылка внутри примечания приводит к появлению дополнительной точки.

Если у меня есть примечание=, которое само включает \cite, то второе \cite имеет начальную точку "."

Например, в выводе ниже я получаю Another sentence.[. 2], но я ожидаюAnother sentence.[2]

[1]
References
[1] A sentence.[2] Another sentence.[. 2] Yet another sentence[2]
[2] An Author. “A Title”. In: ().

Вот скриншот:

Вывод показывает ". 2" вместо "2"

Вот MWE:

\documentclass{article}
\usepackage{biblatex}
\addbibresource{\jobname.bib}

\begin{filecontents}{\jobname.bib}
@misc{AFootnote,
  note={A sentence.\cite{AnArticle}
    Another sentence.\cite{AnArticle}
    Yet another sentence.\cite{AnArticle}\nopunct}
}

@article{AnArticle,
author={An Author},
title={A Title},
}
\end{filecontents}

\begin{document}

\cite{AFootnote}

\printbibliography

\end{document}

Для компиляции примера я использую:

        pdflatex book
        biber book
        pdflatex book
        biber book
        pdflatex book
        pdflatex book

Я использую следующие версии biber и pdflatex под macOS:

bash-3.2$ biber --version
biber version: 2.19
bash-3.2$ pdflatex --version
pdfTeX 3.141592653-2.6-1.40.25 (TeX Live 2023)
kpathsea version 6.3.5
Copyright 2023 Han The Thanh (pdfTeX) et al.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the pdfTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the pdfTeX source.
Primary author of pdfTeX: Han The Thanh (pdfTeX) et al.
Compiled with libpng 1.6.39; using libpng 1.6.39
Compiled with zlib 1.2.13; using zlib 1.2.13
Compiled with xpdf version 4.04
bash-3.2$ 

Да, я понимаю, что это довольно странно. Потенциальный издатель предпочитает, чтобы сноски и ссылки были перемешаны в конце каждой главы, поэтому для сносок я использую misc с примечанием. Некоторые из сносок сами по себе содержат ссылки на другие источники. Странно то, что именно вторая цитата имеет начальную точку. Использование \supercite приводит к чему-то похожему с начальным ".".

решение1

Это в принципе та же проблема, что иhttps://github.com/plk/biblatex/issues/988иbiblatex: \parencite в поле примечания печатает поддельные ; со стилем authoryear-icomp(а такжеbiblatex: \DeclareCiteCommand добавляет точку с запятой между \printfield и \printnames, но только иногда): В контексте библиографии biblatexне сбрасывает автоматически буфер пунктуации \...citeкоманд. Это позволяет \...citeкомандам напрямую работать с макросами библиографии и другим biblatexкодом, который создает текст в библиографии, но это не работает особенно хорошо, когда есть текст и пунктуация, которые не создаются сами по biblatexсебе (например, фактическое содержимое полей).

Некоторые другие решения обсуждаются в ссылках, но для вашего варианта использования, где @miscпо сути всегда есть обычная сноска, я бы, вероятно, посоветовал biblatexне предполагать, что noteтакая запись есть в библиографии.

\documentclass{article}
\usepackage{biblatex}

\DeclareFieldFormat[misc]{note}{%
  \togglefalse{blx@bibliography}%
  #1%
}

\begin{filecontents}{\jobname.bib}
@misc{AFootnote,
  note = {A sentence.\cite{AnArticle}
          Another sentence.\cite{AnArticle}
          Yet another sentence.\cite{AnArticle}\nopunct},
}
@article{AnArticle,
  author = {An Author},
  title  = {A Title},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\cite{AFootnote}

\printbibliography
\end{document}

[1] Предложение.[2] Другое предложение.[2] Еще одно предложение.[2] [2] Автор. «Название». В: ().


Обратите внимание, что естьnotes2bibупаковкакоторый позволяет вам отправлять сноски в библиографию, используя интерфейс, который больше похож на обычную \footnoteкоманду. В частности, вам не нужно вручную записывать сноску в .bibфайл (где, давайте посмотрим правде в глаза, они на самом деле не принадлежат, семантически - внутренне пакет делает то же самое, что и вы, но скрывает это от конечного пользователя). Этот пакет не страдает от той же проблемы в большинстве "обычных" ситуаций, поскольку он определяет специальный драйвер для "сносок", который не использует буфер пунктуации перед печатью примечания.

\documentclass{article}
\usepackage[backend=biber, style=numeric, sorting=none,]{biblatex}
\usepackage{notes2bib}

\begin{filecontents}{\jobname.bib}
@article{AnArticle,
  author = {An Author},
  title  = {A Title},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\bibnote{A sentence.\cite{AnArticle}
          Another sentence.\cite{AnArticle}
          Yet another sentence.\cite{AnArticle}}

\printbibliography
\end{document}

[1] Предложение.[2] Другое предложение.[2] Еще одно предложение.[2]. [2] Автор. «Название». В: ().

Если вам нужно похожее исправление с notes2bib, вы можете использовать

\DeclareFieldFormat[bibnote]{note}{%
  \togglefalse{blx@bibliography}%
  #1%
}

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