Closed philipphennig closed 2 years ago
Thanks for raising this!
I dont have a final solution, but maybe a starting point: the following code
import numpy as np
from matplotlib import pyplot as plt
from tueplots import bundles
preamble=r"""
\usepackage[sfdefault,condensed]{roboto}
\renewcommand{\familydefault}{\sfdefault} \usepackage{sansmath} \sansmath
"""
plt.rcParams.update({"figure.dpi": 150})
plt.rcParams.update(bundles.beamer_moml())
plt.rcParams.update({"text.usetex": True, "font.family": "sans-serif", "text.latex.preamble": preamble,
})
def f_b(x):
return 2 ** (x / 2 - 2)
fig, ax = plt.subplots()
x = np.linspace(0, 12, num=120)
ax.plot(x, f_b(x), "-k")
ax.set_xlabel("$x$ (note that text is fine, mathit is not)")
ax.set_ylabel("$\log f(x)=6$")
plt.show()
produces the following figure: a.pdf. At least everything is consistent.
What essentially happens is that a latex backend (using the roboto package) replaces the non-latex Roboto font. What is left is to make everything into Roboto light. This seems to be possible with some more digging.
What do you think?
The following seems to work for me, using your snippet above:
def beamer_moml():
"""Fonts that are compatible with the beamer template of the method-of-machine-learning group in Tübingen."""
return {
"text.usetex": False,
"mathtext.fontset": "custom",
"mathtext.it": "sans:italic",
"font.sans-serif": ["Roboto Condensed"],
"font.weight": "light",
"axes.labelweight": "light",
"axes.titleweight": "light",
}
Does that do the trick for your use case?
beamer_moml
usesRoboto Condensed
, which matches our style for beamer. But math variables (i.e. the\mathit
font) is set in regular roboto.MWE:
I have no clue how to fix this. Anyone?