
在如何在 biblatex 中建立 \citejournal、\citebooktitle、\cite... 指令?Gonzalo Medina 和 Audrey 提供的程式碼的工作原理類似於\citeauthor{}
,例如,當您放入文件時,它只會創建一本書或期刊的標題......該\citeauthor
命令也會出現此問題。
在自動的Vgl。& 自動報價縮排(取決於報價長度)lockstep 根據 lockstep 和 Martin Scharrer 先前的貢獻創建了一個報價命令
每當輸出中超過一定行數(最好是 3 行)時,就會進行縮排版。
引文將自動排版,不含“Vgl”。 ——無論是短形式或長形式。
當輸出是釋義或摘要時(換句話說:當輸出沒有引用時),它會使用前註“Vgl”進行排版。
它在 biblatex 中工作。
主要目的是自動化vgl。(engl.比較)和行縮排。
問題:不幸的是,當您組合這兩個代碼時,前註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:vgl。這裡使用的程式碼是moewe根據lockstep的版本稍微改進的。它避免了奇怪的編號和不需要的前註輸出vgl。在 biblatex 的設定中autocite=footnote
(鏈接Biblatex:問題vgl。以及動態引用指令中的編號)。
註2:\citeauthor{}
該問題可以透過將命令替換為 來解決\citeauthor[\unspace][]{}
。由於這會影響可讀性,因此首選全域解決方案。然而,也許全球解決方案可以在此基礎上建立。
答案1
您可以定義一個\newbibmacro*{simp:prenote}
從不列印任何“vgl”/比較內容的新內容
\newbibmacro*{simp:prenote}{%
\iffieldundef{prenote}
{}
{\printfield{prenote}%
\setunit{\prenotedelim}}}
bibmacro{prenote}
(順便說一句,這是in的標準定義biblatex.def
。)
然後我們在所有\citetitle
/\citeauthor
和朋友宏中使用這個簡單的 bib 宏
我們必須重新定義要使用的標準\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}