平均能量损失

平均能量损失

作为标题点,我希望在文档中仅显示作者姓名和日期的颜色,其中使用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}和的顺序即可。\mkbibparenscolourparens

然后我们可以重新定义\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的值而改变。mergedatebiblatex

平均能量损失

\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}

MWE 输出

相关内容