我正在使用 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 <
是,实际上不是bibstring
。bibstrings
某些本地化键会随语言而变化,因此\bibstring{editor}
在英语中打印“editor”,在德语中打印“Herausgeber”,在法语文档中(显然)打印“éditeur”。为了使此功能正常工作,biblatex
必须知道这些 bibstring,并且en ligne <
肯定不是其中之一(>
两者都不是;可以bibstrings
在biblatex
文档§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
而不是序言中。