次のMWEを考えてみましょう
\documentclass{article}
\usepackage[style=authoryear-comp,backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\AtBeginDocument{%
\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}
}
\begin{document}
\textcite{knuth:ct:e}\\
\fullcite{salam}\\
Footcite\footfullcite{baez/article}
\printbibliography
\end{document}
これにより、文書内と参考文献の両方で、すべての cite コマンドの著者の姓が小文字で印刷されます。\textcite
コマンドの場合のみ、姓 (例では Knuth) を小文字ではなく通常のフォントでテキストに印刷します。
編集: 2016年3月現在 (biblatex 3.3)、\mkbibnamefamily
代わりに変更する必要があります。\mkbibnamelast
答え1
考えられる解決策としては、テキスト引用部内かどうかを判断するためのトグルを導入することです。次に、 の変更が\mkbibnamelast
トグルに対してパラメータ化されます。この解決策では、xpatch
パッケージを使用して bibmacro を変更しtextcite
、マクロを実行する直前にトグルを true に設定し、マクロの実行textcite
直後に false に設定します。textcite
\newtoggle{textcite}
\AtBeginDocument{
\renewcommand*{\mkbibnamelast}[1]{%
\iftoggle{textcite}{#1}{\textsc{#1}}}
}
\xpretobibmacro{textcite}{\toggletrue{textcite}}{}{}
\xapptobibmacro{textcite}{\togglefalse{textcite}}{}{}
答え2
\documentclass{article}
\usepackage[style=authoryear-comp,backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\AtBeginDocument{%
\renewcommand*\mkbibnamelast[1]{\textsc{#1}}}
\let\TC\textcite
\renewcommand\textcite[1]{{\def\mkbibnamelast##1{##1}\TC{#1}}}% hold it local
%% If you need the optional argument of \textcite then we have to modify
%% the macro
\begin{document}
\textcite{knuth:ct:e}\\
\fullcite{salam}\\
Footcite\footfullcite{baez/article}
\printbibliography
\end{document}
答え3
の最新バージョンでは、biblatex
次のようなアプローチが使えます。グイドの答えただし、引用コマンドにパッチを適用してフラグを設定する代わりに、区切り文字のコンテキストをテストします。
\documentclass{article}
\usepackage[style=authoryear-comp,backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\makeatletter
\renewcommand*{\mkbibnamefamily}{%
\ifcsundef{mkbibnamefamily@\blx@delimcontext}
{\textsc}
{\csuse{mkbibnamefamily@\blx@delimcontext}}}
\newcommand*{\mkbibnamefamily@textcite}[1]{#1}
\makeatother
\begin{document}
\textcite{knuth:ct:e}
\fullcite{salam}
Footcite\footfullcite{sigfridsson}
\printbibliography
\end{document}