
У меня есть список элементов библатекса в документе, который дополнительно имеет раздел библиографии. В этой части я хочу перечислить некоторые элементы библиографии, \fullcite
но в другом стиле, чем основная библиография.
Я могу изменить количество авторов следующим образом:
\begingroup
\defcounter{minnames}{2}
\fullcite{key}
\endgroup
Как я могу еще больше изменить стиль \fullcite
?
МВЕБ
\documentclass[en-US,de-DE]{article}
\usepackage[
style=authoryear-ibid,
maxnames=2,
backend=biber,
safeinputenc,
isbn=false,
doi=false,
maxcitenames=2,
urldate=iso8601,
date=iso8601
]{biblatex}
\addbibresource{\jobname.bib}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{key,
author = {Author, A.},
year = {2001},
title = {Title},
publisher = {Publisher},
pagetotal = {383},
edition = {1},
pages = {151--154},
url = {http://www.google.com},
}
\end{filecontents}
\begin{document}
text1
\fullcite{key}
text2
\cite{key}
text3
\printbibliography[heading=bibintoc]
\end{document}
Я хочу удалить год, URL-адреса из этих элементов, перечисленных, \fullcite
а также номера страниц и издания книг?
решение1
Это можно сделать двумя способами: можно переопределить команду, \fullcite
чтобы очистить ненужные поля, или, как отмечено в комментариях, можно использовать \AtEverycitekey
для того же самого.
Концептуально, изменение \fullcite
кажется лучшим решением, поскольку использование \AtEveryCitekey
изменяет любую ссылку, поэтому, если вы хотите удалить какую-либо информацию из , \fullcite
которая обычно включается в обычный \cite
, то выдолжениспользуйте это решение.
Если вы просто удаляете URL, издание и страницы из , \fullcite
то не будет никаких плохих побочных эффектов от использования, \AtEveryCitekey
поскольку только \fullcite
команда цитирования будет выводить эти поля. Но если вы хотите удалить также и год (как вы упоминаете в комментариях), то изменение \fullcite
— единственный способ сделать это. \AtEveryCitekey
По этой причине я удалил решение из кода, но поместил его отдельно в конце.
В зависимости от типа информации, которую нужно подавить, вам может потребоваться использовать один из \clearfield
, \clearlist
или \clearname
. В случае publisher
, или location
, например, их типом является список, поэтому \clearlist
для их очистки вам нужно использовать . Раздел 2.2.2 документации biblatex
описывает каждое поле и его тип данных.
\documentclass[en-US,de-DE]{article}
\usepackage[
style=authoryear-ibid,
maxnames=2,
backend=biber,
safeinputenc,
isbn=false,
doi=false,
maxcitenames=2,
urldate=iso8601,
date=iso8601
]{biblatex}
\addbibresource{\jobname.bib}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{key,
author = {Author, A.},
year = {2001},
title = {Title},
publisher = {Publisher},
pagetotal = {383},
edition = {1},
pages = {151--154},
url = {http://www.google.com},
}
\end{filecontents}
\DeclareCiteCommand{\fullcite}
{\usebibmacro{prenote}}
{\clearfield{url}%
\clearfield{pages}%
\clearfield{pagetotal}%
\clearfield{edition}%
\clearfield{labelyear}%
\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}}
{\multicitedelim}
{\usebibmacro{postnote}}
\begin{document}
text1
\cite{key}
\fullcite{key}
text2
\cite{key}
text3
\printbibliography[heading=bibintoc]
\end{document}
С использованием\AtEveryCitekey
Как отмечено выше, использование \AtEveryCitekey
также может работать, если нет совпадений в информации, которая вам нужна в обычном cite, и информации, которую вы подавляете в \fullcite
. Вот код для использования этого метода:
\AtEveryCitekey{
\clearfield{url}
\clearfield{pages}
\clearfield{pagetotal}
\clearfield{edition}
\clearfield{labelyear}
}