Если у меня есть примечание=, которое само включает \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: ().
Вот скриншот:
Вот 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}
Обратите внимание, что есть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}
Если вам нужно похожее исправление с notes2bib
, вы можете использовать
\DeclareFieldFormat[bibnote]{note}{%
\togglefalse{blx@bibliography}%
#1%
}