Tweet

マークアップとWYSIWYG

そもそも$\TeX$は何なのか

文書とは

現代社会は文書で溢れている.例えば,大学ではレポートや論文を書き, 企業の製品には詳細な使い方が書かれたマニュアルが付属している. レポートや論文を読む人は,たとえ書いた人がそばにいなくとも, 書かれた文書のみから著者の思考をトレースすることができる. 企業の製品を利用する人は,開発者がそこにいなくとも,書かれたマニュアルを読むだけで 自分が買った製品の使い方を把握することができる. このサイトもそうである.私は読者のそばにいないが,読者は私が書いた文章を通して 私の思考をトレースすることができる. 従って,現代社会において周りに自分が考案した何かを伝えたいとき,そのことを まとめた文書を作成し,公開しておくと非常に都合がよい. たとえ自分がそばにいなくとも(死後であっても!),その文書を読むだけで そのことを伝えることができるからである.

ところで,文書は大きく分けて2つの要素から構成されている. 1つはそもそも何が書かれているのかという情報である. これがなければもはや文書とは呼びようがない. しかし文書は情報のみからできているわけではない.余白が適切に設定されていたり, 重要な箇所は太字になっていたり,プログラムのソースコードはフォントが変わっていたりすることがある. これは文書の内容に直接的に関わるものではないが,視覚的な効果により読者が文書の内容を理解するのを助ける役割を果たす. これはいわゆるデザインというやつであろう.たとえ内容がよく練られていたとしても, デザインがめちゃくちゃでは読者はまともに理解することはできないであろう. 文書は,情報とデザインという2つの要素によって構成されているのである. 従って,文書を作成するということは,何を書くかという情報とどんな見た目にするかというデザインを決めることに他ならない.

文書作成の方式

文書を作成するということは,何を書くかという情報とどんな見た目にするかというデザインを決めることであると述べた. ここでは,どのようにして文書を作成するかについて考えてみよう.

「文書を書け」と言われれば,大多数の人間がパソコンを起動してその中にある Microsoft社のWordを開くはずである. 画面には白紙の紙が表示されており,キーボードで文字を入力すれば 画面上にその文字が出力され,それがそのまま完成形となる. おそらくこの「画面上に表示されたものがそのまま完成形となる」という形で 文書作成を進めていくのがもっともポピュラーであろう. この方式を「What You See Is What You Get」の頭文字を取って WYSIWYG方式と呼ぶ.

WYSIWYG方式はきわめてポピュラーな文書作成方式であるものの,WYSIWYGだけが 実用的な文書作成方式だというわけではない. よく使われる文書作成方式として「一度入力ファイルを作成し, それをある処理系で処理し,出力ファイルとして完成した文書を得る」という方式もある. この方式をマークアップ方式と呼ぶ. これから学んでいく$\TeX$は,マークアップ方式で文書を作成するためのシステムである.

マークアップ方式とWYSIWYG方式の比較

文書作成の方式として,WYSIWYG方式とマークアップ方式の2種類を紹介した. WYSIWYG方式と比べると,マークアップ方式はイマイチ面倒臭そうな文書作成方式に見える. WYSIWYG方式が入力すればすぐに完成形を見れるのに対し, マークアップ方式は入力と完成形のプレビューとの間に処理系による処理が入るため, 入力画面がそのまま完成形とはならず,自分の思い通りの文書ができているかを確認するためには いちいち入力画面から離れるを強いられる. ではなぜそのような面倒な方式が実用的なものとして受け入れられているのだろうか. 人間が作成するのは入力ファイルであるから,試しに入力ファイルがどのようなものかを見てみよう. 次のコードは$\TeX$を使用するときの入力ファイルの一例である.

\documentclass{ltjsarticle}
%
\usepackage{amsmath} % 数式用
\usepackage{mleftright} % カッコ
\usepackage{cleveref} % 相互参照
%
\newcommand{\paren}[1]{\mleft ( #1 \mright )} % 丸カッコ
\newcommand{\apply}[2]{#1 \paren{#2}} % 関数適用
\newcommand{\derivprime}[1]{#1 ^{\prime}}
\newcommand{\derivprimetwo}[1]{#1 ^{\prime \prime}}
%
\crefname{equation}{式}{式}
%
\begin{document}
%
\section{接線の方程式}
\label{sec:tangentline}

関数$\apply{f}{x}$が点$a$で微分可能であるとき,
その点における曲線$y = \apply{f}{x}$接線の方程式は\cref{eq:tangentline}のようになる.
\begin{equation}
  y = \apply{f}{a} + \apply{\derivprime{f}}{a} \paren{x - a} .
  \label{eq:tangentline}
\end{equation}
$x$が十分$a$に近いとき,曲線$y = \apply{f}{x}$とこの接線がほぼ一致するとみなせるので,
近似式
\begin{equation}
  \apply{f}{x} \approx \apply{f}{a} + \apply{\derivprime{f}}{a} \paren{x - a}
  \label{eq:approxequation1deg}
\end{equation}
を得る.

\cref{eq:approxequation1deg}は与えられた関数を1次式で近似するための式であるが,
2次式で近似したければ以下のようにすればよい.

\begin{equation}
  \apply{f}{x} \approx \apply{f}{a} + \apply{\derivprime{f}}{a} \paren{x - a} 
  + \frac{\apply{\derivprimetwo{f}}{a}}{2} \paren{x - a}^2.
  \label{eq:approxequation2deg}
\end{equation}

\end{document}