ill-identified diary

所属組織の見解などとは一切関係なく小難しい話しかしません

結局のところ, TeX (+ LyX) と Word のどちらが文書作成しやすいのか

この記事は最終更新日から3年以上が経過しています

概要

MS Office Word (以下, Word) と TeX はいずれも文書作成で使われるが, 結局の所どちらが使いやすいのか. ここでは論文・レポート作成を例にして検討してみる.

Word と TeX の比較に言及するページはかなり多く存在するが, 内容が断片的だったり大雑把で具体的な違いに言及していなかったりするものばかりである. そこで, 具体的な状況を想定して, TeX を使用する場合と Word を使用する場合の機能の違いを比較してみることにする. そのため今回は他のページからの情報の切り貼りが多くなってしまうが容赦してほしい.

あと自分は TeX 贔屓であるので, なるべく中立的にレビューしているつもりでも無意識に TeX に有利になるような書き方をしている可能性があることに留意して欲しい.

2020/8/18 追記: Rmarkdown で日本語対応の Beamer スライド (TeX 用のスライドフォーマット) を作成するパッケージを作った.

ill-identified.hatenablog.com


最近はR Markdown や jupyter や pandoc など, LaTeX 以外の言語で書いたテキストをバックグランドで LaTeX を走らせて変換することで, ユーザーが LaTeX の挙動を気にせず文書を作成できるソフトが増えている. よって LaTeX と Word を単純に比較対比する考え方も時代遅れになりつつあるのかもしれない.

追記以上.

評価の観点

作成する文書は日本語の学術論文の体裁で, 通常の文章に加え,

  1. 数式

  2. プログラムのソースコード

  3. 参考文献のリスト

を作成できるかどうかが重要となる*1. ファイル形式は pdf とする. なお, 文書作成ではなくスライド作成をする際の TeX 活用に関しては, 過去にこういうものを書いた.

ill-identified.hatenablog.com

さらに前提として, Word と TeX の環境は以下のようにする.

  • Word 2013 (ただし, 2016 版でアップデートされた機能の情報があれば適宜補足する.)

  • TeX は XeLaTeX + pBiBTeX*2でpdf を生成する*3. これらは TeX Live と Win32TeX いずれでもインストールできる. さらに, .tex ファイルはテキストファイルだが, テキストエディタWYSIWYG な Word とでは比べようがないため, LyX | LyX – 文書プロセッサ で公開されている LyX を利用する.

LyX は WYSIWYG ではないが, WYSIWYM であるため, 文書のレイアウトをある程度意識しながら編集することが可能である. LyX の導入は LyX - TeX Wiki や公式ページ, あるいは以前書いた 経済学系のレポート・論文を XeLaTeX で書く際の Tips - ill-identified diary を参考にして欲しい.

これらは Windows でも Linux 系でも利用できる. LyX の使い方と, 上記の環境で実施する方法*4については以前書いた記事などを参照してほしい. 以降, LyX を使って TeX を編集することを前提として書くため, 単に LyX と言ったら上記のプログラムのインストールと設定を含めた環境のことを指す. LyX の簡単な解説は,やはり以前書いた 経済学系のレポート・論文を XeLaTeX で書く際の Tips - ill-identified diaryTeX Wiki の該当項目LyX - TeX Wiki 参照してほしい.

エディタテキストエディタ方式の TeX エディタをどうしても使いたい場合の参考に書いておく. そういう場合は TexStudio または TeXmaker などがオススメである*5. Vim, Emacs, Eclipse などのプログラミングに向いたテキストエディタにもそれぞれプラグインが存在する. TeX Live や Win32TeX に同梱されている TeX Works はシンプルすぎるため, 以降で紹介するような利便性の恩恵を得られない. また, 年季の入ったユーザは winshell を使っているかもしれないが, utf-8 エンコードのテキストを扱えないという問題を抱えた古いソフトウェアなので, この記事を読んだ機会に別のソフトに乗り換えてほしい.

比較

平文のレイアウト

