Editar

Editar

Preciso alterar o tamanho da fonte no meio do documento. O problema é que os caracteres na matemática embutida ficam esticados (ficam mais largos) em comparação com o modo de texto, não importa o método que eu tentei e isso parece ruim (e desperdiça espaço na página). Como posso consertar isso?

Aqui está um MWE:

\documentclass{scrbook}
\usepackage{unicode-math}

\begin{document}
   Same character width:\\
     123456789012345678901234567890\\
   $ 123456789012345678901234567890 $\par

   \KOMAoptions{fontsize=10}
   % or other change in size like \footnotesize \LARGE etc

   Different character width:\\
   123456789012345678901234567890\\
   $ 123456789012345678901234567890 $\par

\end{document}

insira a descrição da imagem aqui

Responder1

Você poderia forçar o unicode-math a usar a fonte de texto latina moderna normal para os números:

\documentclass{scrbook}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont[range={"0030-"0039}]{Latin Modern Roman}
\setmathfont[range=\int]{Latin Modern Math} %last font should be a math font

\begin{document}
   Same character width:\\
     123456789012345678901234567890\\
   $ 123456789012345678901234567890 $\par

 \KOMAoptions{fontsize=10}
   Different character width:\\
   123456789012345678901234567890\\
   $ 123456789012345678901234567890  x^3$\par

\end{document}

Editar

Na verdade, o comando range não é necessário. Simplesmente definir a fonte matemática como egreg faz em sua resposta resolve o problema para mim em um sistema tex moderno:

\documentclass{scrbook}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}

\begin{document}
   Same character width:\\
     123456789012345678901234567890\\
   $ 123456789012345678901234567890 $\par

 \KOMAoptions{fontsize=10}
   Different character width:\\
   123456789012345678901234567890\\
   $ 123456789012345678901234567890  x^3$\par

\end{document}

Editar 2

Depois de olhar um pouco mais de perto (e testar outros tamanhos de fonte), descobri a origem do problema: unicode-math está configurando a matemática com diferentes "estilos matemáticos". Tamanhos de fonte menores são usados, por exemplo, +ssty=0;e isso leva a números mais largos (isso é um recurso, não um bug. Caracteres mais largos são mais legíveis em tamanhos pequenos).

Portanto, se alguém alterar o tamanho geral da fonte, será necessário configurar as fontes matemáticas novamente:

\documentclass[fontsize=11pt]{scrbook}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}

\begin{document}
   Same character width:\\
     123456789012345678901234567890 abc\\
$    123456789012345678901234567890 abc$

\KOMAoptions{fontsize=9}
\setmathfont{Latin Modern Math}
  Different character width:\\
   123456789012345678901234567890 abc\\
$  123456789012345678901234567890 abc$

\end{document}

No caso das Latin Modern Fonts onde as fontes do texto possuem tamanhos ópticos ainda há uma diferença.

Responder2

Você simplesmente precisa especificar a fonte matemática. O motivo pelo qual isso acontece pode ser um bug unicode-math(ou uma consequência de como fontsize=10funciona).

\documentclass{scrbook}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}

\begin{document}

   Same character width:\\
     123456789012345678901234567890\\
   $ 123456789012345678901234567890 $\par

   \KOMAoptions{fontsize=10}
   % or other change in size like \footnotesize \LARGE etc

   Different character width:\\
   123456789012345678901234567890\\
   $ 123456789012345678901234567890 $\par

\end{document}

insira a descrição da imagem aqui

A pequena mudança nas exibições se deve ao que parece ser um bug na fonte Latin Modern Math; se eu fizer

\sbox0{78}\showbox0
\sbox0{$78$}\showbox0

com a scrbookconfiguração normal (11pt), então recebo

\hbox(7.40219+0.24089)x10.95
.\EU1/lmr/m/n/10.95 78

para a primeira caixa, enquanto eu consigo

\hbox(7.40219+0.2409)x11.09236
.\mathon
.\EU1/LatinModernMath(0)/m/n/10.95 glyph#24
.\kern0.14235
.\EU1/LatinModernMath(0)/m/n/10.95 glyph#25
.\mathoff

A diferença de tamanho é 11.09236 - 10.95 = 0.14236(a diferença é 1sp devido à aritmética binária, não relevante). O kern é adicionado entre 7 equalquerdígito. Nenhum outro kerning é inserido entre os dígitos.

informação relacionada