定制 Biblatex 样式以包含编号索引 + 书本上的图标

定制 Biblatex 样式以包含编号索引 + 书本上的图标

使用 moderncv + biblatex,我创建了带有标签前缀和索引号的出版物列表。对于特定索引,我想在标签索引的底部包含一个图像/图标,如下所示:

在此处输入图片描述

我想知道是否有任何方法或参考可以生成这种定制的 Biblatex 样式?

答案1

如果你的参考书目条目很短,那么放在标签编号下方的图标可能会与下一个条目的标签编号冲突。因此,我建议将图标放在标签的左侧,并附上来自奥黛丽回答使用 biblatex 和 moderncv 创建参考书目为了更好地moderncv兼容书目环境,那里有足够的空间。

图标可以从中取出fontawesome5并可以定位\raisebox(这段代码的灵感来自沃纳回答如何在枚举项旁边添加符号?) 和少许\hspace

有很多方法可以告诉biblatex哪些条目应该用图标显示。最大的问题是您是否想在文件中或在文件中告诉biblatex图标。.bib.tex

从文件设置图标.biboptions

在这里我使用了条目中的条目选项.bib,但相同的原则可以应用于类别(见下文)。

\documentclass[british]{moderncv}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[style=numeric, backend=biber]{biblatex}

\usepackage{fontawesome5}

\newcommand*{\printmedalicon}{%
  \raisebox{-1pt}[0pt][0pt]{\faIcon{medal}\hspace{1em}}}

\newtoggle{bbx:showicon}
\DeclareEntryOption[boolean]{showicon}{\settoggle{bbx:showicon}{#1}}

\newbibmacro*{showmedalicon}{%
  \iftoggle{bbx:showicon}
    {\printmedalicon}
    {}}

\defbibenvironment{bibliography}
  {\list
     {\usebibmacro{showmedalicon}%
      \printtext[labelnumberwidth]{% label format from numeric.bbx
        \printfield{labelprefix}%
        \printfield{labelnumber}}}
     {\setlength{\topsep}{0pt}% layout parameters from moderncvstyleclassic.sty
      \setlength{\labelwidth}{\hintscolumnwidth}%
      \setlength{\labelsep}{\separatorcolumnwidth}%
      \leftmargin\labelwidth%
      \advance\leftmargin\labelsep}%
      \sloppy\clubpenalty4000\widowpenalty4000}
  {\endlist}
  {\item}

\moderncvstyle{classic}
\moderncvcolor{burgundy}
\firstname{Jane}
\familyname{Doe}


\begin{filecontents}{\jobname.bib}
@book{appleby,
  author  = {Humphrey Appleby},
  title   = {On the Importance of the Civil Service},
  date    = {1980},
  options = {showicon},
}
@book{elk,
  author  = {Anne Elk},
  title   = {A Theory on Brontosauruses},
  date    = {1972},
  options = {showicon},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}


\begin{document}
\nocite{sigfridsson,aksin,appleby,elk}
\printbibliography
\end{document}

参考书目:两个项目左侧有奖章图标

从文件中设置图标.tex:类别

\documentclass[british]{moderncv}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[style=numeric, backend=biber]{biblatex}

\usepackage{fontawesome5}

\newcommand*{\printmedalicon}{%
  \raisebox{-1pt}[0pt][0pt]{\faIcon{medal}\hspace{1em}}}

\DeclareBibliographyCategory{showicon}

\newbibmacro*{showmedalicon}{%
  \ifcategory{showicon}
    {\printmedalicon}
    {}}

\defbibenvironment{bibliography}
  {\list
     {\usebibmacro{showmedalicon}%
      \printtext[labelnumberwidth]{% label format from numeric.bbx
        \printfield{labelprefix}%
        \printfield{labelnumber}}}
     {\setlength{\topsep}{0pt}% layout parameters from moderncvstyleclassic.sty
      \setlength{\labelwidth}{\hintscolumnwidth}%
      \setlength{\labelsep}{\separatorcolumnwidth}%
      \leftmargin\labelwidth%
      \advance\leftmargin\labelsep}%
      \sloppy\clubpenalty4000\widowpenalty4000}
  {\endlist}
  {\item}

\moderncvstyle{classic}
\moderncvcolor{burgundy}
\firstname{Jane}
\familyname{Doe}


\addtocategory{showicon}{sigfridsson,nussbaum}

\addbibresource{biblatex-examples.bib}


\begin{document}
\nocite{sigfridsson,aksin,worman,nussbaum}
\printbibliography
\end{document}

带有奖章图标的参考书目

答案2

另一种方法是调整begentrybibmacro 以在左边距显示图标。我还没有用数字书目样式测试过这种方法,但它适用于作者-年份样式。

更准确地说,我用它来包含链接到 DOI 和 URL 的图标(灵感来自美国经济评论):

% !BIB program = biber

\documentclass{article}

\usepackage{fontawesome5}
\usepackage[colorlinks = true, urlcolor = blue]{hyperref}

\usepackage[backend = biber, bibstyle = authoryear]{biblatex}
\renewbibmacro*{begentry}{%
    \hspace{-1.67em}% Protrude into left margin
    \makebox[1.67em][l]{%
        \iffieldundef{doi}{% Check if DOI provided
            % DOI not provided:
            \iffieldundef{url}{% Check if URL provided
                % URL not provided: Print nothing
            }{%
                % URL provided:
                \href{%
                    \thefield{url}% Link to URL
                }{%
                    \raisebox{0.1ex}{\footnotesize\faIcon{external-link-alt}}% Print icon
                }
            }
        }{%
            % DOI provided:
            \href{%
                https://doi.org/\thefield{doi}% Link to DOI website
            }{%
                \raisebox{0.067ex}{\small\faIcon[regular]{file-alt}}% Print icon 
            }%
        }%
    }%
}
%\DeclareFieldFormat{doi}{}  % Suppress output of DOI
%\DeclareFieldFormat{url}{}  % Suppress output of URL
\addbibresource{biblatex-examples.bib}

\begin{document}

\nocite{markey, nussbaum, sigfridsson, worman}
\printbibliography

\end{document}

这是输出:

带图标和 DOI/URL 的输出

如果您认为不需要打印 DOI 和 URL,您可以通过以下方式抑制这些字段的输出:

\DeclareFieldFormat{doi}{}  % Suppress output of DOI
\DeclareFieldFormat{url}{}  % Suppress output of URL

这使得参考书目不那么混乱:

带图标且不带 DOI/URL 的输出

相关内容