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

TeX ユーザの集い 2010 レポート(遅)

TeX texconf

先日の 10/23 に開催された研究集会「TeX ユーザの集い 2010」 http://oku.edu.mie-u.ac.jp/texconf10/ は、多くの皆様がご参加下さいまして、濃密な発表、議論が活発に行われた結果、想定以上の盛り上がりになりました。

私は、去年に開催された TeX ユーザの集い 2009 で口頭発表をさせていただきまして(■[TeX][Vine][Linux] TeX ユーザの集い 2009 の中心で「Vine 愛」を叫んできました! [id:munepi:20090830:1251598836]、texconf09 - munepi's fotolife)、Vine 愛を絶叫してしまいました :D が、今回、TeX ユーザの集い 2010 実行委員をさせていただきました。

色々な方がレポートを書いておられますが、ここでは私が思ったことをそのまま綴ろうと思います。

西松 毅さんの「TeX で数式が書ける軽量マークアップ言語 ULMUL の開発」

ULMUL http://ulmul.rubyforge.org/ の発表について、実行委員の黒木さんさんが「TeXユーザの集い 2010 に対する個人的総括 --- 自らの執筆と発言を振り返って」 http://ptetexwin.sourceforge.jp/texconf10/ でコメントをされているので、私はふと「Unicode 版の TeX という点」で docx の数式例を掲載しておきたい。

例えば、 wikipedia:リーマンゼータ関数 \zeta \left(s\right)={\sum }_{n=1}^{\infty }\frac{1}{{n}^{s}} を Word 2007 以降の数式エディタで記述すると、以下のような xml として記述されている*1

    <w:p w:rsidR="004B391B" w:rsidRPr="004B391B" w:rsidRDefault="004B391B" w:rsidP="004B391B">
      <w:pPr>
        <w:rPr>
          <w:rFonts w:hint="eastAsia"/>
          <w:i/>
        </w:rPr>
      </w:pPr>
      <m:oMathPara>
        <m:oMathParaPr>
          <m:jc m:val="center"/>
        </m:oMathParaPr>
        <m:oMath>
          <m:r>
            <w:rPr>
              <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/>
            </w:rPr>
            <m:t>ζ</m:t>
          </m:r>
          <m:d>
            <m:dPr>
              <m:ctrlPr>
                <w:rPr>
                  <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/>
                  <w:i/>
                </w:rPr>
              </m:ctrlPr>
            </m:dPr>
            <m:e>
              <m:r>
                <w:rPr>
                  <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/>
                </w:rPr>
                <m:t>s</m:t>
              </m:r>
            </m:e>
          </m:d>
          <m:r>
            <w:rPr>
              <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/>
            </w:rPr>
            <m:t xml:space="preserve">= </m:t>
          </m:r>
          <m:nary>
            <m:naryPr>
              <m:chr m:val="��"/>
              <m:ctrlPr>
                <w:rPr>
                  <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/>
                  <w:i/>
                </w:rPr>
              </m:ctrlPr>
            </m:naryPr>
            <m:sub>
              <m:r>
                <w:rPr>
                  <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/>
                </w:rPr>
                <m:t>n=1</m:t>
              </m:r>
            </m:sub>
            <m:sup>
              <m:r>
                <w:rPr>
                  <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/>
                </w:rPr>
                <m:t></m:t>
              </m:r>
            </m:sup>
            <m:e>
              <m:f>
                <m:fPr>
                  <m:ctrlPr>
                    <w:rPr>
                      <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/>
                      <w:i/>
                    </w:rPr>
                  </m:ctrlPr>
                </m:fPr>
                <m:num>
                  <m:r>
                    <w:rPr>
                      <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/>
                    </w:rPr>
                    <m:t>1</m:t>
                  </m:r>
                </m:num>
                <m:den>
                  <m:sSup>
                    <m:sSupPr>
                      <m:ctrlPr>
                        <w:rPr>
                          <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/>
                          <w:i/>
                        </w:rPr>
                      </m:ctrlPr>
                    </m:sSupPr>
                    <m:e>
                      <m:r>
                        <w:rPr>
                          <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/>
                        </w:rPr>
                        <m:t>n</m:t>
                      </m:r>
                    </m:e>
                    <m:sup>
                      <m:r>
                        <w:rPr>
                          <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/>
                        </w:rPr>
                        <m:t>s</m:t>
                      </m:r>
                    </m:sup>
                  </m:sSup>
                </m:den>
              </m:f>
            </m:e>
          </m:nary>
        </m:oMath>
      </m:oMathPara>
    </w:p>

これをみて頂ければ、docx が「Unicode 版の TeX」と言えなくもないということがお分かり頂けるかと思います。然るべき、xsl を記述すれば、上記 xml から MathML や TeX 表現へ変換できます。
これは、まさに pdflatex + \usepackage[mathletters]{ucs} にちょうどと同じだなーと感じわけです、ハイ。

<mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML">
  <m:oMathParaPr>
    <m:jc m:val="center"/>
  </m:oMathParaPr>
  <m:oMath>
    <mml:mi>ζ</mml:mi>
    <mml:mfenced separators="|">
      <mml:mrow>
	<mml:mi>s</mml:mi>
      </mml:mrow>
    </mml:mfenced>
    <mml:mo>=</mml:mo>
    <mml:mi>&#160;</mml:mi>
    <mml:msubsup>
      <mml:mo>��</mml:mo>
      <mml:mrow>
	<mml:mi>n</mml:mi>
	<mml:mo>=</mml:mo>
	<mml:mn>1</mml:mn>
      </mml:mrow>
      <mml:mrow>
	<mml:mi></mml:mi>
      </mml:mrow>
    </mml:msubsup>
    <mml:mrow>
      <mml:mfrac>
	<mml:mrow>
	  <mml:mn>1</mml:mn>
	</mml:mrow>
	<mml:mrow>
	  <mml:msup>
	    <mml:mrow>
	      <mml:mi>n</mml:mi>
	    </mml:mrow>
	    <mml:mrow>
	      <mml:mi>s</mml:mi>
	    </mml:mrow>
	  </mml:msup>
	</mml:mrow>
      </mml:mfrac>
    </mml:mrow>
  </m:oMath>
</mml:math>
\zeta \left(s\right)={\sum }_{n=1}^{\infty }\frac{1}{{n}^{s}}

村上智一(http://p-act.sakura.ne.jp/)さんの「LaTeX を使った同人誌出版について」

サインをもらいました :)

Norbert Preining さんの「TeX Live 2008--2010」

TeX Live のメンテナンスを含めて、概要がよくわかる講演でした。

私は、懇親会のときに、Norbert さんに、tlpdb2XXX(XXX: rpm, deb, ebuild, pkg など)を TeX Live 側でメンテナンスしませんか?と提案しておきました。つまり、TeX Live インストーラに従ったパッケージングを各パッケージマネージャ向けに生成するツールTeX Live 側でメンテナンスしましょうという提案です。

VineSeed http://trac.vinelinux.org/wiki/TeXEnvironment で作った tlpdb2rpmspec の概要を説明しておきました。今後、実際にどうするかをコンタクトしてみる予定です。

パネルディスカッション「商業印刷におけるTeX

私が実行委員として担当して、一番力を入れたセッションでした。

第一部のポジショントークから第二部への発展は絶妙な構成となり、大成功だったと思います。こればっかりは、実際にディスカッションがされないと、どのような展開になるか分かりませんので。

なるほどと思うコメントが多数ありましたが、私の心にもっともずっしりと乗った発言をあげるとすれば、第二部における小林 肇さん(リーブルテック http://www.livretech.co.jp/)のご発言でした。それは、私のメモ帳から引っ張ってきてまとめますと、

TeX というツールは、オペレータが商業品質の組版ができるようになるまでにかなりの時間を要する。しかしながら、印刷業界で使っているプロのツールというのは、プログラミングなどの技術的な知識があまり無くても使えるようになっていないと、初期コストにそのままなってしまうので、TeX組版ツールとして片手落ちなところがあるように思う。」

というコメントです。

この小林さんのご指摘は、私の中に全くなかったので、頭にズキーっンと突き刺さりました。

印刷業界というのは、実際に中に居て思うことですが、非常に閉じた業界だと思います。そのなかで、TeX 組版をやっているところなんて、わずかしかありませんし、TeX という組版ソフトの存在すら知らない業界の方も多いです。

私がこのパネルディスカッションとして「商業印刷における TeX」というテーマにしましたのは、少しでも現場における TeX の実情を世間に公開したい、広く知ってもらいたい、そんな気持ちでこの企画に取り組んできました。これは、去年の TeX ユーザの集い 2009 http://oku.edu.mie-u.ac.jp/texconf09/ において、私の発表の最後で申し上げました、「利用者・現場・開発者の情報共有」からきています。

現場で TeX を使っている一人として、現場でやっていることを TeX ユーザのコミュニティ全体、そして、業界全体に広く認知する必要があるように思います。実際に、現時点で TeX 組版をしている現場の情報ってほぼ公開されていませんよね? 逆に、現場の情報を非公開にしているから、それらをいつまでもノウハウのようにしていて、それで飯を食べられるようにしている、そういうやり方もあるかと思います。例えば、利用者が汚い TeX ソースコードで組んできて、現場の編プロでオペレータたちが文句を言っているようじゃー、ダメだと思うんですよね。文句をいうのに非常に無駄な負のエネルギーを使いますし、その後に正常な精神状態で組版に取り組めるとも思えません。利用者が悪いという前に、我々現場からもっと公開すべきこと、発信すべき情報があることに気づくべきだと思います。意味のあるマークアップにより、組版をしましょうとかですね、Web だとちょうど XHTML + CSS の組み合わせのように、TeX だと .tex と .cls, .sty など組み合わせに相当しますね。マークアップ以前にですね、本を製作するフローをきちんと著者、編集者、オペレータで波長を合わせておく、そういった基本的な作業すら共有していないと、TeX で製作するメリットすら、無くなってしまいかねない書籍などがあるように思います。

しかしながら、オープンソース的な考えが全くといってよいほど、ノウハウといいますか基本的な技術や情報を共有するということが、響かないのが今の現状のように感じています。このような基本的な情報は共有しつつ、一緒に開発していくことで、よりよい基本のスタイルが広くひろまり、利用者の使い勝手もあがり、余計なソースいじりも減ると思うんですけどね。Linux カーネルのようにですね、コアなところをみんなで開発するようなことができると思うんです。気づいている人たちが行動していくより他ないと思います。具体的にですね、例えば級数ベースの標準的なクラスファイルをきちんと示すとか、複雑なデザインや仕掛けができなくても、最近流行っている Web の jQuery のようなライブラリ的なパッケージを提供する、TeX で本を製作することについてドキュメント化するなどですね、やることがたくさんあるかと思います。

敢えて、"思います" を連発しました :) 今後、TeX を一ユーザとして戯れたり、現場で組版したり、パッケージングやツールなどを開発したりしていく中で、私、そして、みんなでできることを、どんどんと進めていこうと思います。

*1:実際は、word/document.xml を indent で正規化して、数式部分のみを抜粋した。