とうぜんながら Word も LyX もワードプロセッサなので文を表示できるはずである. しかし, Word は米国のマイクロソフト社の製品だからか, 和文には合わないレイアウトがデフォルトとなっている. たとえば標準のアラインメントは中央揃えになっている. これは欧文では問題ないが, 和文では左揃えがふさわしい. 段落冒頭の一字下げも設定されていない. これらはスタイルの設定を変更すれば文書全体を一括で変更できる. 一方, LyX では文書のレイアウトは予め用意されたレイアウトファイルの選択で決めることができる. レイアウトファイル段落の設定や余白の大きさ, 見出しと本文の文字サイズ, 禁則処理などがプログラムされており, 論文のレイアウト, レポートのレイアウト, 書籍のレイアウトなど様々なものがある. よって, LyX は一旦レイアウトを決定してしまえば, レイアウトを意識せずに文書を作成できる*6.

以上から、平文に関しては両者に使い勝手の差はない. ただし, Word に関して不満を言うなら, ページの末尾に見出しが来てしまうことがある, ということである. 見出しだけを末尾に表示し, 本文は次のページから, というのは見栄えがよくない. これは見出しの段落スタイルの「次の段落と分離しない」チェックを入れることで回避できるが, こういう当たり前な設定をデフォルトにしてくれないところに Word の雑さを感じる.

数式

Word でも LyX でも数式を書くことができる上, 両者の構文はよく似ている. 数学記号を書くには 両者とも \alpha \int のようにバックスラッシュを先頭に付ける. 記号の名称も共通するものが多い. LyX にはよく使われる数学記号の予測補完機能がある*7うえ, ほとんどの操作にはショートカットキーが割り当てられている. また, Word, LyX どちらも GUI で入力することも可能である. 例えば, ジョルダン標準形を LyX と Word で作成した場合は次のようになる*8.

  • LyX
    \begin{align}
\mathbf{P}\mathbf{A}\mathbf{P}^{-1}:= & \begin{bmatrix}\begin{bmatrix}\lambda_{1} & 1 &  & \mathbf{O}\\
 & \ddots & \ddots\\
 &  & \lambda_{1} & 1\\
\mathbf{O} &  &  & \lambda_{1}
\end{bmatrix} &  & \mathbf{O}\\
 & \ddots\\
\mathbf{O} &  & \mathbf{J}_{n_{k}}(\lambda_{n})
\end{bmatrix}\label{eq:Jordan}\tag{1}\end{align}

    なお, 私は行列の括弧をブラケットで書く*9が, パーレンにすることも可能である.

  • Word
    f:id:ill-identified:20170502231522p:plain

Word の数式モードは一見するとどのようにして必要な記号を表示できるのかわかりにくいが, 行形式による数式の挿入 で様々な数式記号の出力が紹介されている*10. この記事は Word 2010に準拠しているが, Word 2013でも同様のことが可能である.

細かい違いを挙げると, Word ではスクリプト\mathscr{ABC}... が出力できない. これはそもそも手書きの筆記体を活字に持ち込んだものなので, カリグラフ体( TeX なら \mathcal{}, Word ならば \script)に統一すべきという向きもある*11ので, あまり問題ではないだろう. 数年前は Word の数式モードのタイポグラフィの評判は良くなかったし, 今でも数式のフォントが気に入らないが変更できないとか, 括弧の大きさを調整できないとか, そういう好みの問題はあるだろうが, 新しいバージョンではWord の数式モードは TeX とほとんど遜色ないレベルに近づいているといえる*12.

LyX に対して Word の数式モードの欠点を上げるなら, 性能の低いマシンでは動作がだいぶ緩慢になる傾向になり, 数式が増えるとクラッシュしやすくなる点*13と, 括弧を挿入すると自動的にカーソルが右端に移動するため, 括弧内に入力するには戻らなければならない, 下付き文字を一旦入力すると,本体の記号も消さないと削除できない, "\" を頭につける記号と付けない記号があり, 記法の一覧表なども存在しない, など手動入力の操作方法が不親切という点がある. さらに, 一番問題となるのは数式の付番であろう. LyX では数式ごとの付番はもちろん, 数字以外の記号で付番したり, オプション1つで番号を通し番号にしたり, 章ごとに番号を振り直したりできる. Word の数式モード自体には式に付番するという機能がなく*14, Word 2013ではテキストボックスなどを使うことでしか数式に付番できるないようだ. よって, 図表番号が割り当てられないため, 文中に数式に言及するときに相互参照を使えず, 番号の管理に注意が必要である.

Word は様々な図形の描画や, png, jpg などのラスタ形式*15の画像のみ貼ることができる*16. いちおう, pdf に関しては Wordで開くことで画像を取り出せる場合があるが, Word で pdf 画像を読み込む際にビットマップ画像に強制変換されるので, 画像によっては解像度が不自然になるので注意が必要である*17.

