続・初めての ConTeXt Mark IV

前々回に、「初めての ConTeXt Mark IV」[id:munepi:20120408:context] を紹介しました。

その後、ZR さん経由で W32TeX 開発者である角藤さんからのお得情報を教えてくださいました。ZR さんの「ConTeXt で日本語する件について」 [id:zrbabbler:20120416:1334595982] で、そのお得情報が言及されていますので、合わせて参照ください。

欧文と和文のフォントを分ける

今日は、前々回に利用した simplefonts モジュールにおいて、欧文と和文のフォントを分けた例を紹介します。例文は、上記の ZR さんのところから、拝借しました。

%#!context hoge-t
\mainlanguage[ja]
\language[ja]
\setscript[hanzi]

\usemodule[simplefonts]
%%D Default fonts (from t-simplefonts.tex)
%\setmainfont        [Latin Modern Roman]
%\setsansfont        [Latin Modern Sans]
%\setmonofont        [Latin Modern Mono][features=none]
%\setmathfont        [Latin Modern Math]
%\sethandwritingfont [Latin Modern Roman] % neither handwritten nor calligraphic are available
%\setcalligraphicfont[Latin Modern Roman] % for Latin Modern but I need a default font for them

\setcjkmainfont[ipaexmincho]
\setcjksansfont[ipaexgothic]
\setcjkmonofont[ipaexgothic]

\starttext
\def\AboutConTeXtInJapanese{%
\ConTeXt(この中の X は /ks/ と読む)は \TeX\ 上に構成された文書生成
システムである。
最新版の「MkIV(マーク4)」は \LuaTeX\ エンジンのみをサポートし、
「MkII(マーク2)」は \pdfTeX\ と \XeTeX\ をサポートする。
(\XeTeX\ に対して「MkIII」が計画されていたが結局作られなかった。)}
\stoptext

上記の ConTeXt 文章を適当なファイル名で保存して、context でタイプセットすると、以下のようになります。

これで、欧文と和文のフォントをそれぞれ Latin Modern と IPA ex に指定できました。でも、普通の日本語組版としては程遠いですね :)

それは、またおいおいやっていきます。

形式的なフォント名

simplefonts モジュールを使ったときに、デフォルトで Latin Modern が指定されていました。ここでは、形式的なフォント名に対して、Latin Modern がどのような表示になるかを眺めてみます。

%#!context symbfnt-t
\usemodule[simplefonts]
%%D Default fonts (from t-simplefonts.tex)
%\setmainfont        [Latin Modern Roman]
%\setsansfont        [Latin Modern Sans]
%\setmonofont        [Latin Modern Mono][features=none]
%\setmathfont        [Latin Modern Math]
%\sethandwritingfont [Latin Modern Roman] % neither handwritten nor calligraphic are available
%\setcalligraphicfont[Latin Modern Roman] % for Latin Modern but I need a default font for them

