Изменить шрифт в TeX с сохранением оформления для окружений theorem, lemma, etc
Может ли кто-то помочь со следующей проблемой в TeX: когда меняю шрифт в преамбуле документа, то скидываются настройки для окружений theorem, lemma и т.д.? Они становятся без выделения жирным шрифтом и курсивом. Согласно требованиям должен быть шрифт Times New Roman и собирать нужно с помощью PdfLaTeX.
Привожу MWE:
\documentclass[14pt]{article}
\usepackage[cp1251]{inputenc}
\usepackage[english,russian]{babel}
\usepackage[left=2.5cm, top=2cm, right=1cm, bottom=20mm, nohead, nofoot]{geometry}
\usepackage{times} % Times New Roman
%\usepackage{mathptmx,etoolbox}
%\usepackage{mathptmx}
\usepackage{setspace}
\onehalfspacing
\usepackage{lipsum}
\setlength{\parindent}{5ex}
\setlength{\parskip}{1em}
\setcounter{page}{2}
\usepackage{amssymb}
\usepackage{amsmath,amsthm}
%\theoremstyle{plain}
\newtheoremstyle{note}% hnamei
{3pt}% hSpace abovei
{3pt}% hSpace belowi
{}% hBody fonti
{}% hIndent amounti
{\itshape}% hTheorem head fonti
{:}% hPunctuation after theorem headi
{.5em}% hSpace after theorem headi
{}% hTheorem head spec (can be left empty, meaning ‘normal’)
\newtheorem{theorem}{Теорем}
\newtheorem{lemma}{Лемма}
\begin{document}
\begin{theorem}
Текст текст текст. Текст который должен быть курсивом. Текст текст
текст текст.
\end{theorem}
\begin{lemma}
Текст текст текст текст. Слово лемма должно быть выделено жирным.
текст текст текст.
\end{lemma}
\end{document}
Что получается после сборки в PdfLaTeX
Нашел в Интернете способ менять оформление окружения theorem:
\newtheoremstyle{note}% hnamei
{3pt}% hSpace abovei
{3pt}% hSpace belowi
{}% hBody fonti
{}% hIndent amounti
{\itshape}% hTheorem head fonti
{:}% hPunctuation after theorem headi
{.5em}% hSpace after theorem headi
{}% hTheorem head spec (can be left empty, meaning ‘normal’)
Но после добавления этих строчек никаких изменений не происходит.
Если удалить строчку:
\usepackage{times} % Times New Roman
то оформление окружений theorem, lemma верное, но шрифт не тот.
Можно ли добиться желаемого в рамках PdfLaTeX?
P.S.: в TeX я новичок.
Ответы (1 шт):
Вообще, то что Вы привели не совсем MWE - его нельзя просто скопипастить, скомпилировать и увидеть проблему, потому как это просто преамбула с кучей лишних пакетов (которые не влияют на проблему). И нет самого тела документа.
Все дело в том, что гарнитуру Times New Roman просто так использовать не получится - нужен огромный бубен по конвертированию шрифта типа TTF в шрифт Type 1. Но можно использовать похожий по начертанию шрифт (да, Adobe Times был создан раньше Times New Roman, поэтому последний - это всего лишь копия оригинала). В LaTeX есть шрифт times (кажется, это реализация от URW, а не от Adobe), но с ним есть небольшая проблема - у него нет кириллицы. Совсем. Поэтому Вы и получили отсутствие жирного и курсива, и много чего еще (вплоть до капители). Если бы Вы посмотрели внимательнее, tex подменяет не найденные символы шрифта на стандартный cmr (Computer Modern Roman).
Выход - найти шрифт, наиболее близкий к начертанию Times, который содержит и кириллицу. Например, можно использовать шрифт (и одноименный пакет) tempora.
В нем есть почти все необходимые модификации шрифта, кроме Small Caps (\textsc{}, капитель). Также, хорошо бы по плотности подобрать этому шрифту в комплект начертание Sans (версия шрифта без засечек... ну было бы странно, если бы у таймса был свой вариант :-)) и Teletype (моноширинный, тоже задается отдельным пакетом). Если отдельно эти начертания не задавать, то tex будет использовать стандартные cmss и cmtt, соответственно (ну, может Вам и они подойдут).
С математическим шрифтом - почти такая же проблема (ему кириллица не нужна, но нужна реализация всех математических символов). Какие проблемы у шрифта mathptmx я уже точно не помню - кажется он довольно конфликтный с окружающими шрифтами. Я обычно использую более модный сейчас newtxmath.
В примере, я использую комплект:
\usepackage{tempora} % Times New Roman for text
\usepackage[bigdelims,vvarbb]{newtxmath} % math italic letters from Nimbus Roman
\usepackage[cal=boondoxo]{mathalfa} % mathcal from STIX, unslanted a bit
Важное замечание: математические шрифты обычно немного конфликтуют с amsfonts, потому что в ams переопределяются некоторые команды. В общем, чтобы не разбираться с этими мелкими конфликтами (там значки интегралов по замкнутому контуру и пара букв с полым жирным начертанием, если правильно помню) достаточно загружать пакеты в определенном порядке: сначала пакеты ams, а уже потом математические шрифты (но удобнее все шрифты держать рядом).
Последний шрифт задает в математике каллиграфическое начертание. Его можно не использовать, а обойтись стандартным из набора AMS-расширений, но у этого есть строчные буквы, в отличие от стандартного.
Далее, если Вы хотите использовать свой стиль для теорем - его мало определить, его надо еще и сделать активным для Ваших объявления теорем (строчка: \theoremstyle{note} в примере). Сам стиль Вы задали странно, я его подправил. Да и вообще, возможно, он Вам и не понадобится, а хватит и предлагаемых стилей в AMS-расширениях (plain и все остальные).
Далее, сам исправленный пример (тексты теорем/лемм честно стащены в интернете и за их справедливость ответственности не несу :-) ):
\documentclass[14pt]{article}
\usepackage[cp1251]{inputenc}
\usepackage[english,russian]{babel}
\usepackage[left=2.5cm, top=2cm, right=1cm, bottom=20mm, nohead, nofoot]{geometry}
%\usepackage{times} % Times New Roman
%\usepackage{mathptmx,etoolbox}
%\usepackage{mathptmx}
\usepackage{amssymb}
\usepackage{amsmath,amsthm}
\usepackage{tempora} % Times New Roman for text
\usepackage[bigdelims,vvarbb]{newtxmath} % math italic letters from Nimbus Roman
\usepackage[cal=boondoxo]{mathalfa} % mathcal from STIX, unslanted a bit
\usepackage{setspace}
\onehalfspacing
\setlength{\parindent}{5ex}
\setlength{\parskip}{1em}
\setcounter{page}{2}
%\theoremstyle{plain}
\newtheoremstyle{note}% hnamei
{3pt}% hSpace abovei
{3pt}% hSpace belowi
{\itshape}% hBody fonti
{}% hIndent amounti
{\bfseries}% hTheorem head fonti
{:}% hPunctuation after theorem headi
{.5em}% hSpace after theorem headi
{}% hTheorem head spec (can be left empty, meaning ‘normal’)
\theoremstyle{note}
\newtheorem{theorem}{Теорем}
\newtheorem{lemma}{Лемма}
\newcommand{\abc}{abcdefghijklmnopqrstuvwxyz}
\newcommand{\ABC}{ABCDEFGHIJKLMNOPQRSTUVWXYZ}
\begin{document}
\begin{theorem}[Wolfenstein, 1572]
People have fun with beer.
\end{theorem}
\begin{lemma}[Рукопожатия]
В каждом конечном неориентированном графе число вершин, которые касаются нечетного числа ребер, является четным.
\end{lemma}
\begin{theorem}
Сумма углов треугольника
равна $180^{\circ}$.
\end{theorem}
\[
I = \iint\limits_{G}{z\sqrt{1 + z_{x}^{2} + z_{y}^{2}}} \, dx \, dy =
\iint\limits_{G}{xy\sqrt{1+y^{2}+x^{2}}}
\, dx \, dy,
\]
\begin{itemize}
\item [math normal:] $\abc$\\ $\ABC$
\item [math upright:] $\mathrm{\abc}$\\ $\mathrm{\ABC}$
\item [math italic:] $\mathit{\abc}$\\ $\mathit{\ABC}$
\item [math bold:] $\mathbf{\abc}$\\ $\mathbf{\ABC}$
\item [math cal:] $\mathcal{\abc}$\\ $\mathcal{\ABC}$
\end{itemize}
\end{document}
Также я добавил вывод алфавита разными начертаниями в математической моде, чтобы было видно как выглядят буквы (должны быть похожи на коммерческий шрифт Adobe MathTimePro, ну и на Times (в нашем случае, tempora) в тексте - соответственно тоже).
На выходе у меня получился документ такого вида:

И внизу окна видно какие шрифты были реально использованы. Хотя, наверное, на глаз тоже можно отличить times от стандартного cmr (times выглядит более плотным).
