如何修復URL和DOI字體?說吧,變小一點

如何修復URL和DOI字體?說吧,變小一點

我正在使用 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 biblatexuse\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而不是放在序言中。

相關內容