5

I’m trying to reproduce some old typography (a German article from 1925). In particular, its theorem and proof heads are distinguished by increased letterspacing, as for “Satz 1” here:

In text, this effect can be obtained by \textls[150]{Satz 1}. However, I’m not sure how to get it in the theorem head — I’m using amsthm, and its theorem style head customisation is designed for commands like \bfshape that set a style for following text, not commands like \textbf, \textls that only set style for their argument.

So how can I increase letterspacing inside a theorem head, preferably using amsthm? I’d prefer a solution with amsthm if possible, since I’ve already got other aspects of theorem formatting customised with it. However, I’m open to other approaches if this effect is difficult to obtain with amsthm.

Related question: How can I get letter spacing?

MWE:

\documentclass[a4paper]{article}

\usepackage[letterspace=125]{microtype}

\usepackage{amsthm} \usepackage[german]{babel}

\newtheoremstyle{satz}% {0pt}% space above {0pt}% space below {\itshape}% body font {\parindent}% indent {\itshape}% theorem head font {.}% punct after head {.5em}% space after head {}% theorem head spec \theoremstyle{satz} \newtheorem{satz}{Satz}

\begin{document}

Here is a normal paragraph of text for context. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum porta sed sem a scelerisque.

\begin{satz} This is a theorem. The theorem head should have increased letterspacing. \end{satz}

Fusce vehicula tempus elit ut sodales. Vivamus mattis sagittis turpis, nec lobortis lorem eleifend eu. Phasellus commodo tincidunt odio sit amet facilisis.

\textls[150]{Satz 2.} This is a fake theorem, illustrating how the theorem head should appear.

Sed ac magna nec dolor lobortis dictum ut quis risus. Mauris molestie convallis tellus et eleifend. Nullam dapibus tellus ullamcorper, eleifend dui ut, sollicitudin dui. \end{document}

2 Answers2

5

You need the switch version of \textls, see section 7 of the microtype manual:

\lsstyle

Use it in your example instead of \itshape.

daleif
  • 54,450
  • 1
    I’d tried this already, and it doesn’t work, the command doesn’t exist — but reading the manual more carefully (thanks!) I see the switch version does exist after all; it’s just called \lsstyle rather than \lsshape. I’ll edit that into your answer, if you don’t object! – Peter LeFanu Lumsdaine Nov 28 '22 at 12:30
  • @PeterLeFanuLumsdaine My bad, was using lsstyle in my test doc – daleif Nov 28 '22 at 12:36
2

You want to use the last argument for better specifying the header.

\documentclass[a4paper]{article}

\usepackage[letterspace=125]{microtype}

\usepackage{amsthm} \usepackage[german]{babel}

\newtheoremstyle{satz}% {0pt}% space above {0pt}% space below {\itshape}% body font {\parindent}% indent {\normalfont}% theorem head font {.}% punct after head {.5em}% space after head {\thmname{\textls{#1}} \thmnumber{#2}\thmnote{ (#3)}}% theorem head spec

\theoremstyle{satz} \newtheorem{satz}{Satz}

\begin{document}

Here is a normal paragraph of text for context. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum porta sed sem a scelerisque.

\begin{satz} This is a theorem. The theorem head should have increased letterspacing. \end{satz}

Fusce vehicula tempus elit ut sodales. Vivamus mattis sagittis turpis, nec lobortis lorem eleifend eu. Phasellus commodo tincidunt odio sit amet facilisis.

\textls[150]{Satz 2.} This is a fake theorem, illustrating how the theorem head should appear.

Sed ac magna nec dolor lobortis dictum ut quis risus. Mauris molestie convallis tellus et eleifend. Nullam dapibus tellus ullamcorper, eleifend dui ut, sollicitudin dui.

\end{document}

With \lsstyle inside the “thm header font” argument, the specification will spill also after the final period in the header.

enter image description here

See the difference when

\newtheoremstyle{satz}%
  {0pt}% space above
  {0pt}% space below
  {\itshape}% body font
  {\parindent}% indent
  {\normalfont\lsstyle}% theorem head font
  {.}% punct after head
  {.5em}% space after head
  {}% theorem head spec

is used

enter image description here

I used \normalfont and not \itshape: letterspacing lowercase is like stealing sheep, letterspacing italic is stealing horses (a capital felony in the Far West, you know).

egreg
  • 1,121,712
  • While daleif’s answer was the best solution for my specific need, thanks also for this answer — extremely useful since the official documentation for \newtheoremstyle is very brief. And of course, I would never support stealing sheep — I’m merely interested in, let’s say, authentic re-enactment of historical agricultural practices. – Peter LeFanu Lumsdaine Dec 27 '22 at 15:10