2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Цифры в формуле другим шрифтом
Сообщение01.02.2017, 10:37 


16/02/16
69
Собираю проект через xelatex с использованием нестандартных шрифтов, однако в формулах все цифры печатаются другим шрифтом. Как поправить?
код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
\documentclass[]{beamer}
\usepackage[14pt]{extsizes}
\usepackage{geometry}
\geometry{landscape,a4paper,left=1mm,right=16mm,top=1mm,bottom=0cm}

\usepackage{fontspec}
\setmainfont[Mapping=tex-text]{OfficinaSerifC}
\setsansfont[Scale=.975]{OfficinaSerifC}                   %% задаёт шрифт без засечек
\setmonofont{OfficinaSerifC}                   %% задаёт моноширинный шрифт
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{mathtext}               % русские буквы в фомулах
\usepackage{amsmath,amssymb,amsfonts,textcomp,latexsym,pb-diagram,amsopn}

\begin{document}
       
        Нужно чтобы формулы печатались одним шрифтом OfficinaSerifC так: $\text{20 $-$ 25} \cdot \lg(\theta) = \text{13}x$, однако все цифры в формулах печатаются другим шрифтом: $20 - 25 \cdot \lg(\theta) = 13 x$.
    Как поправить и сделать один шрифт для формул, чтобы не брать каждую цифру в тег text?

\end{document}


Вроде тут обсуждается похожий пример _http://tex.stackexchange.com/questions/172787/mathsf-prints-digits-in-serif-font
Попроще нельзя ли сделать, чтобы по-умолчанию в формулах работало?

 Профиль  
                  
 
 Re: Цифры в формуле другим шрифтом
Сообщение01.02.2017, 20:06 


13/07/14
257
Как так получается, что для примера, на котором желающие Вам помочь могли бы опробовать разные идеи, не смогли подобрать шрифт, который бы не формировал ошибку
The font "OfficinaSerifC" cannot be found.

 Профиль  
                  
 
 Re: Цифры в формуле другим шрифтом
Сообщение02.02.2017, 14:57 


16/02/16
69
Попробуйте так
код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
\documentclass[]{beamer}
\usepackage[14pt]{extsizes}
\usepackage{geometry}
\geometry{landscape,a4paper,left=1mm,right=16mm,top=1mm,bottom=0cm}

\usepackage{fontspec}
\setmainfont[Mapping=tex-text]{Arial}
\setsansfont[Scale=.975]{Arial}                   %% задаёт шрифт без засечек
\setmonofont{Arial}                   %% задаёт моноширинный шрифт
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{mathtext}               % русские буквы в фомулах
\usepackage{amsmath,amssymb,amsfonts,textcomp,latexsym,pb-diagram,amsopn}

\begin{document}
       
        Нужно чтобы формулы печатались одним шрифтом OfficinaSerifC так: $\text{20 $-$ 25} \cdot \lg(\theta) = \text{13}x$, однако все цифры в формулах печатаются другим шрифтом: $20 - 25 \cdot \lg(\theta) = 13 x$.
    Как поправить и сделать один шрифт для формул, чтобы не брать каждую цифру в тег text?

\end{document}


или так

код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
\documentclass[]{beamer}
\usepackage[14pt]{extsizes}
\usepackage{geometry}
\geometry{landscape,a4paper,left=1mm,right=16mm,top=1mm,bottom=0cm}

\usepackage{fontspec}
\setmainfont[Mapping=tex-text]{Times New Roman}
\setsansfont[Scale=.975]{Times New Roman}                   %% задаёт шрифт без засечек
\setmonofont{Times New Roman}                   %% задаёт моноширинный шрифт
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{mathtext}               % русские буквы в фомулах
\usepackage{amsmath,amssymb,amsfonts,textcomp,latexsym,pb-diagram,amsopn}

\begin{document}
       
        Нужно чтобы формулы печатались одним шрифтом OfficinaSerifC так: $\text{20 $-$ 25} \cdot \lg(\theta) = \text{13}x$, однако все цифры в формулах печатаются другим шрифтом: $20 - 25 \cdot \lg(\theta) = 13 x$.
    Как поправить и сделать один шрифт для формул, чтобы не брать каждую цифру в тег text?

\end{document}

 Профиль  
                  
 
 Re: Цифры в формуле другим шрифтом
Сообщение02.02.2017, 17:04 
Заслуженный участник
Аватара пользователя


11/01/06
3822
Можно воспользоваться услугами пакета mathspec (попроще) или unicode-math (посложнее).

1) Если используете mathspec, то пакет fontspec загружать нужно с опцией no-math (или вообще не загружать: mathspec сделает это сам). Простенький пример (я убрал из преамбулы большую часть не относящегося к делу мусора; к слову, если используете xelatex, то пакет inputenc вообще не нужен):
код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
\documentclass{article}

\usepackage{mathtools,amssymb}

\usepackage{mathspec}
\newcommand*{\myfont}{Georgia}
\setmainfont{\myfont}[Ligatures=TeX]
\setsansfont{\myfont}[Scale=0.975]
\setmonofont{\myfont}
\setmathfont(Digits){\myfont}

\usepackage[english,russian]{babel}

\begin{document}

\noindent
$0123456789AaBbCcfi$\\
$\textnormal{0123456789}\textit{AaBbCcfi}$

\begin{gather}
\int_{0}^{1}x^{-x}\mathrm{d}x=\sum_{n=1}^{\infty}n^{-n}\\
A\setminus A=\varnothing\ne\emptyset
\end{gather}

\end{document}


2) Аналогичный пример с unicode-math (всякие математические пакеты типа amsmath и amssymb нужно подключать раньше unicode-math):
код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
\documentclass{article}