2020/11/29 追記: 2017年ごろのアップデートで, SVG 形式の画像はラスタ変換せずに貼り付けられるようだ. Rで作成したグラフをベクタ画像でパワーポイントに貼り付ける方法について『おまえはもうRのグラフの日本語表示に悩まない (各OS対応) - ill-identified diary』にも書いておいた

一方, LyX は eps, svg, pdf といったベクタ形式の画像にも対応している. もちろん jpg, png など広く普及しているラスタ形式の画像ファイルにも対応している. しかし, LyX 単体では図を作成することが難しい*18. Inkscape のような外部のドローイングツールや, matlab, R (ggplot2) などデータをグラフで表現することができるソフトを併用する必要がある.

Word はドラッグで画像サイズを変更できるが, LyX はドラッグで変更できず, 数値で設定するしかない*19. よって, pdf を出力するまで結果はわからないが, 多くの場合は縦横比を維持して画像の幅を本文幅の50~70%程度に設定すれば手頃な大きさとなる.

ところで, レポートや論文では図に番号とタイトルを, 場合によってはキャプションも, 表記し, 本文では図1, 図2-B, ...というふうに記号で言及するのがよくある作法である. Word, LyX ともにそのような機能が存在する. Word ならリボンの「参考資料」から「図表番号の挿入」を選ぶことで作成できる*20. 本文中で言及するには「相互参照」を使う. LyX ならば「フロート」を挿入することで図表を囲んだまとまりを作り, そこに番号とタイトルを振ることができる. よって, LyX は複数の図表の組み合わせをひとまとまりの図表としてキャプションを与えるという変則的なレイアウトもかんたんに可能である. 実際の操作は若干違うものの, 「図1」ではなく「figure 1」 にしたり, 番号を単純な連番ではなく章ごとに振り直すなどのオプションも, 両者ともに可能である.

その他, 両者の違いとして, デフォルトでは, LyX は大きな空白が発生しないよう図表の位置を文の区切りのよいところへ自動調整するが, 挿入した位置に固定するオプションも存在する. 一方で Word は図表は原則として挿入した場所に固定される. また, Word

では図表番号を与えればすぐに相互参照できるのに対し, LyX ではキャプションの位置にラベル (画像の灰色) を与える必要があるので, この違いには注意が必要である.


f:id:ill-identified:20170502231426p:plain

LyX での画像挿入

「図」のセクションで説明した番号と相互参照の機能の多くは表に関しても当てはまる. 表は両者ともに GUI で挿入可能である. しかし, LyX は機能が少なく, 列幅の調整すら数値の入力によってしかできない. 体裁にこだわるなら TeX コードを直接書く必要がある. tex の表の体裁については, 過去に書いたものSTATA の結果を LaTeX 形式でエクスポートする方法 - ill-identified diaryが参考になると思う. ただしこれは STATA との連携方法をテーマに書いたので, パッケージの使用方法の詳細については個別に調べてほしい.

よって, 直感的な使いやすさでは, Word の作表機能が LyX を上回っているといえる. ただし, Word の表番号は, ページをまたぐ場合にしばしば本体と分離してしまい意味を成さなくなる. そもそも表がページをまたぐこと自体好ましくないので, 「段落」設定で「行の途中で改ページする」のチェックを外したりするなどして勝手なページまたぎを防ぐ必要がある. また, 表もデフォルトではページをまたぐので, やはり段落設定が必要である(こういった設定をデフォルトでやってくれないのが, Word の不親切さである).

プログラムのソースコード

プログラムを掲載する場合は, 通常の文とは違う体裁にしたいということはよくある. 具体的には, ソースコードの読みやすさのために等幅のタイプライタ風フォントにしたい, 行番号を追加したい, 背景色を変えたい, などである.

LyX の場合はプリアンブルに listings パッケージの設定を書いておけば, 本文で「プログラムリスト」を挿入し, その枠内にソースを書くだけでプログラム用の体裁に修正できる. http://www.biwako.shiga-u.ac.jp/sensei/kumazawa/tex/listings.html を参考に設定すれば良いだろう. メジャーなプログラム言語ならある程度のシンタックスハイライトもしてくれる.

