LaTeXでは、表を作ることが可能になっています。とりわけ、美しい数式(そこ まで大げさでない、累乗入りの数式とかも含む)の入った表が手早く 作れるというのは、 かなりの利点です。Excel でも数式エディタで作れはしますが、あくまでオブジェ クトとして扱うので、中央に自動的に寄せることは(おそらく)できず、少々不 便な扱いです。
たとえば、次の出力をご覧ください。
表を罫線なしで作り、化合物や数式を並べてみた例です。(各項目の間に、 見えない罫線が引かれているとお考えください。)Excel の場合、化合物の添え 字や数式の累乗を下付き文字として入力し、未知数は(邪道ながら)斜体にして、 各項目を中央寄せにして、[書式 (O)] -> [行 (R)] -> [自動調整 (A)] と [書式 (O)] -> [列 (C)] -> [選択範囲に合わせる (A)] で、やや項目 間の感覚が詰まっているものの、それなりに見やすい反応式になります。(下図 右側)しかし、 分数等が項目間に登場した場合、数式エディタを用いてオブジェクトとして貼り 付けることになりますが、Excelはそれをセルの項目として認識しませんので、 「手動調整」が必要になります。数式が出ただけで、他にも様々な問題が生じる ものと思います。(下図左側)
しかし、上のような問題点があるにもかかわらず、Excelを表作りの道具として活用 するのはかなりお薦めできます。まず、数式が表中に登場するのはそれほど多く はありません。 また、表を作る際には はExcelの強力な計算機能を利用したいと思うでしょう。第一、 TeXで表を作ると、DVIファイルを見るまでは結果がわかりにくいという欠点もあ りますし、(実際下の解説をもとに作ってみると分かりますが)TeXで複雑な表を作ると、何がな んだかわからなくなってしまうことがあります。(例:ここは何行何列目??) その際はExcelが1番良い選択肢となります。Excelで表を作り、ツールを用いてTeX 形式に変換してしまうのです。厄介な数式があっても、数式エディタを使わずに TeXのコード中で直接数式の命令を書いて表を直せば OKです。
また、Excelに限らず、作成している表を見ながら表を作りたい人のためのフ リーソフトもありますので、それがTeX出力に対応していれば、それを使うのが いいでしょう。
Excel2Tabularは、Excelの表をTeXのコードに変換してくれるとても便利なExcelアドイン(拡張機能)です。「パブリックベータ」扱いですが、後述するExcel2LaTeXよりも複雑な表を変換できるようです。
対応状況ですが、作者によれば、「系統的な動作確認は行っていない」そうです。ただ、Excel 2000(Windows XP 日本語版)には対応を確認しており、また、Excel 2002(Windows 2000)についても筆者自身の基本的な機能のみの確認ですが、表のLaTeXソースのクリップボードへのコピー以外は対応していました。WindowsXp SP2(US) + Office 2003(日本語フォントが使える環境)、Windows 98 SE + Excel 97 SR-2、Macintosh版 Excelには残念ながら対応していないようです。Office 2003については日本語版Windows上での動作報告が待たれるところです。
ダウンロードは、次のリンク先から行います。
Excel2Tabular Homeダウンロードしたファイルを解凍しておきます。(「解凍」の意味が分からない方は解凍ソフトについて紹介していますので、ご参照ください。)インストールはMicrosoft Excelを起動して行います。メニューバーより[ツール]→[アドイン]と選び、次のダイアログ(ウィンドウ)を出します。

Excel2TabularをExcelに見つけてもらい、インストールするために[参照]をクリックします。
先ほどダウンロードし、解凍しておいた「Excel2Tabular(英数字).xla」(「英数字」にはバージョン名など任意の英数字が入る)を選択して[OK]をクリックします。

先ほどのダイアログに戻りました。Excel2Tabularアドインを有効にします。「Excel2Tabular(英数字)」にチェックが付いていることを確認して[OK]をクリックします。

では、実際に動かしてみましょう。まず、たとえば下のような表を作っておきます。あまり複雑な表だと変換がうまくいかないことがありますが、下の表程度ですと大丈夫です。