\usepackage{mathtools,amssymb}

\usepackage{fontspec}
\newcommand*{\myfont}{Georgia}
\setmainfont{\myfont}[Ligatures=TeX]
\setsansfont{\myfont}[Scale=0.975]
\setmonofont{\myfont}

\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont[range={"0030-"0039}]{\myfont}

\usepackage[english,russian]{babel}

\begin{document}

\noindent
$0123456789AaBbCcfi$\\
$\textnormal{0123456789}\textit{AaBbCcfi}$

\begin{gather}
\int_{0}^{1}x^{-x}\mathrm{d}x=\sum_{n=1}^{\infty}n^{-n}\\
A\setminus A=\varnothing=\emptyset
\end{gather}

\end{document}

При взгляде на последнюю формулу можно заметить 2 проблемы:
1) Вместо значка $\setminus$ (разность множеств) — просто пустое место. Дело в том, что соответствующий символ отсутствует в шрифте Latin Modern Math. Можно взять его из другого шрифта или использовать вместо него \smallsetminus. (Можно переопределить команду \setminus, но нужно иметь в виду, что пакет unicode-math творит значительную часть своей магии после \begin{document}, поэтому и переопределять нужно после.)
2) Вместо красивого значка пустого множества $\varnothing$ используется $\emptyset$. Это из-за того, что в Юникоде есть лишь один символ пустого множества, поэтому обе команды \emptyset и \varnothing выдают одно и то же (результат зависит от шрифта). Можно позаимствовать нужный символ из другого шрифта, например Asana Math (пакет asana-math), с помощью опции range.

Подправленный с учётом этих замечаний пример:
код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
\documentclass{article}

\usepackage{mathtools,amssymb}

\usepackage{fontspec}
\newcommand*{\myfont}{Georgia}
\setmainfont{\myfont}[Ligatures=TeX]
\setsansfont{\myfont}[Scale=0.975]
\setmonofont{\myfont}

\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont[range={"0030-"0039}]{\myfont}
\setmathfont[range={\varnothing}]{Asana Math}

\AtBeginDocument{
\renewcommand*{\setminus}{\smallsetminus}
}

\usepackage[english,russian]{babel}

\begin{document}

\noindent
$0123456789AaBbCcfi$\\
$\textnormal{0123456789}\textit{AaBbCcfi}$

\begin{gather}
\int_{0}^{1}x^{-x}\mathrm{d}x=\sum_{n=1}^{\infty}n^{-n}\\
A\setminus A=\varnothing=\emptyset
\end{gather}

\end{document}

А можно вместо Latin Modern Math использовать шрифт STIX Two Math (http://www.stixfonts.org/), который лишён упомянутых двух недостатков. (Или тот же Asana Math.)

 Профиль  
                  
 
 Re: Цифры в формуле другим шрифтом
Сообщение02.02.2017, 17:46 


16/02/16
69
Вариант
Цитата:
(попроще)
работает, спасибо

 Профиль  
                  
 
 Re: Цифры в формуле другим шрифтом
Сообщение06.02.2017, 18:25 


16/02/16
69
Появилась необходимость использовать LuaLaTeX.
Подскажите как под него адаптировать ваш вариант попроще.

 Профиль  
                  
 
 Re: Цифры в формуле другим шрифтом
Сообщение06.02.2017, 23:36 


16/02/16
69
Попробовал вариант №3 под LuaLaTeX работает, однако в beamer некорректно отображает символы (в article - корректно).

код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX

\documentclass{beamer}%Некорректно
%\documentclass{article}%А так корректно

\usepackage{mathtools,amssymb}

\usepackage{fontspec}
\newcommand*{\myfont}{Georgia}
\setmainfont{\myfont}[Ligatures=TeX]
\setsansfont{\myfont}[Scale=0.975]
\setmonofont{\myfont}

\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont[range={"0030-"0039}]{\myfont}
\setmathfont[range={\varnothing}]{Asana Math}

\AtBeginDocument{
\renewcommand*{\setminus}{\smallsetminus}
}

\usepackage[english,russian]{babel}

\begin{document}

\noindent
$0123456789AaBbCcfi$\\
$\textnormal{0123456789}\textit{AaBbCcfi}$

\begin{gather}
\int_{0}^{1}x^{-x}\mathrm{d}x=\sum_{n=1}^{\infty}n^{-n}\\
A\setminus A=\varnothing=\emptyset
\end{gather}

\begin{equation}G(\theta)= \begin{cases}
& 29 - 25\lg(\theta)\text{ при } 1^{\circ}<\theta\leq20^{\circ}; \\
& -3,5\text{ при } 20^{\circ}<\theta\leq26,3^{\circ}; \\
& 32 - 25\lg(\theta)\text{ при } 26,3^{\circ}<\theta\leq48^{\circ}; \\
& -10\text{ при } 48^{\circ}<\theta\leq180^{\circ}. \\  
\end{cases}\end{equation}

\end{document}


Как можно исправить?

 Профиль  
                  
 
 Re: Цифры в формуле другим шрифтом
Сообщение07.02.2017, 00:18 
Заслуженный участник
Аватара пользователя


11/01/06
3822
Попробуйте добавить в преамбулу
Используется синтаксис LaTeX
\usefonttheme{professionalfonts}

Или даже
Используется синтаксис LaTeX
\usefonttheme{professionalfonts,serif}
, раз уж всё равно используете шрифт с засечками.

 Профиль  
                  
 
 Re: Цифры в формуле другим шрифтом
Сообщение07.02.2017, 18:16 


16/02/16
69
Ок, работает

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group