一方で Word にはこのようなソースコード表示機能はない. プログラム用のスタイルを作成し, フォントや段落番号を設定すれば擬似的に再現することはできるが, 段落を下げてしまうためタブを使うことができなくなる. シンタックスハイライト機能については, Word 単体ではできないが, 裏技的な方法として, Visual StudioEclipse など, ソースコードをリッチテキスト形式でコピーできるものから, スタイルもろともコピーペーストしてしまうという手がある(参考: How do you display code snippets in MS Word preserving format and syntax highlighting? - Stack Overflow). または, テキストボックスに放り込んでしまうという手もある.

さらに, Word はプログラム用のオブジェクトが用意されていないため, キャプション番号を付ける機能もない. それゆえ, キャプションも文中の相互参照もすべて手動となる.

よって, ソースコードの掲載の手軽さに関しては圧倒的に LyX が上回っている.

参考に, LyX で作成したソースコードの掲載と, それに必要な LyX プリアンブル設定のコードを以下に掲載する.


f:id:ill-identified:20170502232106p:plain

\usepackage{listings}

\lstset{ %algorithm form
language=R,% プログラミング言語
numbers=left,% 行番号の位置
numberstyle=\scriptsize,%
stepnumber=1,%
columns=[l]{fullflexible},%
basicstyle=\ttfamily,%
breaklines=true,%
identifierstyle={\small},%
commentstyle={\small\itshape},%
keywordstyle={\small\bfseries},%
ndkeywordstyle={\small},%
stringstyle={\small\ttfamily},%
%% set left number frame
frame=single,%
backgroundcolor=\color[rgb]{0.9,0.9,0.9},%
%fillcolor=\color{mygray},%
rulecolor=\color{myblue},%
framesep=2ex,%
framexleftmargin=2.5mm,%
%% set color style
numberstyle=\tiny\color{mygray2},%
commentstyle=\color{mygreen},%
keywordstyle=\color{blue},%
stringstyle=\color{mymauve},%
rulecolor=\color{black},%
showspaces=true,% 連続スペースをそのまま表示する
showstringspaces=false % スペースの存在を記号で表す
}

参考文献リスト

LyX では参考文献リストを upBiBTeX の体裁にしたがって作成した bib ファイルを用意し, 文中で相互参照したり文末に参考文献リストを追加したりできる. Word も参考文献リストを xml 形式で管理し, 相互参照や文献リストを作成するため, 仕組みは似ている. pBiBTeX の記法は独特だが, Google Scholar や CiNii は bib ファイルをエクスポートできるほか, 文献管理ソフトの Mendeley のエクスポート機能も BiBTeX の形式を利用できる*21. 引用スタイルは, 多くの分野では [1] [2] のような通し番号か, ‘"Knuth (1997)‘" のような著者-出版年の形式なので LyX も Word もあまり違いはない.

両者の参考文献参照管理機能の違いは利用可能な参考文献リストのスタイルの豊富さの違いである. TeXIEEE のようなメジャーなものをはじめ様々な分野の学術論文誌のフォーマットに準じたスタイルを利用できる. もちろん個人で作成したスタイルも利用できる. たとえば経済学の論文では jecon.bst: 経済学用BibTeXスタイルファイル で jecon.bst というスタイルファイルが公開されている. これは英文文献と日本語文献で異なる体裁で出力できるという特徴がある.

一方で, Word はいくつか種類があるものの, 利用可能なスタイルは限定的である.
2020/2/22追記: Wordでの文献リストの体裁はcsl(Citation Style Language)と呼ばれるフォーマットで記述されたxmlファイルで制御される. cslは, MendeleyやZoteroもサポートしている形式である. これを自分で作成すればある程度自由に体裁を調整できるが, 機能はそこまで多彩ではない. 特に欧文と和文の両方を引用したい場合, 和文の表記に対応している既存のcslファイルは皆無である. 詳しくは以下の『Mendeley CSL Editor 利用ガイド』が参考になる.

https://www.elsevier.com/__data/assets/pdf_file/0009/794700/mendeley_csl_editor_user_guide.pdf

そのため, Word では参考文献のフォーマットをすべて手動で調整する必要がでてくることがある. 文献タイトルはイタリック, 同一著者名の場合はハイフンで省略, 著者が多数の場合は et al. と書く, などを手動で修正するのははっきり言って面倒すぎるが, これも Mendeley のエクスポート機能で ‘"Formatted citation‘" を選べばある程度は簡単になる*22.

