1

I use concrete-roman as in Knuth's Concrete Mathematics as my main font. However, it does not come with a math font, so I include eulervm for it.

\usepackage{amsmath,amssymb,amsthm}
\usepackage{concrete}% the concrete-roman, used in concrete mathetics
\usepackage{eulervm}% the math fonts used in concrete mathematics

This has gone well until I tried to boldify my theorems. Namely, instead of

Theorem 4.1. 1+1 = 2

I want

Theorem 4.1. 1+1 = 2.

For this, I added the following command to header copying from How to make the optional title of a theorem bold with amsthm?

\newtheoremstyle{mystyle}%                % Name
  {}%                                     % Space above
  {}%                                     % Space below
  {}%                                     % Body font
  {}%                                     % Indent amount
  {\bfseries}%                            % Theorem head font
  {.}%                                    % Punctuation after theorem head
  {.5em}%                                    % Space after theorem head, ' ', or \newline
  {\thmname{#1}\thmnumber{ #2}\thmnote{ (#3)}}%                                     % Theorem head spec (can be left empty, meaning `normal')
\theoremstyle{mystyle}
\numberwithin{equation}{subsection}
\newtheorem{theorem}[equation]{Theorem}

It does not work.

If I remove eulervm, then the theorems do get boldified. However, the fonts fall back to some default ones..

Question

How to I remain in the la-la-land of concrete+eulervm fonts, with boldified theorems?


possibly related

It's pointed out in Bold mathematics in eulervm that eulervm handles bold fonts differently. But they only addressed bold math fonts..


Minimal example

Below is a minimal example that compiles with $ pdflatex. You can toggle eulervm to see the effects described in my question. Notice that mystyle is indeed working: disabling \theoremstyle{mystyle} changes the font of the body to italic (default).

\documentclass[15pt]{article}
\usepackage[margin=1in]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amssymb,amsthm}
\usepackage{concrete}% the concrete-roman, used in concrete mathetics
\usepackage{eulervm}% the math fonts used in concrete mathematics

\newtheoremstyle{mystyle}%                % Name
  {}%                                     % Space above
  {}%                                     % Space below
  {}%                                     % Body font
  {}%                                     % Indent amount
  {\bfseries}%                            % Theorem head font
  {.}%                                    % Punctuation after theorem head
  {.5em}%                                    % Space after theorem head, ' ', or \newline
  {\thmname{#1}\thmnumber{ #2}\thmnote{ (#3)}}%                                     % Theorem head spec (can be left empty, meaning `normal')
\theoremstyle{mystyle}
\newtheorem{theorem}[equation]{Theorem}

\begin{document}
\begin{theorem}
  The sum of $1$ and $1$ is $2$.
\end{theorem}
\end{document}
8
  • 1
    As always on the site yo are much more likely to get help if you provide a full but minimal example that others can copy and test as is. Here there is no document class or sample document body.
    – daleif
    Commented Nov 10, 2020 at 15:20
  • Thanks for the tip! I have just added one!
    – Student
    Commented Nov 10, 2020 at 18:44
  • Short answer: chance \usepackage{concrete} to \usepackage{ccfonts}. Longer answer: tex.stackexchange.com/a/425887/61644
    – Davislor
    Commented Nov 10, 2020 at 19:05
  • @Davislor thanks for reaching out! I did it, but theorems are still not boldified.
    – Student
    Commented Nov 10, 2020 at 19:18
  • Replace the theorem-style definition with \newtheorem{theorem}{Theorem}.
    – Davislor
    Commented Nov 10, 2020 at 19:22

1 Answer 1

1

After digging a bit into the font description files, I found the reason bold substitutions were not working. Concrete does not come in bold, and the font package only declares a substitution for the /bx/n series and shape in the T1 encoding. By default, you were trying to use /b/n of OT1.

You can therefore replace the command

\usepackage{concrete}

with

\usepackage[T1]{fontenc}
\usepackage{ccfonts}
\renewcommand\bfdefault{bx}

I would recommend you use unicode-math and LuaLaTeX where you can, and legacy 8-bit fonts when you have to, though. See this answer for several longer examples.

Since you are defining your own theorem style, you could instead select the font of your choice for its headers, such as, here, Latin Modern Sans-Serif Semi-bold Condensed:

\documentclass[15pt]{article}
\usepackage[margin=1in]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc} % The default since 2018
\usepackage{amsmath,amssymb,amsthm}
\usepackage{bm}
\usepackage{ccfonts}% the concrete-roman, used in concrete mathetics
\usepackage{eulervm,eucal,eufrak}% the math fonts used in concrete mathematics

\renewcommand\bfdefault{bx}

\newtheoremstyle{mystyle}%                % Name
  {}%                                     % Space above
  {}%                                     % Space below
  {}%                                     % Body font
  {}%                                     % Indent amount
  {\usefont{T1}{lmss}{sbc}{n}}%           % Theorem head font
  {.}%                                    % Punctuation after theorem head
  {.5em}%                                 % Space after theorem head, ' ', or \newline
  {\thmname{#1}\thmnumber{ #2}\thmnote{ (#3)}}%                                     % Theorem head spec (can be left empty, meaning `normal')
\theoremstyle{mystyle}
\newtheorem{theorem}[equation]{Theorem}

\begin{document}
\begin{theorem}
  The sum of $1$ and $1$ is $2$.
\end{theorem}
\end{document}

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .