作为标题点,我希望在文档中仅显示作者姓名和日期的颜色,其中使用fullcite
命令进行引用。MWE 可以是
\documentclass{article}
\usepackage[backend=biber,style=authoryear,uniquelist=false,maxcitenames=2]{biblatex}
\addbibresource{test.bib}
\begin{document}
\fullcite{test}
\end{document}
解决方案可以是定义一个自定义命令,例如
\newcommand{\colorfullcite}[1]{\textcolor{desired_color}{\fullcite{#1}}}
但这种方法却影响了整个文本。
一种解决方法是手动编辑.bib
文件(在此示例中test.bib
为文件):
@article{test,
title={title_test},
author={{\color{desired_color} author_test}},
year={{\color{desired_color}2015}},
publisher={test_publisher}
}
然而,我更喜欢一个更“自动化”的解决方案
答案1
我认为这可以以一种相当稳健的方式实现您的要求:
我们可以声明一些新的格式来为和sortname
着色date
:
\DeclareNameWrapperFormat{coloursortname}{\textcolor{red}{#1}}
\DeclareFieldFormat{colourparens}{\textcolor{blue}{\mkbibparens{#1}}}
\DeclareNameWrapperFormat
至少需要 3.12 版本biblatex
。
如果您不想让日期周围的括号变色,只需交换格式中的\textcolour{blue}
和的顺序即可。\mkbibparens
colourparens
然后我们可以重新定义\fullcite
以使用这些新格式。正常的引用和参考书目不受影响。
\DeclareCiteCommand{\fullcite}
{\usebibmacro{prenote}}
{\usedriver
{\DeclareNameAlias{sortname}{default}%
\DeclareNameWrapperAlias{sortname}{coloursortname}%
\xpatchbibmacro{date+extradate}
{\printtext[parens]}
{\printtext[colourparens]}
{}
{}}
{\thefield{entrytype}}}
{\multicitedelim}
{\usebibmacro{postnote}}
我用来xpatch
修补宏,因为这个宏根据传递给的选项date+extradate
的值而改变。mergedate
biblatex
平均能量损失
\documentclass{article}
\usepackage{xpatch}
\usepackage{xcolor}
\usepackage[style=authoryear,uniquelist=false,maxcitenames=2]{biblatex}
\addbibresource{biblatex-examples.bib}
\DeclareNameWrapperFormat{coloursortname}{\textcolor{red}{#1}}
\DeclareFieldFormat{colourparens}{\textcolor{blue}{\mkbibparens{#1}}}
\DeclareCiteCommand{\fullcite}
{\usebibmacro{prenote}}
{\usedriver
{\DeclareNameAlias{sortname}{default}%
\DeclareNameWrapperAlias{sortname}{coloursortname}%
\xpatchbibmacro{date+extradate}
{\printtext[parens]}
{\printtext[colourparens]}
{}
{}}
{\thefield{entrytype}}}
{\multicitedelim}
{\usebibmacro{postnote}}
\begin{document}
\verb|\autocite|: \autocite{baez/article}
\verb|\fullcite|: \fullcite{baez/article}
\printbibliography
\end{document}