その他, 参考文献リストとは少し違うが, Word, LyX ともに索引リストの作成が可能である. 博士論文などの大著では必要だろうか?

総論

以上から, Word で論文・レポートを書く場合, 参考文献リストの作成やプログラムのソースコード掲載など特定の場面で煩雑な作業がある一方で, TeX + LyX ではいくつかの設定さえしてしまえば参考文献リストの自動作成や相互参照, ソースコードの掲載などを, フォーマット・レイアウトと分けて作成することができる. 特に LyX の参考文献や相互参照の機能については, Word に比べて便利である. しかし, LyX は冒頭に書いたように導入の手順が煩雑で, こういうことに詳しくない人間は苦戦すると思われる.

フォーマットに細かい規則があるなら, TeX + LyX を選んだほうがいいだろう*23. 逆に体裁に制約がなく, あまりこだわらないなら, Word のほうが手軽に書けるだろう. 見も蓋もないことを言えば, どちらか一方しか使えないような環境もありうるので, 両方使いこなせればよいのだが. あとは, 逆説的だが, LyX は GUI で直感的なレイアウトを変更することができないので, 無計画に作業した結果, レイアウトが統一されていない資料を作ってしまうということが起こりにくい, という利点があるかもしれない.

最後に, pdf 出力についてだが, Word はなぜか一部のフォントが埋め込まれないことがある*24. 論文やレポートでは変わったフォントを使わないので Windows どうしでやり取りする場合は気にならないが, フォント埋め込みなしでは MacLinux ではレイアウトが崩れたり表示されなくなることがあることに注意してほしい.

*1:TeX には様々なジャンルの文書を作成する機能があり, 化学式や楽譜, 点字, 果てはクロスワードパズルを生成するパッケージも存在するが, 自分は使ったことがないので今回は触れない.

*2:pBiBTeX は BiBTeXを日本語対応化したもの.

*3:これは私が普段利用している環境だというだけである. pLaTeX や LuaTeX などを利用しても以降の内容は大筋では変わらないはずである.

*4:論文なので bxjsarticle スタイルを利用することになるが, これは LyX のレイアウトファイルを新たに作成する必要がある.

*5:これは Windows でも Linux でも使える

*6:自分で調整することも可能だが, TeX の構文を覚える必要があるので, 余白の変更など簡単な変更以外は極力避けたほうがよい.

*7:amsmath などで利用できる記号対象となる.

*8:なお, このはてなブログの数式は MathJax という TeX を元にしたプログラムによって出力されているため, Word数式のみ画像で提供する.

*9:パーレンの場合, 複数の行列を並べると間延びして見栄えが悪くなるため

*10:ここを見るまで上下装飾やカリグラフ体を出力できることを知らなかった……

*11:が, 私の体感ではスクリプト体もカリグラフ体も教科書に混在している.

*12:参考として言及すると, 現時点では Google Document の数式はまだまだ機能が限られており, 見栄えもあまりよろしくない. それこそ一昔前の Word のように.

*13:ただし, タブレットPCと大差ない性能のマシンだと両者は同じくらい緩慢になる.

*14:「図表番号の挿入」には「数式」という項目があるが, これは数式のある行の右または左端に付番するものではない. この形式にこだわらないなら図表番号の挿入を利用しても問題ない.

*15:いわゆるビットマップ. 点の色情報で画像を描画するタイプのファイル

*16:pdf, svg は 2016 以降で正式サポートという.

*17:他にもベクタ画像を Word に取り込む方法はあるが, ベクタ形式として取り込む方法が存在するかどうかについてはは調査できていない.

*18: TeX プログラムを直接入力して図形を記述できるが, 手間がかかり過ぎるので実用的ではない.

*19:word にも同様の機能がある.

*20:ただし図表番号がなぜかデフォルトで中央揃えでなく左揃えなので不親切である.

*21:特に Mendeley は arXiv ID や DOI を入力すれば文献情報を取得できるという便利さがある.

*22:個人的な疑問: 経済学系の体裁もないのだが, 経済学の研究者で Word で論文を書いている方はすべて手書きか, Mendeley のエクスポートを利用しているのだろうか?

*23:ただし, あまりに細かい調整には TeX の機能をよく理解する必要がある.

*24:デフォルトではシステムフォントを埋め込まない設定になっているが, これを変更しても埋め込まれないことがある.