Я хотел бы раскрасить некоторые библиографические записи, например, «важные» и «наградные» статьи. Что у меня есть на данный момент:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber,
isbn=true,
giveninits=true,
style=numeric,
maxnames=99,
sorting=ydnt,
defernumbers=true,
autocite=superscript]{biblatex}
\defbibheading{bibliography}[\refname]{}
\addbibresource{references.bib}
\renewbibmacro{in:}{}
\usepackage[usenames,dvipsnames]{xcolor}
\DeclareBibliographyCategory{important}
\DeclareBibliographyCategory{award}
\addtocategory{important}{small}
\addtocategory{award}{big}
\AtEveryBibitem{
\ifcategory{award}%
{\color{blue}}%
{}%
\ifcategory{important}%
{\color{orange}}%
{}%
}
\begin{document}
\section{Main text}
\cite{small}
\cite{big}
\section{Bibliography}
\printbibliography
\end{document}
Однако только сам bibentry оранжевый (или синий, не показан ниже), а не номер ссылки рядом с ним. Как мне этого добиться?
решение1
Вы можете просто использовать \AtBeginBibliography
и , \AtEveryBibitem
чтобы задать код для раскрашивания только библиографических записей данной important
категории.
PS = Поскольку вы не добавили пример своего .bib
файла, я использовал biblatex-examples.bib
.
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber,
isbn=true,
giveninits=true,
style=numeric,
maxnames=99,
sorting=ydnt,
defernumbers=true,
autocite=superscript]{biblatex}
\defbibheading{bibliography}[\refname]{}
\addbibresource{biblatex-examples.bib}
\renewbibmacro{in:}{}
\usepackage[usenames,dvipsnames]{xcolor}
\DeclareBibliographyCategory{important}
\addtocategory{important}{knuth:ct:a}
\addtocategory{important}{knuth:ct:c}
\AtBeginBibliography{%
\DeclareFieldFormat{labelnumberwidth}{\ifcategory{important}%
{\color{orange}\mkbibbrackets{#1}}%
{\mkbibbrackets{#1}}%
}}
\AtEveryBibitem{\ifcategory{important}
{\color{orange}}
{}}
\begin{document}
\section{Main text}
\cite{knuth:ct}
\cite{knuth:ct:a}
\cite{knuth:ct:b}
\cite{knuth:ct:c}
\cite{companion}
\section{Bibliography}
\printbibliography
\end{document}
Редактировать:
Команда \ifcategory
имеет следующий синтаксис:
\ifcategory{hcategoryi}{htruei}{hfalsei}
аналогично многим другим \if
командам, см biblatex
. параграф руководства 4.6.2 «Автономные тесты».
Внутри вы можете вложить столько s (или других s) htruei
, сколько захотите, вам нужно только обратить внимание на соответствие всех фигурных скобок.hfalsei
\ifcategory
\if
Вот пример с тремя разными цветами для трех разных категорий:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber,
isbn=true,
giveninits=true,
style=numeric,
maxnames=99,
sorting=ydnt,
defernumbers=true,
autocite=superscript]{biblatex}
\defbibheading{bibliography}[\refname]{}
\addbibresource{biblatex-examples.bib}
\renewbibmacro{in:}{}
\usepackage[usenames,dvipsnames]{xcolor}
\DeclareBibliographyCategory{important}
\addtocategory{important}{knuth:ct:a}
\addtocategory{important}{knuth:ct:c}
\DeclareBibliographyCategory{awards}
\addtocategory{awards}{knuth:ct:b}
\DeclareBibliographyCategory{ducks}
\addtocategory{ducks}{companion}
\AtBeginBibliography{%
\DeclareFieldFormat{labelnumberwidth}%
{\ifcategory{important}% if
{\color{orange}\mkbibbrackets{#1}}% then
{\ifcategory{awards}% else if
{\color{blue}\mkbibbrackets{#1}}% then
{\ifcategory{ducks}% else if
{\color{green}\mkbibbrackets{#1}}% then
{{\mkbibbrackets{#1}}%else
}% end if
}% end if
}% end if
}}
\AtEveryBibitem%
{\ifcategory{important}% if
{\color{orange}}% then
{\ifcategory{awards}% else if
{\color{blue}}% then
{\ifcategory{ducks}% else if
{\color{green}}% then
{}%else
}% end if
}% end if
}% end if
\begin{document}
\section{Main text}
\cite{knuth:ct}
\cite{knuth:ct:a}
\cite{knuth:ct:b}
\cite{knuth:ct:c}
\cite{companion}
\section{Bibliography}
\printbibliography
\end{document}