Arevmath e letra a

Arevmath e letra a

O arevmathpacote oferece dois a diferentes, disponíveis como \origa e \vara (valor padrão). Entretanto, adicionando \DeclareMathSymbol{a}{\mathalpha}{extraitalic}{50}no preâmbulo transformar \origa como padrão a, a saída está errada; por exemplo, $\mathsf{a}$ produz 2, idem para $\mathbf{a}$.

\documentclass{article}    
\usepackage{arevmath}

\DeclareMathSymbol{a}{\mathalpha}{extraitalic}{50} % \origa by default

\begin{document}

$a, \mathsf{a}, \mathbf{2}, \vara, \origa, \mathsf{\origa}$ 

\end{document}

insira a descrição da imagem aqui

Como consertar isto?

Responder1

Fontes legadas, com apenas 128 ou 256 slots, exigiam muita ginástica de codificação e muitos arquivos de suporte de fontes.

Para arevmathpackage, for a, os tt e tt negrito podem ser o que você procura. Caso contrário, a “rodada” aparece ser a norma.

Visão geral rápida:

zavm

(No entanto, é mais fácil usar fontes ttf\otf com unicode-mathpacote.)

MWE

Tabelas de fontes/listas de glifos:

\documentclass{article}    
\usepackage{arevmath}
\usepackage{fonttable}

