Como obter dígitos da Carta em ambos os modos; estilo antigo em modo texto?

Como obter dígitos da Carta em ambos os modos; estilo antigo em modo texto?

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-mathem 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}

Amostra XCharter

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-mathLuaLaTeX 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 operatorsfonte 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}

insira a descrição da imagem aqui

informação relacionada