表を選択した上で、メニューバーより[ツール]→[Excel2Tabular]と選びます。すると、次のダイアログが出てきます。表を既に選択していればそのまま[OK]をクリックします。

表を変換する際の設定などです。[キャプション]に表のタイトルを入れておきます。あとはお好みで設定してください。(ここではキャプション以外は記入していません。)終わったら[To Text File]をクリックします。

表を変換して出力したLaTeX文書ファイル保存先を聞かれますので、指定してください。

次のようなダイアログが表示されました。[OK]をクリックします。

multirowは角藤版pTeXであれば既に付属していますので、インストール作業は必要ありません。言われたとおりに表を出力したい文書のプリアンブル(\documentclassと\begin{document}の間)に
\usepackage{multirow}
と記入しておきましょう。
これで保存されました。保存したLaTeX文書ファイルを開き、すべての文字列をコピーして、本文中の貼り付けたい場所にそのままコピーします。

では、いつもどおりpLaTeX(とdvipdfmx)で処理してみましょう。次のように出力されればOKです。

Excel2LaTeX は、Excelの表をTeXのコードに変換してくれる、超優れ物の Excelのアドイン(拡張機能)です。Excel 95, Excel 97, Excel 2000に対応し ていますが、Excel 2002には未対応です。Excel 2002ユーザーは、前に紹介したExcel2Tabular を検討してみてください。
筆者は「制限事項」としていますが、Excelのセル幅はすべて無視してくれま す。つまり、表のセル幅の調整はすべてLaTeXに任せてくれるのです。 これでExcelで作っても、十分に美しい表が作れるでしょう。
ダウンロード先は、次のサイトです。
http://plaza19.mbn.or.jp/~Butcher_Bird/Mac/Excel2LaTeX/Excel2LaTeX.htmlこれを解凍(伸長、展開)します。インストール方法と使い方は、付属のマ ニュアルに書いてあります。必要十分な良いマニュアルですので、私が解説する 必要は全くないでしょう。
なお、○○形式から××形式に変換するソフトを探す際には「○○to××」 もしくは「○○2××」という名前で検索をかけてみると、見つかるかもしれま せん。「2」というのは、もちろん to と数字の 2 (two) をかけたものです。 (同様のソフトにWord2TeXがありますが、2万円くらいします。OpenOfficeの Writerからなら、Writer2LaTeXがありますが、英語のみ・・・残念。
Excelを持っていない方の中には、無料のオフィスソフトであるOpenOffice.orgの中の表計算ソフトCalcをお使いの方もいらっしゃるかもしれません。その方はCalc2LaTeXを試してみるといいでしょう。私自身は試していませんので、紹介のみにとどめます。
Excel を持っていない方(または Excel2LaTeXに対応したExcelを持っていない方)、 もしくはExcelみたく作成した表を見ながら編集したいという方におすすめです。 また、Excleの出力したCSV形式のファイルを編集、という手もありますので、 Excel 2002でCSV形式で保存した表をTeX形式で保存するための媒介役としても使 えます。
ダウンロードは以下のサイトから行います。
http://member.nifty.ne.jp/~masumoto/soft/index.htmlインストール方法は簡単です。「どこかの場所に置く」です。解凍した場所 にそのまま放置しておいてもいいでしょう。「マイ ドキュメント」の中に置い ておくのもいいと思います。(EasyTeXの時と同じですね。)というわけで、解 凍後、いきなりCSV Editorのアイコンをダブルクリックしていただいてかまいま せん。レジストリ(Windowsやソフトが種々の情報を記録しておくデータベース) には何も記録しませんので、アンインストールはゴミ箱にCSV Editorを捨てるだ けです。
さて、Excelとは若干使い方が異なりますので、どういうものなのか 見ていきましょう。
新規に表を開いたら、下図のように、作る予定の表の右下端をクリックして 選択し、青く反転されたのを確認してもう1度クリックします。 ○行×列の表になるというメッセージを確認して[はい (Y)]をクリックします。
では、「1年生と2年生14人に聞いた恋愛経験の有無」というテーマで表を作
成してみましょう。(データ部分は大嘘です。)そんな時、表の行の頭(1番上)
や列の頭(1番左)に表の項目名を書きたくなるでしょう。そのときは
の2つ(行ラベル、列ラベルのボタン)をクリックしま
す。既にセルが灰色になっているのであれば、それが解除されて灰色が消え、セ
ルへの書き込みが出来るようになります。書き込んだら解除していたラベルを元
に戻して灰色にします。そうすると、「印刷プレビュー」([ファイル (F)]
-> [印刷プレビュー (V)])してみるとわかりますが、その部分が太い罫線で
囲まれます。TeXの命令群にこの表を直した場合、このラベルは二重線で描くよう
な表の命令になっています。
あとはヘルプを参照しながらExcelみたくセルに文字を記入して 表を作り、TeX形式で保存する([ファイル (F)] -> [名前を付けて保存 (A)...] で出てくるウィンドウで、「ファイルの種類」を「TeXファイル (*.tex)」にし てファイル名を記入し、[保存 (S)]をクリック)だけです。
書き直したくなった ら、先ほど保存したときにCSVファイル(拡張子がないので分かりにくいかもし れないが)が出来ていますので、それをCSV Editorから開けばOKです。([ファ イル(F) -> [開く (O)] で出てきたウィンドウで、ファイ ルの種類を「全てのファイル(*.*)」にして開きます。)ラベルの 部分もきちんと保存されています。
TeX の命令群に変換された表(TeX形式で保存された表) は、そのままその命令群を TeXの文中の適当な場所にコピーするか、 次のように別ファイルから入力する命令を書く事で、文中でそのまま使います。 表をfoo.texという名前で(TeX形式で)保存したのであれば、
\input{foo.tex}
のように、\inputの命令で取り込むことが出来ます。
ちなみに、CSV Editor で作った表をCSV形式で保存し、メモ帳で開いてみて ください。
"","1年生","2年生"
"恋愛経験なし","3","2"
"付き合っている","4","4"
"失恋1回","4","2"
"失恋2回以上","3","6"
上のように、 コンマで区切られただけの、メモ帳でも読める形式ですね。セルが空白であれば、 ダブルクオーテーションの中も何も書かれていません。ラベルに関する命令は書 かれていないので、別のファイルかなんかに書き込まれていると思われます。 (ちなみにExcel のXLS形式は、メモ帳では読めません。試してみてください・・・。)ただ表の セルを埋め込んだだけの表であれば、ExcelにせよCSV Editorにせよ、作ったらCSV形式で保存しておくのが安全そうだと分かるでしょう。
上の2つは有効な方法ではありますが、必要に応じて、自動出力された表の TeXの命令を解釈して手で治す羽目になることがあるかもしれません。また、簡 単な表であれば、それほどTeXの命令を直接書いていっても、あまり困らないと 思います。そこで、ここではごく基本的な部分のみですが、表の作り方を 解説することにします。
表を作る際には、だいたい次のように書きます。数式の説明時にeqnarrayや 行列について説明しましたが、あの感覚を思い出してください。&は 「区切りの&」、cccといったものは中央揃え (Centerの略)なのでした。これだけでも、かなり分かってくると思います。な お、表の命令を使うための環境がtabular環境、表全体をcenter環境で中央寄せ にしています。さらに、ここでは詳しく説明しませんが、表を組版の都合で適切 な位置に移動させるのと、表見出し(\caption命令)や表参照(\label命令)など、 表に関する便利な命令が使えるようにするためのtable環境でも囲っています。
\begin{table}
\begin{center}
\begin{tabular}{|c||c|c|}
\hline
& 1年生 & 2年生\\
\hline\hline
恋愛経験なし & 3 & 2\\
\hline
付き合っている & 4 & 4\\
\hline
失恋1回 & 4 & 2\\
\hline
失恋2回以上 & 3 & 6\\
\hline
\end{tabular}
\end{center}
\end{table}
出力結果は次の通りです。
\hline で横の罫線、青文字の|c||c|c|の中央揃えの指定(c)の間にある|で縦線 を引いています。&は、やはり「区切りの&」 らしく、各項目間を区切ってくれています。次の行へは強制改行の命令 (\\のこと)で移動しています。なお、縦線も横線も、||と か\hline\hlineとかとすることで、二重に出来ています。
セルというのは、表の中の1項目をあらわ す最小単位です。罫線が引かれているなら、一番小さい四角の部分、と考えてお けばいいでしょう。
さて、表を作るときに隣り合ったセルをくっつけて、1つのセルにしたいと思 うときがあります。(Excel では「セルの結合」と呼んでいる機能です。)これ を、例えば下図のように横方向にセルを結合するには、どのようにすると良いのでしょうか。
Excel で作った上の図の表は、太陽系9惑星を2つに分類したものです。 「内惑星」と「外惑星」の部分が、いくつかのセルを結合して出来ています。
これを実現するには、\multicolumnという命令 を使います。たとえば、横方向に4つのセルを結合し、罫線も引いて中央寄せに したいという場合は、次のように使います。
\multicolumn{4}{|c|}{内惑星}
結合した場合、その分「区切りの&」も減らします。 いくつかのセルがくっついて1つになっているのですから、当然ですね。では、 先ほどの太陽系9惑星の表を作ってみましょう。
\begin{table}
\begin{center}
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
\hline
\multicolumn{4}{|c|}{内惑星} & \multicolumn{5}{|c|}{外惑星} \\
\hline
水星 & 金星 & 地球 & 火星 & 木星 & 土星 & 天王星 & 海王星 & 冥王星 \\
\hline
\end{tabular}
\end{center}
\end{table}
色付けしましたので、左の4つのセルと右の5つのセルがそれぞれ結合してい ることに気が付くと思います。その分、たしかに「区切りの &」も1つになって、1列あたりのセルの数が2つに減っていますね。では、出力 結果を示します。
次に、セルの結合とは少し違うかもしれませんが、横の罫線の一部を引かな いことで、縦方向のセルの枠が1つになるように見せかけてみます。
\begin{table}
\begin{center}
\begin{tabular}{|c||c|c|}
\hline
& 1年生 & 2年生\\
\cline{2-3}\cline{2-3}
恋愛経験なし & 3 & 2\\
\cline{2-3}
付き合っている & 4 & 4\\
\cline{2-3}
失恋1回 & 4 & 2\\
\cline{1-1}
失恋2回以上 & 3 & 6\\
\hline
\end{tabular}
\end{center}
\end{table}
\cline という命令は、「部 分的に罫線を引く」というものです。例えば、2列目から3列目に部分的 に罫線を引く際には、\cline{2-3}のように書きます。 1列目のみに引く場合も、「1列目から1列目まで引く」といった形、つまり \cline{1-1}のように書きます。
では、出力結果を見て見ましょう。
表としては、かなり見にくいものでありますが、あくまで「命令の使い方」 の説明ですので・・・。\cline 二重線は無理だったようです。
表を作る際に、罫線の太さを変えて、メリハリをつけたいと思うことがあり ます。これは、太線を作る命令を自分で定義した上でLaTeXに標準で含まれているarrayというパッケージを使うと、出来ます。
まず、arrayパッケージを、次のようにプリアンブルで読み込む必要があります。太い横罫線を引く\thlineと太い縦罫線を引く\tvlineをプリアンブ ルで定義して使っていくのです。 (普通の太さの\hlineにThick(太い)の頭文字をつけたものです 。なお、定義の意味を今知る必要はありませんので、機械的にコピーしてください。)
\usepackage{array}
\def\thline{\noalign{\hrule height 1pt}}
\def\tvline{\vrule width 1pt}
あとは、\hline の代わりに\thline, |や\vlineのかわりに\tvlineを使って いきます。ただし、"!{ }"という命令(コマ余白を変化させない) を使って、書いていく必要があります。これが、array.styの命令なのです。 縦罫線部は、次のように使います。
\begin{tabular}{!{\tvline}c!{\tvline}c!{\tvline}c!{\tvline}
"|"が!{\tvline}に置き換わっているだけです。これで縦罫線が太 くなります。(もちろん\multicolumnのなかでも、このように太い罫線を指定し ていきます。)あとは、\hlineを\thlineに置き換えるだけです。(なお、ここで は見栄えを考慮して、一部のみ太い罫線にしています。また、2つの結合された セル(\multicolumnのついたセル)で挟まれた部分は、片方のみ罫線を指定する ようにしないと、汚い出力になってしまいます。 (\multicolumn{5}{c!{\tvline}}のように、太い縦罫線を片側にしか引いていな いのです。この引かなかった左の部分は左の結合セル(\multicolumn{4})の右側で、既に引いています。
\begin{table}
\begin{center}
\begin{tabular}{!{\tvline}c|c|c|c!{\tvline}c|c|c|c|c!{\tvline}}
\thline
\multicolumn{4}{!{\tvline}c!{\tvline}}{内惑星} & \multicolumn{5}{c!{\tvline}}{外惑星} \\
\hline
水星 & 金星 & 地球 & 火星 & 木星 & 土星 & 天王星 & 海王星 & 冥王星 \\
\thline
\end{tabular}
\end{center}
\end{table}
出力をご覧ください。
(パッケージのインストールの必要があるので、やや発展的な事柄になります。 )
Microsoft Excel 等の表計算ソフトで作られる表は、表のセルの中身を色で 塗りつぶしたり、罫線に色を塗ったりと、なかなか派手な表が多いです。そういっ たものを見ていると、LaTeX でも色付きの表を作りたいと思うでしょう。
実際、PDF 等で文書を公開する際には、親しみやすいように、出来るだけ色 を使った文書を作りたいものです。
しかし、こうしたものを導入する場合、「パッケージ」と呼ばれるものをイ ンストールしてLaTeX の機能を拡張する必要があります。ここでは、colortbl (COLOR TaBLe の略か) というパッケージをインストールして、カラーで見栄え の良い表を作ってみることにします。
書籍では、「LaTeX グラフィックコンパニオン」に、美しい表と一緒に、詳 しい解説が載っていますので、買うか図書館で借りるなどしてそちらも参照してみてください。
CTAN (LaTeX 関連のソフト・パッケージ等がそろっているサイト)から、 carlisle パッケージをいただいてきます。例えば、次の場所からダウンロード してください。
ftp://ftp.dante.de/tex-archive/macros/latex/contrib/supported/carlisle.zipここで必要なものはcolortbl.insとcolortbl.dtxだけですので、他のものは インストールする必要はないかもしれません。ここまでの作業工程、及びインス トールに関しては、 LaTeXでいろいろやる前に --- パッケージの導入法 も参考になると思います。
まず、colortbl.ins をlatexコマンドで処理します。
MS-DOS プロンプトに不 慣れな初心者の方は、ddrp-platex(.exe)(ドラッ グ&ドロップ版TeX)をコピーし、 ddrp-latex(.exe)に名前を変えた上で、ddrp-latex(.exe) にcolortbl.ins をド ラッグ&ドロップします。(よくわからない方は、ddrp-platex の利用をご覧下さい。) MS-DOS プロンプト(コマンドプロンプト)に慣れている方は、cdコマンドを使っ てカレントディ レクトリ(現在いるディレクトリ)をcolortbl.insのある場所に移して、次を実 行します。
latex colortbl.ins
すると、LaTeX のログファイル(colortbl.log)と、お目当てのcolortbl.sty が出てきます。C:\usr\local\share\texmf\tex\latex の中にcolortblというフォ ルダでも作り、その中にコピーします。(texmf フォルダがC:\usr\local\share 以外にある場合(他の場所にインストールした場合)は texmfフォルダを探し、その右のパスを参考にしてインストールしてください。) あとは、MS-DOS プロンプト(コマンド プロンプト)か、[スタート] -> [ファイル名を指定して実行 (R)...] のいずれ かで、次のコマンドを実行します。
mktexlsr
あとは、colortbl.dtx をLaTeX で(colortbl.ins と同様に)処理してくださ い。こちらはDVIファイルのマニュアルを生成します。こちらは特にインストー ルする必要はありません。(整理したい場合は、 C:\usr\local\share\texmf\doc などにフォルダを作って入れておくといいでしょ う。)
以上で、インストールが終わりました。
では、さっそく表に色を塗ってみます。次の例は、真ん中の列全体を、緑色 で塗ったものです。
\documentclass[12pt]{jarticle}
\usepackage{colortbl}
\begin{document}
\begin{table}
\begin{center}
\begin{tabular}{|c||>{\columncolor[named]{Green}}c|c|}
\hline
& 1年生 & 2年生\\
\hline\hline
恋愛経験なし & 3 & 2\\
\hline
付き合っている & 4 & 4\\
\hline
失恋1回 & 4 & 2\\
\hline
失恋2回以上 & 3 & 6\\
\hline
\end{tabular}
\end{center}
\end{table}
\end{document}
まず、表の中に色を塗る際には、必ずプリアンブルに\usepackage{colortbl}と書き、先ほどインストールし たばかりのcolortblパッケージを読み込みます。
次に、列の位置揃えを決める文字(cなどの文字)の前で、>{\columncolor[named]{Green}}と書いて、色を指定し ます。この場合は、色はGreenにしてありますが、もちろんこれをBlue等にすれ ば、青などで塗られることになります。(colortblパッケージが colorパッケージも読み込んでいるため、\textcolorを使った時と同じ指定方法 であることに気づかれるかもしれませんね。)
では、出力結果を見てみましょう。二重線の部分が、やや思わしい結果ではないよう です。ここは、二重線を使わないなど、色々工夫していきます。
さて、今度は、特定の列および特定のセルに色を塗る方法を見ていきます。 次のソースをご覧下さい。
\documentclass[12pt]{jarticle}
\usepackage{colortbl}
% 次の行は、特定のセルに色を塗るときだけ書きます。\cellcolor命令を定義し ます。
\newcommand{\cellcolor}[3]{\multicolumn{1}
{|>{\columncolor[named]{#1}}#2}{#3}}
\begin{document}
\begin{document}
\begin{table}
\begin{center}
\begin{tabular}{|c||c|c|}
\hline
& 1年生 & 2年生\\
\hline\hline
恋愛経験なし & 3 & 2\\
\hline
\rowcolor[named]{Magenta} 付き合っている & 4 & 4\\
\hline
失恋1回 & 4 & 2\\
\hline
失恋2回以上 & 3 & \cellcolor{Blue}{c}{6}\\
\hline
\end{tabular}
\end{center}
\end{table}
\end{document}
色を塗りたい行の内容を書く前に、\rowcolor という命令で色を指定します。(上の例ではMagentaという色を指定していま す。)
一方、色を塗りたいセルがある場合には、上のようにプリアンブルに
\newcommand{\cellcolor}[3]{\multicolumn{1} {|>{\columncolor[named]{#1}}#2}{#3}}
と書いた上で、セルの部分で
\cellcolor{色名}{表中の文字の位置指定}{セルの中身}
という文法で書きます。
出力は下のようになります。
最後に、罫線に色をつけてしまいましょう。また、二重罫線の間にも、似た ような命令の使い方で、色で塗りつぶしてしまいます。(これで、先ほどから気 になっていた二重罫線の間に色が塗られない問題が解決します。)次をご覧下さい。
\documentclass[12pt]{jarticle}
\usepackage{colortbl}
\begin{document}
\begin{table}
\begin{center}
% 罫線に色を塗ります!
\arrayrulecolor[named]{Blue}
% 二重罫線の間にも色を塗ってしまいます!
\doublerulesepcolor[named]{Red}
\begin{tabular}{|c||c|c|}
\hline
& 1年生 & 2年生\\
\hline\hline
恋愛経験なし & 3 & 2\\
\hline
付き合っている & 4 & 4\\
\hline
\arrayrulecolor[named]{Black}
失恋1回 & 4 & 2\\
\hline
失恋2回以上 & 3 & 6\\
\hline
\end{tabular}
\end{center}
\end{table}
\end{document}
\arrayrulecolor で、この命令より下の部分の罫線の色を指定します。こう すると、すべての罫線において、その色で引かれます。(上の例では、2つ目の \arrayrulecolorまでは「青 (Blue)」、それより下 は「黒 (Black)」 となります。)
また、 \doublerulesepcolorで、二重罫線の間の色を決めます。(上の例では Redです。)
では、出力例をご覧ください。
色の調和を度外視して書きましたので、少々汚いですが、一応わかりやすい 例としてお考え下さい。
前へ 次へ 目次に戻る