У меня такая же ситуация, как у следующего пользователя: biblatex: Улучшение \autocite в случае потенциально вложенных сносок
Я хочу использовать \autocite
внутри \footnote
. Это приводит к тому, что цитата оказывается заключенной в скобки. Я хочу изменить поведение \autocite
used within \footnote
для вывода цитаты без скобок, как это \cite
сделал бы простой вызов .
Как я могу изменить поведение \autocite
внутри \footnote
?
решение1
Решение зависит от стиля цитирования. Для стилей вроде authortitle
, verbose
и их соответствующих вариантов (а также для biblatex-juradiss
), которые выполняют autocite=footnote
, нам нужно только переопределить базовый \smartcite
макрос так, чтобы он не добавлял скобки в сносках (заменив \mkbibparens
на \textnormal
).
\documentclass{article}
\usepackage[style=authortitle]{biblatex}
\DeclareCiteCommand{\smartcite}[\iffootnote\textnormal\mkbibfootnote]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareMultiCiteCommand{\smartcites}
[\iffootnote\textnormal\mkbibfootnote]{\smartcite}{\multicitedelim}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{A01,
author = {Author, A.},
year = {2001},
title = {Alpha},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\null\vfill% just for the example
Some text \autocite{A01}.
Some text.\footnote{A footnote \autocite{A01}.}
\printbibliography
\end{document}
Для стилей, подобных authoryear
тому, который выполняется по умолчанию autocite=inline
(использует \parencite
), нам нужно объявить новое autocite
значение параметра (например, inlineplainfootnote
), которое указывает на новый базовый макрос (например, \mysmartcite
), который делает то, что вам нужно (добавляет скобки в обычный текст, не добавляйте их в сноски).
\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\DeclareAutoCiteCommand{inlineplainfootnote}{\mysmartcite}{\mysmartcites}
\DeclareCiteCommand{\mysmartcite}[\iffootnote\textnormal\mkbibparens]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareMultiCiteCommand{\mysmartcites}
[\iffootnote\textnormal\mkbibparens]{\mysmartcite}{\multicitedelim}
\ExecuteBibliographyOptions{autocite=inlineplainfootnote}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{A01,
author = {Author, A.},
year = {2001},
title = {Alpha},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\null\vfill% just for the example
Some text \autocite{A01}.
Some text.\footnote{A footnote \autocite{A01}.}
\printbibliography
\end{document}