如何修复 URL 和 DOI 字体?比如说,缩小字体

如何修复 URL 和 DOI 字体?比如说,缩小字体

我正在使用 Biblatex 来处理脚注和参考书目中的完整引文。通过 @online Bibtex/Biblatex 条目,我了解到引文中的 DOI 和 URL 字段需要使用某种特殊字体,通常是打字机字体,以区分“i”和“l”。但是,字体不同,并且比其他字体稍大,它对我来说看起来很粗,我不希望 URL 成为您在文章页面中首先注意到的东西。如何缩小字体?

我发现了一些这里埃雷提供了另一种解决方案(\urlstyle{rm}\urlstyle{same}),但似乎需要url单独加载包——我只是使用 Biblatex。

更新:感谢您的评论和回答。我忘了说我使用的是特殊格式,我需要的是“en ligne <>”,而不是 URL。请参阅下面的 MWE,如果我做错了,请纠正我。在这两种情况下(\urlstyle{same}\UrlFont),我仍然会用粗体 URL 字体打印前缀“en ligne”。或者这又是一种字体类型。如何一次性解决所有问题?我\UrlFont更喜欢这种方法,因为它允许我同时更改字体和大小。最好还保留 URL 和 DOI 的等宽字体,太糟糕了,即使字体变小了,它们看起来也很粗体。因此,在以下 MWE 中\small\rm改为。\small\tt

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,ngerman,frenchb]{babel}
\usepackage{csquotes}

\usepackage[style=verbose-trad1,backend=bibtex8]{biblatex}

\DeclareFieldFormat{url}{\addcolon\space\bibstring{en ligne <}\url{#1}\bibstring{>}}

\renewcommand{\UrlFont}{\small\rm}

\addbibresource{biblatex-examples.bib}
\begin{document}
\null\vfill\noindent
\cite{markey}

\cite{kastenholz}

\printbibliography
\end{document}

结果

更新 2:现在锦上添花(以上两个问题都已回答),是否可以制作 url 和 doi 字体打火机,有一定的高度诡计或者颜色技巧(灰色或浅灰色)?我非常欣赏狮子座的风格,尤其是当你看到打印结果时这一页-- 我没有打火机当我尝试时,它没有任何效果。如果你愿意,我可以为此再写一篇文章。

答案1

我认为我对您更新的问题的长篇评论不是很好,因此这里进行彻底的解释。

您对url字段格式的重新定义包含两个错误来源biblatex

\DeclareFieldFormat{url}{\addcolon\space\bibstring{en ligne <}\url{#1}\bibstring{>}}

首先,它以添加冒号和空格的命令开始打印任何文本,幸运的biblatex是忽略了这一点(在您的 MWE 中“en ligne”之前没有不必要的冒号),但我们无论如何都应该摆脱它。

其次,更重要的en ligne <是,实际上不是bibstringbibstrings某些本地化键会随语言而变化,因此\bibstring{editor}在英语中打印“editor”,在德语中打印“Herausgeber”,在法语文档中(显然)打印“éditeur”。为了使此功能正常工作,biblatex必须知道这些 bibstring,并且en ligne <肯定不是其中之一(>两者都不是;可以bibstringsbiblatex文档§4.9.2本地化键)。未知的 bibstring 将触发警告 ( Bibliography string 'en ligne <' undefined),并且它们的“key”将以粗体打印,以便在文档中清楚地通知您出现了问题。

要打印详细文本,请biblatex使用\printtext{foo}而不是\bibstring{foo},但\DeclareFieldFormat \printtext实际上不需要 ,因此在这种情况下,

\DeclareFieldFormat{url}{en ligne <\url{#1}>}

可能会做你想做的事。

但您可以使用的biblatex本地化实用程序来实现这一点。

\DefineBibliographyStrings{french}{
  url = {en ligne}
}

将确保bibstring url法语文档中包含“en ligne”,因此\bibstring{url}用法语打印“en ligne”并用英语打印“address”。

\mkbiblege我们还可以定义类似于的宏来在和\mkbibparens中换行。<>

\makeatletter
\newrobustcmd{\mkbiblege}[1]{%
  \begingroup
  \blx@blxinit
  \blx@setsfcodes
  <#1>
  \endgroup}
\makeatother

所以我们可以定义

\DeclareFieldFormat{url}{\bibstring{url}\space\mkbiblege{\url{#1}}}

最后,我们的 MWE

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,ngerman,frenchb]{babel}
\usepackage{csquotes}
\usepackage[style=verbose-trad1,backend=bibtex8]{biblatex}

\renewcommand{\UrlFont}{\small\rm}

\DefineBibliographyStrings{french}{
  url = {en ligne},
}
\DefineBibliographyStrings{german}{
  url = {online},
}

\makeatletter
\newrobustcmd{\mkbiblege}[1]{%
  \begingroup
  \blx@blxinit
  \blx@setsfcodes
  <#1>
  \endgroup}
\makeatother

\DeclareFieldFormat{url}{\bibstring{url}\space\mkbiblege{\url{#1}}}
\addbibresource{biblatex-examples.bib}

\begin{document}
  \nocite{markey}
  \printbibliography
\end{document}

给出

在此处输入图片描述

答案2

您可以设置\UrlFont包括尺寸调整命令:

示例输出

\documentclass{article}

\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}

\renewcommand{\UrlFont}{\small\ttfamily}

\begin{document}

\cite{ctan,markey,kastenholz}

\printbibliography

\end{document}

如果您只希望这影响参考书目,那么请将命令放在\renewcommand{\UrlFont}{\small\ttfamily}序言之前\printbibliography而不是序言中。

相关内容