読者です 読者をやめる 読者になる 読者になる

ギリシャ文字のみ Computer Modern Bright をつかってみた

TeX

某書籍では、図表環境である float 環境中の書体を、和文も含めて san-serif 系にしている。ところが、この float 環境中でしばしば $\alpha$, $\beta$ などのギリシャ文字が現れるので、serif な Computer Modern の数式書体(cmmi10 など)を使われると、なじまない。

こんなときは、「和文書体の全角ギリシャ文字を使うのがjk」ではなくて、sans serif な Computer Mordern の一つである Computer Modern Bright CTAN: tex-archive/fonts/cmbright を試してみるとよいかもしれない。

数式書体を含めて全体を Computer Modern Bright にする場合は、

\usepackage{cmbright}

とすればよい。

今回は、ある環境中のギリシャ文字のみを Computer Modern Bright のそれらに置き換えるので、以下のように cmbr を接頭辞を付加した cmbrletters という名前で、Computer Modern Bright の数式イタリックを場当たり的に定義しておいて、その環境中で \alpha, \beta, ... をそれぞれ \cmbralpha, \cmbrbeta, ... に置き換えてみた。

%% defined \cmbrXXXXX where XXXXX is a Greek letter
%% from cmbright.sty 2002/05/25 v7.1 (WaS)
\DeclareSymbolFont        {cmbrletters} {OML}{cmbrm}{m}{it}
\DeclareMathSymbol{\cmbralpha}{\mathalpha}{cmbrletters}{11}
\DeclareMathSymbol{\cmbrbeta}{\mathalpha}{cmbrletters}{12}
\DeclareMathSymbol{\cmbrgamma}{\mathalpha}{cmbrletters}{13}
\DeclareMathSymbol{\cmbrdelta}{\mathalpha}{cmbrletters}{14}
\DeclareMathSymbol{\cmbrepsilon}{\mathalpha}{cmbrletters}{15}
\DeclareMathSymbol{\cmbrzeta}{\mathalpha}{cmbrletters}{16}
\DeclareMathSymbol{\cmbrGamma}{\mathalpha}{cmbrletters}{0}
\DeclareMathSymbol{\cmbreta}{\mathalpha}{cmbrletters}{17}
\DeclareMathSymbol{\cmbrtheta}{\mathalpha}{cmbrletters}{18}
\DeclareMathSymbol{\cmbriota}{\mathalpha}{cmbrletters}{19}
\DeclareMathSymbol{\cmbrkappa}{\mathalpha}{cmbrletters}{20}
\DeclareMathSymbol{\cmbrlambda}{\mathalpha}{cmbrletters}{21}
\DeclareMathSymbol{\cmbrmu}{\mathalpha}{cmbrletters}{22}
\DeclareMathSymbol{\cmbrnu}{\mathalpha}{cmbrletters}{23}
\DeclareMathSymbol{\cmbrxi}{\mathalpha}{cmbrletters}{24}
\DeclareMathSymbol{\cmbrpi}{\mathalpha}{cmbrletters}{25}
\DeclareMathSymbol{\cmbrrho}{\mathalpha}{cmbrletters}{26}
\DeclareMathSymbol{\cmbrsigma}{\mathalpha}{cmbrletters}{27}
\DeclareMathSymbol{\cmbrtau}{\mathalpha}{cmbrletters}{28}
\DeclareMathSymbol{\cmbrupsilon}{\mathalpha}{cmbrletters}{29}
\DeclareMathSymbol{\cmbrphi}{\mathalpha}{cmbrletters}{30}
\DeclareMathSymbol{\cmbrchi}{\mathalpha}{cmbrletters}{31}
\DeclareMathSymbol{\cmbrpsi}{\mathalpha}{cmbrletters}{32}
\DeclareMathSymbol{\cmbromega}{\mathalpha}{cmbrletters}{33}
\DeclareMathSymbol{\cmbrvarepsilon}{\mathalpha}{cmbrletters}{34}
\DeclareMathSymbol{\cmbrvartheta}{\mathalpha}{cmbrletters}{35}
\DeclareMathSymbol{\cmbrvarpi}{\mathalpha}{cmbrletters}{36}
\DeclareMathSymbol{\cmbrvarrho}{\mathalpha}{cmbrletters}{37}
\DeclareMathSymbol{\cmbrvarsigma}{\mathalpha}{cmbrletters}{38}
\DeclareMathSymbol{\cmbrvarphi}{\mathalpha}{cmbrletters}{39}

\makeatletter
\@for\x:={alpha,beta,gamma,delta,epsilon,zeta,Gamma,eta,theta,iota,kappa,lambda,mu,nu,xi,pi,rho,sigma,tau,upsilon,phi,chi,psi,omega,varepsilon,vartheta,varpi,varrho,varsigma,varphi}\do{
  \expandafter\expandafter\expandafter
    \let\expandafter \csname\expandafter\x\expandafter\endcsname
      \csname cmbr\x\endcsname
}
\makeatother

もっと smart な方法があるかもしれないが、とりあえず目的は達成できたので、これで良しとしよう。

何よりも、\expandafter\expandafter\expandafter ... を使えた日は、たとえその解がどんなに簡単であろうとも、ニヤニヤしまうな(笑