我有参考书目biblatex
,我想使用不同的字体电脑现代,即拉托&比特流宪章。这是一个最小的例子:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[defaultsans, scale=0.9]{lato}
\usepackage[bitstream-charter]{mathdesign}
\usepackage{filecontents}
\begin{filecontents*}{references.bib}
@article{
shannon,
author = {Shannon, C. E.},
title = {A mathematical theory of communication},
journal = {SIGMOBILE Mob. Comput. Commun. Rev.},
issue_date = {January 2001},
volume = {5},
number = {1},
month = jan,
year = {2001},
issn = {1559-1662},
pages = {3--55},
numpages = {53},
url = {http://doi.acm.org/10.1145/584091.584093},
doi = {10.1145/584091.584093},
acmid = {584093},
publisher = {ACM},
address = {New York, NY, USA},
}
\end{filecontents*}
\usepackage[backend=biber,style=alphabetic,natbib=true]{biblatex}
\addbibresource{references.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
biber
运行and后将产生以下输出pdflatex
:
红色箭头表示我的问题:因为比特流宪章没有实际的小写字母,LaTeX 只会缩小首字母缩略词的字符,例如ISSN
,我不喜欢这个样子。所以我的问题是:我如何更改字体,使首字母缩略词只是规则地显示?
答案1
您需要更改宏\mkbibacro
。其原始定义是
\newcommand*{\mkbibacro}[1]{%
\ifcsundef{\f@encoding/\f@family/\f@series/sc}
{#1}
{\textsc{\MakeLowercase{#1}}}}
因此,一种有点蛮力的方法(将所有字体的小写字母替换为“按原样排版”(此处为大写字母))将是
\renewcommand*{\mkbibacro}[1]{#1}
更好的方法是让人误biblatex
以为 Mathdesign/Bitstream Charter 不包含小写字母。将以下内容添加到您的序言中:
\makeatletter
\renewcommand*{\mkbibacro}[1]{%
\csundef{\f@encoding/mdbch/\f@series/sc}%
\ifcsundef{\f@encoding/\f@family/\f@series/sc}
{#1}
{\textsc{\MakeLowercase{#1}}}}
\makeatother
mdbch
注意:可以通过添加\show\rmdefault
到 OP 的示例中来检测 Mathdesign/Bitstream Charter 的“字体简写” 。