%\DeclareMathSymbol{b}{\mathalpha}{extraitalic}{50} % 
\newcommand\showfont[6]{\newpage #1-#2-#3-#4 : for #5, #6 = {\usefont{#1}{#2}{#3}{#4}\char#6}\par\xfonttable{#1}{#2}{#3}{#4}}
\newcommand\xshowfont[6]{\par#1-#2-#3-#4 : for #5, #6 = {\usefont{#1}{#2}{#3}{#4}\char#6}}
\begin{document}


\xshowfont{U}{zavm}{m}{n}{nonstandard alternate glyphs, upright}{113}
\xshowfont{U}{zavm}{m}{it}{nonstandard alternate glyphs, italic}{50}
\xshowfont{U}{zavm}{m}{it}{nonstandard alternate glyphs, italic}{139}


\xshowfont{OT1}{zavm}{m}{n}{operators normal}{97}
\xshowfont{OML}{zavm}{m}{it}{letters normal}{97}
\xshowfont{OMS}{zavm}{m}{n}{symbols normal}{65}
\xshowfont{OMX}{mdbch}{m}{n}{largesymbols normal}{74}

\xshowfont{OT1}{zavm}{b}{n}{mathbf normal}{97}
\xshowfont{T1} {fvm} {m}{n}{mathtt normal}{97}
\xshowfont{OMS}{cmsy}{m}{n}{mathcal}{65} 
\xshowfont{U}{rsfs}{m}{n}{mathscr}{65}   
\xshowfont{OML}{zavm}{b}{it}{mathbm}{97}
%\showfont{U}{futm}{m}{n}{mathbb}{1}

%=====
\xshowfont{OT1}{zavm}{b}{n}{operators bold}{97}
\xshowfont{OML}{zavm}{b}{it}{letters bold}{97}
\xshowfont{OMS}{zavm}{b}{n}{symbols bold}{65}
\xshowfont{OMX}{mdbch}{b}{n}{largesymbols bold}{72}
\xshowfont{OT1}{zavm}{b}{n}{mathbf bold}{97}
\xshowfont{T1}{fvm}{b}{n}{mathtt bold}{97}

% with font table

\showfont{U}{zavm}{m}{n}{nonstandard alternate glyphs, upright}{113}
\showfont{U}{zavm}{m}{it}{nonstandard alternate glyphs, italic}{50}


\showfont{OT1}{zavm}{m}{n}{operators normal}{97}
\showfont{OML}{zavm}{m}{it}{letters normal}{97}
\showfont{OMS}{zavm}{m}{n}{symbols normal}{65}
\showfont{OMX}{mdbch}{m}{n}{largesymbols normal}{74}

\showfont{OT1}{zavm}{b}{n}{mathbf normal}{97}
\showfont{T1} {fvm} {m}{n}{mathtt normal}{97}
\showfont{OMS}{cmsy}{m}{n}{mathcal}{65} 
\showfont{U}{rsfs}{m}{n}{mathscr}{65}   
\showfont{OML}{zavm}{b}{it}{mathbm}{97}
%\showfont{U}{futm}{m}{n}{mathbb}{1}

%=====
\showfont{OT1}{zavm}{b}{n}{operators bold}{97}
\showfont{OML}{zavm}{b}{it}{letters bold}{97}
\showfont{OMS}{zavm}{b}{n}{symbols bold}{65}
\showfont{OMX}{mdbch}{b}{n}{largesymbols bold}{72}
\showfont{OT1}{zavm}{b}{n}{mathbf bold}{97}
\showfont{T1}{fvm}{b}{n}{mathtt bold}{97}



%\DeclareSymbolFontAlphabet{\mathnormal}{letters}
%\DeclareSymbolFontAlphabet{\mathit}    {letters}
%\DeclareSymbolFontAlphabet{\mathrm}    {operators}
%\DeclareSymbolFontAlphabet{\mathsf}    {letters}



\end{document}


Editar

Fonte herdada típica:

uma lista de glifos

As letras variantes vêm de um arquivo de fonte com Ucodificação (="desconhecida"), ou seja, um arranjo personalizado de glifos, algo semelhante conceitualmente à Área de Uso Privado do Unicode.

você codifica

enquanto letras 'normais' vêm de um arquivo de fonte de 128 slots com uma das codificações herdadas ( OML)

olá

e símbolos da OMScodificação:

om

e assim por diante para negrito, etc.... (O código imprime as várias tabelas.)

O arevmathpacote está funcionando conforme projetado.

A "correção" provavelmente seria usar pacotes compatíveis com Unicode que podem alternar fontes para você, dependendo de qual compilador você usa, ou mergulhar unicode-mathdiretamente no pacote e compilar com xelatex/lualatex (ou talvez reescrever arevmath? - foi mantido pela última vez em 2006).


Mini-exemplo de importação de símbolos usando matemática unicode

Digamos que temos um conjunto de fontes matemáticas Unicode para escolher (sem está marcado):

lista de fontes

E digamos que queremos usar a fonte TeX Gyre Schola Math, mas substituindo seus símbolos alfanuméricos "arredondados a" sem itálico pelos da fonte Asana-Math.

asana

(Observe que os símbolos de entrada direta e os símbolos de macro nomeados são normalizados para o estilo negrito e estilo matemático atualmente em vigor, basicamente na vertical ou em itálico.)

Aqui está o TeX Gyre Schola Math definido como fonte matemática, com seu estilo definido como ISO, para mostrar o itálico fluindo.

escola

A range=opção é usada para selecionar quais símbolos importar. Vamos torná-los vermelhos para destacá-los.

importado

(Observe que range={sfit,bfsfit}importará sem itálico e negrito sem itálico para letras latinas maiúsculas, letras latinas minúsculas, letras maiúsculas gregas, letras minúsculas gregas e dígitos; range=pode usar parâmetros para restringir a importação a apenas um, ou uma combinação deles, ou até mesmo a apenas indivíduos glifos.)

Faça texdoc unicode-mathpara obter mais detalhes.

MWE

\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{unicode-math}
\setmathfont{Asana-Math}[Colour=brown]
\setmainfont{Noto Serif}
\usepackage{xparse}



% maths

\newfontfamily\asanamath{Asana}[Extension=.otf,Path=C:/.../tl/texlive/2020/texmf-dist/fonts/opentype/public/asana-math/,
UprightFont =*-Math,
]


\newfontfamily\firamathregular{FiraMath}[Extension=.otf,Path=C:/.../tl/texlive/2020/texmf-dist/fonts/opentype/public/firamath/,
UprightFont =*-Regular,
]

\newfontfamily\gfsneohellenicmath{GFSNeohellenicMath}[Extension=.otf,Path=C:/.../tl/texlive/2020/texmf-dist/fonts/opentype/public/gfsneohellenicmath/,
UprightFont =GFSNeohellenicMath,
]

\newfontfamily\latinmodernmath{latinmodern}[Extension=.otf,Path=C:/.../tl/texlive/2020/texmf-dist/fonts/opentype/public/lm-math/,
UprightFont =*-math,
]

\newfontfamily\libertinusmath{LibertinusMath}[Extension=.otf,Path=C:/.../tl/texlive/2020/texmf-dist/fonts/opentype/public/libertinus-fonts/,
UprightFont =*-Regular,
]

\newfontfamily\stixmath{STIXMath}[Extension=.otf,Path=C:/.../tl/texlive/2020/texmf-dist/fonts/opentype/public/stix/,
UprightFont =*-Regular,
]

\newfontfamily\stixiimath{STIX2Math}[Extension=.otf,Path=C:/.../tl/texlive/2020/texmf-dist/fonts/opentype/public/stix2-otf/,
UprightFont =STIX2Math,
]

\newfontfamily\texgyrebonummath{texgyrebonum}[Extension=.otf,Path=C:/.../tl/texlive/2020/texmf-dist/fonts/opentype/public/tex-gyre-math/,
UprightFont =*-math,
]
%
\newfontfamily\texgyredejavumath{texgyredejavu}[Extension=.otf,Path=C:/.../tl/texlive/2020/texmf-dist/fonts/opentype/public/tex-gyre-math/,
UprightFont =*-math,
]
%
\newfontfamily\texgyrepagellamath{texgyrepagella}[Extension=.otf,Path=C:/.../tl/texlive/2020/texmf-dist/fonts/opentype/public/tex-gyre-math/,
UprightFont =*-math,
]
%
\newfontfamily\texgyrescholamath{texgyreschola}[Extension=.otf,Path=C:/.../tl/texlive/2020/texmf-dist/fonts/opentype/public/tex-gyre-math/,
UprightFont =*-math,
]
%
\newfontfamily\texgyretermesmath{texgyretermes}[Extension=.otf,Path=C:/.../tl/texlive/2020/texmf-dist/fonts/opentype/public/tex-gyre-math/,
UprightFont =*-math,
]
%
\newfontfamily\xitsmathbold{XITSMath}[Extension=.otf,Path=C:/.../tl/texlive/2020/texmf-dist/fonts/opentype/public/xits/,
UprightFont =*-Bold,
]
%
\newfontfamily\xitsmathregular{XITSMath}[Extension=.otf,Path=C:/.../tl/texlive/2020/texmf-dist/fonts/opentype/public/xits/,
UprightFont =*-Regular,
]







%-------------------------------------------------------------
\ExplSyntaxOn



        \cs_generate_variant:Nn 
            \seq_gset_split:Nnn 
            { cno }


\tl_new:N \g_fc_namespace_tl




%------------------
    \cs_set:Npn \fc_funcsymbolcompare:n #1 { 
    % 1=font switch name

   \tl_set:Nx
    \l_tmpa_tl
    {
                #1
        }
    \use:c
        { \tl_use:N \g_tmpa_tl } % sample name taking font name as parameter
            { \tl_use:N \l_tmpa_tl } % font name from seq
            { \tl_use:N \g_tmpb_tl } % symbol
}


%------------------
    \cs_set:Npn \fc_funcprintesc:n #1 { 
    % 1=string
\exp_args:NNf   \str_set:Nn \l_tmpa_str { #1 }
                        \group_begin:
                        \color{blue} 
                        \usefont{T1}{zi4}{b}{n} 
                        \large
                        \textbackslash
                        {\str_use:N \l_tmpa_str}
                        \group_end:
                        
}

%------------------
    \cs_set:Npn \fc_funcprint:n #1 { 
    % 1=string
\exp_args:NNf   \str_set:Nn \l_tmpa_str { #1 }
                        \str_remove_all:Nn \l_tmpa_str {\protect}
\exp_args:NNxx
                        \str_replace_all:Nnn 
                                \l_tmpa_str 
                                {\space\space\c_left_brace_str} 
                                {\c_left_brace_str}
\exp_args:NNxx
                        \str_replace_all:Nnn 
                                \l_tmpa_str 
                                {\space\c_left_brace_str} 
                                {\c_left_brace_str}

                        \group_begin:
                        \color{blue} 
                        \usefont{T1}{zi4}{b}{n} 
                        \large

                        {\str_use:N \l_tmpa_str}

                        \group_end:
                        
}









%****************************************************
%* utility commands
%****************************************************
%--------------------
\newcommand\mfssamplewidth{0.5in}
\NewDocumentCommand { \psymcmp } { m m } { 
% 1=font name
% 2=symbol(s)
            \use:c { #1 }
            \tex_par:D
            \colorbox
                    {blue!7}
                    {
                        \makebox[\mfssamplewidth][c]{\large #2}
                    } 
        {\usefont{T1}{lmr}{m}{n} \ #1} 

}


%****************************************************
%* main commands
%****************************************************
%--------------------
\NewDocumentCommand { \mfsloadaseq } { o m +m } { 
% 1=namespace
% 2=seq name
% 3=data

                \IfNoValueTF { #1 } 
                        { \tl_clear:N \g_fc_namespace_tl } 
                        { \tl_gset:Nn \g_fc_namespace_tl { #1 } }


    \cs_if_free:cT
            { g_fc_rwe \g_fc_namespace_tl #2 _seq }
            { \seq_new:c
                    { g_fc_rwe \g_fc_namespace_tl #2 _seq } 
            }
    \seq_gclear:c 
            { g_fc_rwe \g_fc_namespace_tl #2 _seq } 
    \seq_gset_split:cno 
            { g_fc_rwe \g_fc_namespace_tl #2 _seq } 
            { , } 
            { #3 }



}



%****************************************************
%*
%****************************************************
%--------------------
\NewDocumentCommand { \mfssymbolcompare } { o m m m } { 
% 1=namespace
% 2=seq name
% 3=sample name
% 4=symbol

                \IfNoValueTF { #1 } 
                        { \tl_clear:N \g_fc_namespace_tl } 
                        { \tl_gset:Nn \g_fc_namespace_tl { #1 } }

        \tl_gset:Nn \g_tmpa_tl { #3 } 
        \tl_gset:Nn \g_tmpb_tl { #4 } 


        \group_begin:               
            \exp_args:Nx
            \seq_map_function:cN 
                    { g_fc_rwe \g_fc_namespace_tl #2 _seq } 
                    \fc_funcsymbolcompare:n
        \group_end:


}


%****************************************************
%*
%****************************************************
%-------------------- Meta



\tl_new:N \l_myparmb_tl
%-------------------- MetaC
\NewDocumentCommand \mmc { s m } { % 1=run, 2 = text
                        \tl_set:Nn \l_myparmb_tl { #2 }


                \IfBooleanTF { #1 } 
            {
                    \fc_funcprint:n { \tl_use:N \l_myparmb_tl }
                    \space $\mapsto$ \space  \l_myparmb_tl
                } 
            {
                    \fc_funcprintesc:n { \tl_use:N \l_myparmb_tl }
                } 

}





%-------------------- xMetaV
\NewDocumentCommand \xmmv { s O{\texttt} m } { % 1 = font, 2 = text
\tl_set:Nn \l_tmpa_tl { #2 {  \tl_to_str:n {#3} } 
        \IfBooleanT {#1} { \space $\mapsto$\space #3 }
          }
\tl_use:N \l_tmpa_tl

}



\ExplSyntaxOff


\newcommand\mtable[1]{% 1-(text)font for mmode
\begin{tabular}{lll}
\rowcolor{brown!15}
generic macros
& specific macros
& direct input
\\
\mmc*{$\symsfup{a}x$}
& \mmc*{$\msansa x$}
& \xmmv*[#1]{$

informação relacionada