\starttext
\def\PangramExample{%
The quick brown fox jumps over the lazy dog.}
\def\SymbolicFontTitle#1{%
  \leavevmode\framed[frame=off, bottomframe=on, topframe=on]{\vbox{#1}}}

\startluacode
symbfnt = {
    -- { name = "Blackboard", sty = "\\bbd", alt = "" }, -- Used by the \\bbd macro
    -- { name = "Calligraphic", sty = "\\cal", alt = "" }, -- Used by the \\cal macro
    -- { name = "Fraktur", sty = "\\frak", alt = "" }, -- Used by the \\frak macro
    -- { name = "Gothic", sty = "\\goth", alt = "" }, -- Used by the \\goth macro
    -- { name = "OldStyle", sty = "\\os", alt = "" }, -- Used by the \\os macro
    -- { name = "MPtxtfont", sty = "", alt = "" }, -- The default font for MetaPost
    { name = "Calligraphy", sty = "\\cg", alt = "\\tf" },
    { name = "Handwriting", sty = "\\hw", alt = "\\tf" },
    -- { name = "MathRoman", sty = "\\mm", alt = "\\mr" },
    -- { name = "MathRomanBold", sty = "\\mm", alt = "\\mr\\bf" },
    -- { name = "MathItalic", sty = "\\mm", alt = "\\mi" },
    -- { name = "MathItalicBold", sty = "\\mm", alt = "\\mi\\bf" },
    -- { name = "MathSymbol", sty = "\\mm", alt = "\\sy" },
    -- { name = "MathSymbolBold", sty = "\\mm", alt = "\\sy\\bf" },
    -- { name = "MathExtension", sty = "\\mm", alt = "\\ex" },
    -- { name = "MathExtensionBold", sty = "\\mm", alt = "\\ex\\bf" },
    -- { name = "MathAlpha", sty = "\\mm", alt = "\\ma" },
    -- { name = "MathAlphaBold", sty = "\\mm", alt = "\\ma\\bf" },
    -- { name = "MathBeta", sty = "\\mm", alt = "\\mb" },
    -- { name = "MathBetaBold", sty = "\\mm", alt = "\\mb\\bf" },
    -- { name = "MathGamma", sty = "\\mm", alt = "\\mc" },
    -- { name = "MathGammaBold", sty = "\\mm", alt = "\\mc\\bf" },
    -- { name = "MathDelta", sty = "\\mm", alt = "\\md" },
    -- { name = "MathDeltaBold", sty = "\\mm", alt = "\\md\\bf" },
    { name = "Mono", sty = "\\tt", alt = "\\tf" },
    { name = "MonoBold", sty = "\\tt", alt = "\\bf" },
    { name = "MonoItalic", sty = "\\tt", alt = "\\it" },
    { name = "MonoBoldItalic", sty = "\\tt", alt = "\\bi" },
    { name = "MonoSlanted", sty = "\\tt", alt = "\\sl" },
    { name = "MonoBoldSlanted", sty = "\\tt", alt = "\\bs" },
    { name = "MonoCaps", sty = "\\tt", alt = "\\sc" },
    { name = "Sans", sty = "\\ss", alt = "\\tf" },
    { name = "SansBold", sty = "\\ss", alt = "\\bf" },
    { name = "SansItalic", sty = "\\ss", alt = "\\it" },
    { name = "SansBoldItalic", sty = "\\ss", alt = "\\bi" },
    { name = "SansSlanted", sty = "\\ss", alt = "\\sl" },
    { name = "SansBoldSlanted", sty = "\\ss", alt = "\\bs" },
    { name = "SansCaps", sty = "\\ss", alt = "\\sc" },
    { name = "Serif", sty = "\\rm", alt = "\\tf" },
    { name = "SerifBold", sty = "\\rm", alt = "\\bf" },
    { name = "SerifItalic", sty = "\\rm", alt = "\\it" },
    { name = "SerifBoldItalic", sty = "\\rm", alt = "\\bi" },
    { name = "SerifSlanted", sty = "\\rm", alt = "\\sl" },
    { name = "SerifBoldSlanted", sty = "\\rm", alt = "\\bs" },
    { name = "SerifCaps", sty = "\\rm", alt = "\\sc" },
  }

for i = 1, table.getn(symbfnt) do
   mmode = string.match(symbfnt[i].name, "^Math")
   context("\\SymbolicFontTitle{")
   context(symbfnt[i].sty .. symbfnt[i].alt .. " " .. symbfnt[i].name)
   context("}")
   context.par()
   context(symbfnt[i].sty .. symbfnt[i].alt .. " \\PangramExample")
   context.par()
   context("\\vskip\\baselineskip")  
end
\stopluacode

\stoptext

上記の ConTeXt 文章を適当なファイル名で保存して、context でタイプセットすると、以下のようになります。

「アレ?変数 mmode とかあるけどー…」というツッコミは歓迎します :) こちらもそのうち、ネタとともにやりませう。

Lua コードの埋め込み方は、Programming in LuaTeX - ConTeXt wiki にも説明があります。\@tfor とかしなくてもいいんですよ(わら



今日は、ここまで。

さて、次回はー、日本語を考慮した体裁など、今日の続きの内容になりますか、もしくは、URW 基本 35 書体についてなにか記しておきましょうか。

お腹が減ってきたので、ではでは。