
Como obtenho o Charter com sua opção "oldstyle" no modo de texto e com os caracteres do Charter (incluindo dígitos) no modo matemático?
A solução proposta precisa funcionar com LuaLaTeX (porque alguns caracteres de texto não são ASCII e prefiro colar esses caracteres não ASCII no arquivo de origem e salvar a fonte como UTF-8).
Editar:Caso seja relevante, eu uso o MiKTeX v.2.9. Preciso atualizar para resolver esse problema?
Posso chegar tentadoramente perto, mas não consigo fazer tudo funcionar ao mesmo tempo.
MWE 1:
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{fontspec}
\setmainfont{XCharter} % see https://tex.stackexchange.com/a/205558
\usepackage[oldstyle]{xcharter}
% See https://tex.stackexchange.com/a/347574 for why this is needed.
\AtBeginDocument{%
\Umathcode`0="7 "0 `0
\Umathcode`1="7 "0 `1
\Umathcode`2="7 "0 `2
\Umathcode`3="7 "0 `3
\Umathcode`4="7 "0 `4
\Umathcode`5="7 "0 `5
\Umathcode`6="7 "0 `6
\Umathcode`7="7 "0 `7
\Umathcode`8="7 "0 `8
\Umathcode`9="7 "0 `9
}
\usepackage[charter]{newtxmath}
\begin{document}
Digits in plain text: 48/96=135/270.
$a=48, b=96, c=135, d=270\implies a/b=c/d.$ $8=5+3=9-1=2\times4=2^3.$
\end{document}
Os dígitos em modo texto são exatamente como eu quero. Além disso, as letras no modo matemático estão em itálico da Carta, o que eu quero. No entanto, os dígitos no modo matemático são modernos para computadores, apesar da minha tentativa de usar o código emesta resposta, que respondeu a uma pergunta semelhante em relação ao Libertine.
MWE 2
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{fontspec}
\setmainfont{XCharter}[Numbers={OldStyle}] % see https://tex.stackexchange.com/a/205558
\usepackage[charter]{newtxmath}
% See https://tex.stackexchange.com/a/347574 for why this is needed.
\AtBeginDocument{%
\Umathcode`0="7 "0 `0
\Umathcode`1="7 "0 `1
\Umathcode`2="7 "0 `2
\Umathcode`3="7 "0 `3
\Umathcode`4="7 "0 `4
\Umathcode`5="7 "0 `5
\Umathcode`6="7 "0 `6
\Umathcode`7="7 "0 `7
\Umathcode`8="7 "0 `8
\Umathcode`9="7 "0 `9
}
\begin{document}
Digits in plain text: 48/96=135/270.
$a=48, b=96, c=135, d=270\implies ab=cd.$ $8=5+3=9-1=2\times4=2^3.$
\end{document}
Agora tento obter dígitos antigos em modo texto hackeando \setmainfont em vez de \usepackage{xcharter}. Mas isso parece passar o parâmetro oldstyleI (em vez de oldstyle) para \usepackage{xcharter}. De qualquer forma, o resultado é que o modo texto tem dígitos no estilo antigo, mas com um I maiúsculo para 1. A boa notícia é que os dígitos no modo matemático são Charter, que é o que eu quero.
Seria ainda melhor se os modos de texto e matemática pudessem usar dígitos da Carta no estilo antigo. Dessa forma eu poderia manter as tabelas como ambientes de array no modo matemático. Ter que ir para o modo texto para dígitos em tabelas implica substituir, por exemplo, $\begin{array}{r} n \\ 1 \end{array}$
por \begin{tabular}{r} $n$ \\ 1 \end{tabular}
.
Responder1
Como você está usando LuaLaTeX, você pode carregar unicode-math
em vez de newtxmath
, o que apresenta problemas de compatibilidade. Use a fonte XCharter-Math para matemática.
EDITAR:Nos comentários, você solicitou o numeral 1 de [oldstyleI]
, que é a variante de caractere 01 na versão OpenType do XCharter. Uma versão revisada está abaixo.
\documentclass[12pt,a4paper]{article}
\usepackage{unicode-math}
\defaultfontfeatures[XCharter]{ Numbers=OldStyle,
CharacterVariant=1, % Change the shape of 1 in text mode
UprightFont=*-Roman,
BoldFont=*-Bold,
ItalicFont=*-Italic,
SlantedFont=*-Slanted,
BoldItalicFont=*-BoldItalic,
BoldSlantedFont=*-BoldSlanted,
Extension=.otf }
\setmainfont{XCharter}
\setmathfont{XCharter-Math}
\begin{document}
Digits in plain text: 48/96=135/270.
$a=48, b=96, c=135, d=270\implies ab=cd.$ $8=5+3=9-1=2\times4=2^3.$
\end{document}
No caso improvável de você querer números antigos também no modo matemático, você pode adicionar o comando:
\setmathfont{XCharter-Roman.otf}[range={up/num},
Numbers=OldStyle,
CharacterVariant=01] % Change the shape of 1 in math mode
Aqui está uma versão que funciona em PDFLaTeX:
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\usepackage[charter]{mathdesign}
\usepackage[oldstyle]{xcharter}
\begin{document}
Digits in plain text: 48/96=135/270.
$a=48, b=96, c=135, d=270\implies ab=cd.$ $8=5+3=9-1=2\times4=2^3.$
\end{document}
Eu recomendo que você use unicode-math
LuaLaTeX quando puder, e PDFLaTeX com fontes legadas de 8 bits quando necessário. Mas, como você diz que o problema aqui foi não conseguir ler Unicode, há uma boa chance de que seu documento funcionaria se você o salvasse na codificação UTF-8 NFC (normalizada pré-composta). PDFLaTeX não é capaz de entender caracteres de combinação Unicode, mas pode lidar com qualquer caractere Unicode que mapeie diretamente para uma codificação de entrada de 8 bits.
Editar:
Se você realmente deseja usar uma fonte de texto OpenType junto com uma fonte matemática herdada Tipo 1, isso deve funcionar:
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\usepackage[charter]{mathdesign}
\usepackage{fontspec}
\setmainfont{XCharter}[NFSSFamily=mdbch, Numbers=OldStyle]
\begin{document}
Digits in plain text: 48/96=135/270.
$a=48, b=96, c=135, d=270\implies ab=cd.$ $8=5+3=9-1=2\times4=2^3.$
\end{document}
Responder2
Se você não quiser usar unicode-math
, será necessário redefinir a operators
fonte para usar o XCharter com figuras de revestimento.
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{fontspec}
\usepackage[charter]{newtxmath}
\setmainfont{XCharter}[Numbers={OldStyle}] % see https://tex.stackexchange.com/a/205558
\newfontfamily{\XCharterLF}{XCharter}[NFSSFamily=xcharterlf]
\DeclareSymbolFont{operators}{TU}{xcharterlf}{m}{n}
\begin{document}
Digits in plain text: 48/96=135/270.
$a=48, b=96, c=135, d=270\implies ab=cd$.
$8=5+3=9-1=2\times4=2^3$.
$\sin x$
\end{document}