Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I have a bibliography in biblatex and I want to use different fonts than Computer Modern, namely Lato & Bitstream Charter. Here is a minimal example:

\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}

This results in the following output after running biber and pdflatex:

example

The red arrows indicate my problem: Because Bitstream Charter has no actual small caps, LaTeX simply shrinks the characters for acronyms like ISSN and I don't like how this looks. So my question is: How can I change the font such that acronyms are simply displayed regularly?

share|improve this question
add comment

1 Answer

up vote 10 down vote accepted

You need to change the macro \mkbibacro. Its original definition is

\newcommand*{\mkbibacro}[1]{%
  \ifcsundef{\f@encoding/\f@family/\f@series/sc}
    {#1}
    {\textsc{\MakeLowercase{#1}}}}

so a somewhat brute-force approach (replacing small caps with "typeset as-is" (here: capitals) for all fonts) would be

\renewcommand*{\mkbibacro}[1]{#1}

A better way is to trick biblatex into thinking that Mathdesign/Bitstream Charter doesn't feature small caps. Add the following to your preamble:

\makeatletter
\renewcommand*{\mkbibacro}[1]{%
  \csundef{\f@encoding/mdbch/\f@series/sc}%
  \ifcsundef{\f@encoding/\f@family/\f@series/sc}
    {#1}
    {\textsc{\MakeLowercase{#1}}}}
\makeatother

enter image description here

Note: The "font shorthand" mdbch for Mathdesign/Bitstream Charter can be detected by adding \show\rmdefault to the OP's example.

share|improve this answer
    
Works great, thank you! –  padde Jun 5 '12 at 12:28
    
Would you mind to clarify why "trick" is better? A "brute-force" approach seems shorter. –  mlt Jun 4 at 6:33
    
@mlt The brute-force method will always result in capitals, even if you switch to a font that features small caps. –  lockstep Jun 4 at 6:50
    
@lockstep Thank you. I actually was looking for lowercase "doi" in a regular font and I settled on \renewcommand*{\mkbibacro}[1]{\MakeLowercase{#1}} and \urlstyle{same}. –  mlt Jun 4 at 14:15
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.