
ВКак создать команду \citejournal, \citebooktitle, \cite… в biblatex?Гонсало Медина и Одри предоставили код, который работает так: \citeauthor{}
например, когда вы вставляете свой документ, он создает только название книги или журнала... Эта проблема возникает \citeauthor
и для этой команды.
ВАвтоматическийВгл.и автоматический отступ цитаты (в зависимости от длины цитаты)lockstep создает команду цитирования на основе предыдущих вкладов lockstep и Мартина Шаррера, которые
Если количество строк в выводе превышает определенное значение (предпочтительно 3), текст будет набран с отступом.
Ссылка будет автоматически набрана без «Vgl.» — независимо от того, краткая она или полная.
Если вывод представляет собой пересказ или резюме (другими словами: когда вывод не содержит цитат), он набирается с префиксом «Vgl».
Работает в библатексе.
Основная цель — автоматизировать каквгл.(англ. сравнить) и отступ строки.
Проблема:К сожалению, при объединении обоих кодов пренотавгл.будет предшествовать каждой команде и т \citeauthor
. \citetitle
д. в выводе. Вы получитеvgl. АвторвместоАвтор. Есть ли кто-нибудь, кто мог бы решить эту проблему глобально?
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[style=authoryear,autocite=footnote,backend=bibtex]{biblatex} % Here, Philip added "autocite=footnote,backend=bibtex"
%-------------------
\NewBibliographyString{compare}
\DefineBibliographyStrings{ngerman}{%
compare = {vgl\adddot},
}
\newbool{withintextquote}
\renewbibmacro*{multiprenote}{%
\renewbibmacro*{prenote}{%
\iffieldundef{prenote}
{}
{\printfield{prenote}%
\setunit{\prenotedelim}}}%
\iffieldundef{multiprenote}{%
\ifbool{withintextquote}{%
}{%
\bibstring{compare}\addspace
}%
}
{\printfield{multiprenote}%
\setunit{\prenotedelim}}}
\renewbibmacro*{prenote}{%
\iffieldundef{prenote}{%
\ifbool{withintextquote}{%
}{%
\bibstring{compare}\addspace
}%
}
{\printfield{prenote}%
\setunit{\prenotedelim}}}
\makeatletter
\newcommand{\cquotation}[1]{%
\begingroup
\booltrue{withintextquote}%
% \settowidth doesn't like paragraphs
\setbox\@tempboxa\hbox{%
\def\par{\hspace{3\linewidth}}% If a paragraph is included force long form
%\let\par\space % Ignore paragraphs
\let\footnote\@empty% make sure autocite does not do anything here; this is new
\let\autocite\@empty
#1}%
\ifdim\wd\@tempboxa>3\linewidth
\begin{quote}
\itshape
#1
\end{quote}
\else
{\itshape #1}%
\fi
\endgroup}
\makeatother
%-------------------
\DeclareCiteCommand{\citejournal}
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{journal}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\citebooktitle}
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{booktitle}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\citeintitle}% Based on \citetitle from biblatex.def
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{prenote}}
{\ifciteindex
{\indexfield{indextitle}}
{}%
\iffieldundef{journaltitle}
{\iffieldundef{booktitle}
{\iffieldundef{maintitle}
{\printfield[citetitle]{labeltitle}}% Behave like \citetitle if no "main" title
{\printtext[maintitle]{\printfield[titlecase]{maintitle}}}}
{\printtext[booktitle]{\printfield[titlecase]{booktitle}}}}
{\printtext[journaltitle]{\printfield[titlecase]{journaltitle}}}}
{\multicitedelim}
{\usebibmacro{postnote}}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Article{yoon,
author = {Yoon, Myeong S. and Ryu, Dowook and Kim, Jeongryul and Ahn, Kyo Han},
title = {Palladium pincer complexes with reduced bond angle strain: efficient catalysts
for the Heck reaction},
journaltitle = {Organometallics},
volume = {25},
number = {10},
date = {2006},
pages = {2409--2411}}
@InProceedings{salam,
author = {Salam, Abdus},
editor = {Svartholm, Nils},
title = {Weak and Electromagnetic Interactions},
booktitle = {Elementary Particle Theory},
booksubtitle = {Relativistic Groups and Analyticity},
booktitleaddon = {Proceedings of the Eighth Nobel Symposium},
eventdate = {1968-05-19/1968-05-25},
venue = {Aspen{\"a}sgarden, Lerum},
publisher = {Almquist \& Wiksell},
location = {Stockholm},
date = {1968},
pages = {367--377}}
@InProceedings{moraux,
author = {Moraux, Paul},
editor = {Lloyd, G. E. R. and Owen, G. E. L.},
title = {Le \emph{De Anima} dans la tradition gr{\`e}cque},
subtitle = {Quelques aspects de l'interpretation du trait{\'e}, de Theophraste {\`a}
Themistius},
shorttitle = {\emph{De Anima} dans la tradition gr{\`e}cque},
booktitle = {Aristotle on Mind and the Senses},
booktitleaddon = {Proceedings of the Seventh Symposium Aristotelicum},
eventdate = {1975},
publisher = cup,
location = {Cambridge},
date = {1979},
pages = {281--324}}
@InCollection{pines,
author = {Pines, Shlomo},
editor = {Twersky, Isadore},
indextitle = {Limitations of Human Knowledge According to Al-Farabi, ibn Bajja, and
Maimonides, The},
title = {The Limitations of Human Knowledge According to Al-Farabi, ibn Bajja, and
Maimonides},
shorttitle = {Limitations of Human Knowledge},
booktitle = {Studies in Medieval Jewish History and Literature},
publisher = hup,
location = {Cambridge, Mass.},
date = {1979},
pages = {82--109}}
\end{filecontents}
\begin{document}
This is a paraphrase \autocites{yoon}{yoon} % Added by Philip
This is a paraphrase \autocites{yoon}{yoon} % Added by Philip
\cquotation{This is a short direct quotation. \autocite{yoon}}
\cquotation{This is a long direct quotation. This is a long direct
quotation. This is a long direct quotation. This is a long direct
quotation. This is a long direct quotation. This is a long direct
quotation. This is a long direct quotation. This is a long direct
quotation.\autocite{yoon}}
This is a paraphrase \autocite{yoon}
This is a paraphrase with prenote \autocite[siehe hierzu auch][]{yoon}
This is a paraphrase \autocite{yoon}
This is a paraphrase \autocite{yoon}
This is a paraphrase \autocites{yoon}{yoon} % Added by Philip
This is a paraphrase \autocites{yoon}{yoon} % Added by Philip
\cquotation{This is a short direct quotation. \autocite{yoon}}
This is a paraphrase \autocite{yoon}
\noindent
\citeintitle{yoon} versus \citejournal{yoon} \\\\
\citeintitle{salam} versus \citebooktitle{salam} \\\\
\citeintitle{moraux} versus \citebooktitle{moraux} \\\\
\citeintitle{pines} versus \citebooktitle{pines}
\printbibliography
\end{document}
Примечание 1:вгл.Код, используемый здесь, немного улучшен moewe на основе версии lockstep. Он избегает странной нумерации и нежелательного вывода prenoteвгл.в autocite=footnote
настройке в библатексе (ссылкаБиблатекс: Проблемы свгл.и нумерация в команде динамического цитирования).
Примечание 2: Для \citeauthor{}
проблема может быть устранена путем замены команды на \citeauthor[\unspace][]{}
. Поскольку это влияет на читаемость, предпочтительнее глобальное решение. Однако, возможно, глобальное решение может основываться на этом.
решение1
Вы можете определить new \newbibmacro*{simp:prenote}
, который никогда не выводит никаких "vgl"/compare вещей
\newbibmacro*{simp:prenote}{%
\iffieldundef{prenote}
{}
{\printfield{prenote}%
\setunit{\prenotedelim}}}
(Это, кстати, стандартное определение bibmacro{prenote}
в biblatex.def
.)
Затем мы используем этот простой макрос bib во всех макросах \citetitle
/ \citeauthor
и друзьях.
Нам придется переопределить стандарт \citeauthor
/ \citetitle
макросы для использованияsimp:prenote
\DeclareCiteCommand{\citeauthor}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\ifciteindex
{\indexnames{labelname}}
{}%
\printnames{labelname}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand*{\citeauthor}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\ifciteindex
{\indexnames{labelname}}
{}%
\printnames[][1-1]{labelname}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\citetitle}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\ifciteindex
{\indexfield{indextitle}}
{}%
\printfield[citetitle]{labeltitle}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand*{\citetitle}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\ifciteindex
{\indexfield{indextitle}}
{}%
\printfield[citetitle]{title}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\citeyear}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\printfield{year}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand*{\citeyear}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\printfield{year}\printfield{extrayear}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\citedate}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\printdate}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand*{\citedate}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\printdateextra}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\citeurl}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\printfield[citeurl]{url}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\notecite}
{\printfield{simp:prenote}%
\setunit*{\prenotedelim}}
{\nocite{\thefield{entrykey}}}
{}
{\printfield{postnote}}
\DeclareCiteCommand{\citejournal}
{\usebibmacro{simp:prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{journal}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\citebooktitle}
{\usebibmacro{simp:prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{booktitle}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\citeintitle}% Based on \citetitle from biblatex.def
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\ifciteindex
{\indexfield{indextitle}}
{}%
\iffieldundef{journaltitle}
{\iffieldundef{booktitle}
{\iffieldundef{maintitle}
{\printfield[citetitle]{labeltitle}}% Behave like \citetitle if no "main" title
{\printtext[maintitle]{\printfield[titlecase]{maintitle}}}}
{\printtext[booktitle]{\printfield[titlecase]{booktitle}}}}
{\printtext[journaltitle]{\printfield[titlecase]{journaltitle}}}}
{\multicitedelim}
{\usebibmacro{postnote}}
Это довольно большой код, но он довольно прост.
МВЭ
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[style=authoryear,autocite=footnote,backend=bibtex]{biblatex} % Here, Philip added "autocite=footnote,backend=bibtex"
%-------------------
\NewBibliographyString{compare}
\DefineBibliographyStrings{ngerman}{%
compare = {vgl\adddot},
}
\newbool{withintextquote}
\renewbibmacro*{multiprenote}{%
\renewbibmacro*{prenote}{%
\iffieldundef{prenote}
{}
{\printfield{prenote}%
\setunit{\prenotedelim}}}%
\iffieldundef{multiprenote}{%
\ifbool{withintextquote}{%
}{%
\bibstring{compare}\addspace
}%
}
{\printfield{multiprenote}%
\setunit{\prenotedelim}}}
\renewbibmacro*{prenote}{%
\iffieldundef{prenote}{%
\ifbool{withintextquote}{%
}{%
\bibstring{compare}\addspace
}%
}
{\printfield{prenote}%
\setunit{\prenotedelim}}}
\newbibmacro*{simp:prenote}{%
\iffieldundef{prenote}
{}
{\printfield{prenote}%
\setunit{\prenotedelim}}}
\makeatletter
\newcommand{\cquotation}[1]{%
\begingroup
\booltrue{withintextquote}%
% \settowidth doesn't like paragraphs
\setbox\@tempboxa\hbox{%
\def\par{\hspace{3\linewidth}}% If a paragraph is included force long form
%\let\par\space % Ignore paragraphs
\let\footnote\@empty% make sure autocite does not do anything here; this is new
\let\autocite\@empty
#1}%
\ifdim\wd\@tempboxa>3\linewidth
\begin{quote}
\itshape
#1
\end{quote}
\else
{\itshape #1}%
\fi
\endgroup}
\makeatother
%-------------------
\DeclareCiteCommand{\citeauthor}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\ifciteindex
{\indexnames{labelname}}
{}%
\printnames{labelname}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand*{\citeauthor}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\ifciteindex
{\indexnames{labelname}}
{}%
\printnames[][1-1]{labelname}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\citetitle}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\ifciteindex
{\indexfield{indextitle}}
{}%
\printfield[citetitle]{labeltitle}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand*{\citetitle}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\ifciteindex
{\indexfield{indextitle}}
{}%
\printfield[citetitle]{title}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\citeyear}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\printfield{year}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand*{\citeyear}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\printfield{year}\printfield{extrayear}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\citedate}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\printdate}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand*{\citedate}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\printdateextra}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\citeurl}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\printfield[citeurl]{url}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\notecite}
{\printfield{simp:prenote}%
\setunit*{\prenotedelim}}
{\nocite{\thefield{entrykey}}}
{}
{\printfield{postnote}}
\DeclareCiteCommand{\citejournal}
{\usebibmacro{simp:prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{journal}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\citebooktitle}
{\usebibmacro{simp:prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{booktitle}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\citeintitle}% Based on \citetitle from biblatex.def
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{simp:prenote}}
{\ifciteindex
{\indexfield{indextitle}}
{}%
\iffieldundef{journaltitle}
{\iffieldundef{booktitle}
{\iffieldundef{maintitle}
{\printfield[citetitle]{labeltitle}}% Behave like \citetitle if no "main" title
{\printtext[maintitle]{\printfield[titlecase]{maintitle}}}}
{\printtext[booktitle]{\printfield[titlecase]{booktitle}}}}
{\printtext[journaltitle]{\printfield[titlecase]{journaltitle}}}}
{\multicitedelim}
{\usebibmacro{postnote}}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Article{yoon,
author = {Yoon, Myeong S. and Ryu, Dowook and Kim, Jeongryul and Ahn, Kyo Han},
title = {Palladium pincer complexes with reduced bond angle strain: efficient catalysts
for the Heck reaction},
journaltitle = {Organometallics},
volume = {25},
number = {10},
date = {2006},
pages = {2409--2411}}
@InProceedings{salam,
author = {Salam, Abdus},
editor = {Svartholm, Nils},
title = {Weak and Electromagnetic Interactions},
booktitle = {Elementary Particle Theory},
booksubtitle = {Relativistic Groups and Analyticity},
booktitleaddon = {Proceedings of the Eighth Nobel Symposium},
eventdate = {1968-05-19/1968-05-25},
venue = {Aspen{\"a}sgarden, Lerum},
publisher = {Almquist \& Wiksell},
location = {Stockholm},
date = {1968},
pages = {367--377}}
@InProceedings{moraux,
author = {Moraux, Paul},
editor = {Lloyd, G. E. R. and Owen, G. E. L.},
title = {Le \emph{De Anima} dans la tradition gr{\`e}cque},
subtitle = {Quelques aspects de l'interpretation du trait{\'e}, de Theophraste {\`a}
Themistius},
shorttitle = {\emph{De Anima} dans la tradition gr{\`e}cque},
booktitle = {Aristotle on Mind and the Senses},
booktitleaddon = {Proceedings of the Seventh Symposium Aristotelicum},
eventdate = {1975},
publisher = cup,
location = {Cambridge},
date = {1979},
pages = {281--324}}
@InCollection{pines,
author = {Pines, Shlomo},
editor = {Twersky, Isadore},
indextitle = {Limitations of Human Knowledge According to Al-Farabi, ibn Bajja, and
Maimonides, The},
title = {The Limitations of Human Knowledge According to Al-Farabi, ibn Bajja, and
Maimonides},
shorttitle = {Limitations of Human Knowledge},
booktitle = {Studies in Medieval Jewish History and Literature},
publisher = hup,
location = {Cambridge, Mass.},
date = {1979},
pages = {82--109}}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
This is a paraphrase \autocites{yoon}{yoon} % Added by Philip
This is a paraphrase \autocites{yoon}{yoon} % Added by Philip
\cquotation{This is a short direct quotation. \autocite{yoon}}
\cquotation{This is a long direct quotation. This is a long direct
quotation. This is a long direct quotation. This is a long direct
quotation. This is a long direct quotation. This is a long direct
quotation. This is a long direct quotation. This is a long direct
quotation.\autocite{yoon}}
This is a paraphrase \autocite{yoon}
This is a paraphrase with prenote \autocite[siehe hierzu auch][]{yoon}
This is a paraphrase \autocite{yoon}
This is a paraphrase \autocite{yoon}
This is a paraphrase \autocites{yoon}{yoon} % Added by Philip
This is a paraphrase \autocites{yoon}{yoon} % Added by Philip
\cquotation{This is a short direct quotation. \autocite{yoon}}
This is a paraphrase \autocite{yoon}
\noindent
\citeauthor{yoon} versus \citetitle{yoon} \\\\
\citeintitle{yoon} versus \citejournal{yoon} \\\\
\citeintitle{salam} versus \citebooktitle{salam} \\\\
\citeintitle{moraux} versus \citebooktitle{moraux} \\\\
\citeintitle{pines} versus \citebooktitle{pines}
\printbibliography
\end{document}