
我正在使用 Biblatex 來處理腳註和參考書目中的完整引文。對於 @online Bibtex/Biblatex 條目,我知道引文中的 DOI 和 URL 欄位需要某種特殊字體(通常是打字機),以區分“i”和“l”等。然而,字體與其他字體不同,並且比其他字體稍大,對我來說看起來很粗體,而且我不希望 URL 成為您在文章頁面中首先註意到的內容。怎麼把字體變小?
我發現了一些位這裡和th埃雷提供了另一種解決方案(\urlstyle{rm}
或\urlstyle{same}
),但似乎需要url
單獨加載套件——我只是使用 Biblatex。
更新: 感謝您的評論和回答。我忘了提及我正在使用特殊格式,而不是 URL,我需要「en ligne <>」。請參閱下面的 MWE,如果我這樣做的方式錯誤,請糾正我。在這兩種情況下(\urlstyle{same}
或\UrlFont
),我仍然會得到用粗體 URL 字體列印的前綴“en ligne”。或者這可能是另一種字體類型。如何一次全部解決?我更欣賞這個\UrlFont
方法,因為它允許我同時更改字體和大小。最好為 URL 和 DOI 保留等寬字體,可惜它們看起來很粗,即使它們已經變小了。因此,\small\rm
而不是\small\tt
在下面的 MWE 中。
\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字體打火機,有一定的高度詭計或顏色技巧(灰色或淺灰色)?我非常欣賞 leo 風格,尤其是當你看到 上的印刷結果時這一頁——我沒有那個打火機當我嘗試時完全沒有效果。如果你願意的話,我可以為此再發一篇文章。
答案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
必須知道這些 bibstrings 並且en ligne <
肯定不是其中之一(兩者都不是>
問題;標準清單bibstrings
可以在biblatex
文件§4.9.2本地化鍵)。未知的書目字串將觸發警告 ( Bibliography string 'en ligne <' undefined
),並且它們的「金鑰」將以粗體顯示,以在文件中清楚地通知您出現了問題。
要列印詳細文字 in biblatex
use\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
而不是放在序言中。