論文作成システムの提案

名前:小林 大輔

学生番号:HT12A038

日付:2024-11-24

指導教員:兼宗 進

年度:2014

所属:総合情報学部 メディアコンピュータシステム学科

論文執筆等の文章作成を行う時に使用するソフトの一つに、LaTeXがある。このソフトは、各自が様々なエディタを用いてLaTeX命令や文章を書き、LaTeXを実行してPDFファイルを得るという方法である。
しかし、LaTeX初学者にとってLaTeXの命令等を、参考書やWebサイト等で調べながら、文章やPDFファイルを作成するのは、文章作成自体に集中できず、文章作成以外に労力を取られてしまう。
そこで今回、論文作成時に必要である命令を直感的に記述するための提案を行った。提案を実現する為にPukiwikiを用いた。Pukiwikiとは、Web上で命令や文章を入力し、プレビューボタンを押すだけで出力結果を見ることが可能である。命令も直感的に記述することが出来る為、本研究ではPukiwikiを用いた。
PukiwikiとLaTeX命令の対照表を作成し、その表を元にperlプログラムを作成した。その際、Pukiwikiで対照できない命令が存在した為、自身で考え対応させた。対応時にはプレビューした際に、PDFにした時のイメージが掴めるように行った。
結果、プレビューボタンで完成時のイメージが掴める様になり、文章作成への集中が向上したのではないかと考える。

論文作成 LaTeX Pukiwiki

~はじめに

文章を作成するための言語には、「視覚マークアップ言語」や「手続きマークアップ言語」がある。 上記の言語を用いたソフトには「Microsoft Word」や「Open Office Writer」や「LaTeX」などがあるが、論文作成には主に「LaTeX」というソフトを用いることが多い。

LaTeXは、各自様々なエディタにLaTeXの命令や本文を記述し、コマンドプロンプトなどを用いてコンパイルし、PDFファイルを得る事が可能。数式を扱うのに長けており、複雑な数式を美しく記述可能であるのが特徴である。そのため、理系の文章作成において重宝されている。

本学科の卒業論文作成にもこのLaTeXを使用している。しかし、LaTeXの命令には複雑なものが多く、初学者が扱う際にはLaTeXの命令を参考書やインターネットなどで調べながら、文章を書かなければならない。文章の内容を考え、何十ページも記述しなければならない卒業論文の際に、命令についての調べ作業をしてしまうと、文章作成のみに集中できないのではないかと考えた。

そこで今回、事項が直感的に記述可能で、プレビューボタンを押すだけで出力結果が見れる、Pukiwikiに着目した。

本研究では論文作成において必要であるLaTeXの命令と、Pukiwikiの事項を対応させることで、ユーザへの入力負担を軽減できるのではないかと考え、Pukiwiki記法をTeX形式の命令へ変換するプログラムを作成した。

~様々な文章作成ソフト

現在、文章作成ソフトには「Microsoft Word」、「Open Office Writer」、「LaTeX」等があり、それぞれのソフトが一長一短である。

入力した内容、画面に出力されている内容と、印刷した時の出力が一致する。数式が綺麗に出力できる。文章作成時に、レイアウトに気を遣ったり、命令を調べながらでないと文章を作成できない、等の特徴がある。

視覚マークアップ言語

例えば、テキストファイルの文書のタイトルの前にいくつか改行やスペースを入れることで、行送りの調整や中央寄せを暗示させている。

図や表を入れ替えた際に、番号を振り直す必要が生じることや、全体的に構成を変更した際に目次も変更しなければならない等、課題がある。

これらの作業は、ユーザが入力した内容、つまり画面に出力される内容が印刷などの出力と一致するという利点がある。これはユーザにとってわかりやすい仕様であるが、ユーザーがすべてのレイアウト作業を行わなければいけない為、執筆以外にも労力が必要となる。

Microsoft Word

word1.png
(Microsoft Word,【word】)

Open Office Writer

writer1.png
(Open Office Writer,【word】)

手続きマークアップ言語

書式を整えるために、書式指定の命令を文章の直前に並べ、中央揃えモードに移る、書体 を大きくさせる、などの指示を出す。文章の後には、それらの効果を打ち消す命令が並ぶ、という言語である。出力した際には非常に整っていて見やすい。しかし、命令が複雑な為、記述は容易ではない。

LaTeX

Wiki2LaTeXフィルターの開発

吉井了平(関西学院大学)

LaTeXで文章作成する際に必要で、頻出する命令を、PHP言語で動作するWikiの一種である、Pukiwikiの記法と、その他に自身で設定した記号に置き換えることにより、LaTeX命令の入力作業の軽減を実現している(図【【wiki2tex】】)。

PukiWiki記法をTeX命令へ変換するために既存のフィルターである「pukipa.rb」を改良している。「pukipa.rb」はPukiwikiの独自文法を、HTMLに変換するプログラムである。HTMLに出力する部分をそれぞれに対応するLaTeX命令へ変更している。

この研究では頻出する命令のみに対応している。しかし、表や図など対応していない命令がある。

wiki2tex2.png
(先行研究での執筆方法の比較,【wiki2tex】)

~本学の論文執筆方法

本学の卒業論文の執筆方法は、各自様々なエディタを用いて、LaTeXの命令や本文を記述し、コマンドプロンプトなどを用いてコンパイルし、PDFファイルを得るという方法である。

一般的な論文を作成する際には以下の事項が必要である。

下記は本学の卒業論文に必要である事項である。

上記のLaTeXの命令には複雑なものが多く、初学者が扱う際にはLaTeXの命令を参考書やインターネットなどで調べながら、本文を書かなければならない。そのため、文章作成のみに集中できないのではないかと考える。

そこで、Pukiwiki記法でLaTeXのように文章作成をすることが出来ないか、と考えた。

先行研究では、Pukiwiki記法をTeX命令に変換し、入力作業の軽減を実現しているが、図や表などの事項には未対応である。

本研究では、Pukiwikiで作成した文章を変換し、拡張子を変更、その後コンパイルするだけで、PDFファイルにできることを目標にした。

Pukiwikiを使用する利点としては、命令を直感的に記述することが可能、プレビューボタンを押すだけで出力結果が見れる点がある。

今回はPukiwiki上で作成した文章をTeX命令へ変換するプログラムを作成した。 従来のLaTeXでの論文作成方法(図【【tex】】)と、今回提案するPukiwik記法での論文作成方法(図【【wiki2】】と図【【wiki1】】)をそれぞれ示す。

tex.png
(LaTeX記法,【tex】)
wikiwiki2.png
(提案する手法(編集画面),【wiki2】)
wiki2.png
(提案する手法(プレビュー画面),【wiki1】)

~研究内容

動作方法

  1. Webブラウザ上でPukiWikiを用いてプレビューを行いながら文章を記述する
  2. 文章をテキストエディタへコピー&ペーストする
  3. Pukiwiki記法で作成された文章を、今回作成したプログラムにかける
  4. 出力された文章ファイルの拡張子を(.tex)へ変更する
  5. ターミナルなどを用いてコンパイルしPDFファイルにする

上記の流れを図に示したものが図【【activity】】である。

activity.png
(動作方法,【activity】)

対応の仕方

今回Pukiwikiを扱う利点としては、命令が直感的に記述することが出来る、プレビューボタンを押すだけで出力結果が見れる、という点である。しかし、PukiwikiとLaTeXではそれぞれ利用目的が違うため、必ず事項が対応するとは限らない。今回はそれぞれの事項の対応から行った。

まず、LaTeX で文章作成を行う際に頻出する項目をリストアップしPukiwikiとの対応表を作成した。 一部を、図【【lists】】に示す。

list.png
(対応表,【lists】)

LaTeXに存在し、Pukiwikiに存在しない事項については、命令同士の意味が異なる場合でも対応させている。Pukiwikiでのプレビュー時に、文章やレイアウトを見ることでPDFをイメージ出来るように対応している。

章立て

LaTeX には「章立て(\chapter)」や「見出し(\section)」という命令がある。しかし、Pukiwiki記法には「章立て」はなく「見出し(*)」しかない。Pukiwiki上では「*」を使用しなければプレビュー時に目次に表示されない為、見出しと章立てを「*」を用いた記述方法にした。しかし、Pukiwiki記法では「***(LaTeXでいう\subsubsection)」までしか対応されていない。そのため、文頭に「*~」と記述すると「章立て」とし、「見出し(*)」部分と区別するようにした(図【【chapsec】】参照)。

chapsec.png
(編集画面とプレビュー,【chapsec】)

ラベル・参照

Pukiwkiには文章や画像・表などにラベルを付け、参照するという記述法はなく、それぞれにアンカーやリンクを付けるといった事項しかない。 対応する事項がない場合は難しく、Pukiwikiのページ上・文章中に存在しても違和感がなく、かつ、文章作成中に使用しない記号を使用する必要があった。 今回、ラベル(\label)と参照(\ref)には、すみつきカッコ( )を用いた(図【【labref】】参照)。

labref.png
(Pukiwiki上でのラベルと参照,【labref】)

図の挿入

図を挿入する際には、一度Pukiwiki上にアップロードし(#ref(画像ファイル名),図の位置)と記述するとPukiwiki上に図が表示される。TeX命令へ変換しPDFにする場合にはTeXファイル(*.tex)と同じフォルダ内に画像ファイルを挿入しておく必要がある。

Pukiwikiではファイル名がその図の表示名になってしまう為、表示名を出力する命令を自身で考え追加した(図【【ref1】】参照)。 図【【ref1】】中の数字の説明を以下に記す。

  1. Pukiwikiでの図を挿入する命令
  2. 図の下部に表示名とラベルを表示することで、PDFでの表示と似せる
wikiref3.png
(図の挿入,【ref1】)

表の挿入

表を挿入する際、Pukiwikiでは非常に直感的な記述が可能である。しかし、通常の記述方法では、図と同様に、表示名やラベル記述することが出来ない為、表示名とラベルの記述方法を考え追加した(図【【tab1】】)。 図【【tab1】】中の数字の説明を以下に記す。

  1. Pukiwikiで表を挿入する命令
  2. LaTeXでは図のタイトルを図の上部に表示するため、Pukiwikiでも図の上部に記述する
tab2.png
(表の挿入,【tab1】)

タイトルなど表紙に記述する内容

論文には、タイトルや著者名や日付が必要である。他にも、今回の卒業論文では、学生番号や指導教員名、所属学科などを記述する必要がある。タイトルは最上の中央部に太字で出力し、日付はPukiwikiが標準で扱えるものを使用する。それら以外の記述方式は似せるようにした(図【【title】】)。

title2.png
(表紙に記述する文章,【title】)

プログラムの処理

主なプログラムの処理方法

下記は箇条書きのプログラムの処理方法である。

  1. 文頭の記号を判別し、変数の値が0の場合、対応する命令\begin{itemize}を出力する
  2. 文頭の記号を\itemに変換し変数の値を+1する
  3. 文頭に対応する記号が無い行、かつ変数の値が0以上であれば命令\end{itemize}を出力する

箇条書きや表組みなどLaTeX側で複数行に渡り命令をする場合はの上記のような処理方法を行っている。

その他のタイトル(\title)や目次(\tableofcontents)等、一行で判別が可能な命令については、文頭や文中に特定の項目がが存在した際に、LaTeXの命令に変換している

図の挿入

LaTeXでの図の換入の命令は複雑である。図を表示させる、図の場所を指定する、図のタイトルを出力する命令、場合によってラベルを付与する必要がある。

Pukiwikiでの入力(図【【lab1】】)をTeX命令(【【lab2】】)へ当てはめていく処理を行っている。

labnew.png
(Pukiwikiでの図の表示,【lab1】)
labnew1.png
(TeX命令へ変換後,【lab2】)

表の挿入

LaTeXで行う表の挿入も、図の挿入のように複雑であり、表をどの位置に出力するか、表中の要素の位置指定、表のタイトルを出力、ラベルを付与させるなどの命令が必要である。

Pukiwikiでは、各要素の位置指定を一つずつしなければならない。しかし、LaTeX命令では列ごとに要素の位置指定が可能である。そのため、Pukiwikiで表の一行目に記述した位置指定を、変換後にはそれぞれの行の位置指定にしている(図【【table1】】、図【【table2】】)

  1. 表のタイトルとラベルを見つけた際に\begin{table}を出力する
  2. 各要素の位置指定がCENTER:ならc、RIGHT:ならr、LEFT:ならlを出力する
  3. 文頭と文末の|を削除し文末に命令を追加する
  4. 文頭と文末以外の|&に変換する
  5. 文頭に|が無ければ\end{}以下を出力する
table1.png
(表の挿入(変換前),【table1】)
table3.png
(表の挿入(変換後),【table2】)

参考文献

アンカーの削除

Pukiwikiではページ更新をした際に、見出し(*)を使用した際にアンカーが付属してしまう(図【【ancer】】参照)。アンカーを放置したままTeX形式に変換しターミナルなどでコンパイルするとエラーが出てしまうため、TeX形式へ変換する際にそのアンカーを削除する必要があった。文章作成時にアンカーのような文章を記述してしまうと、アンカーと同様に削除してしまう恐れがあった為、文頭が「*」で文末に特定の文字列が存在した場合のみアンカーを削除するようにした(図【【texanc】】参照)。

ancer.png
(ページ更新前と更新後の比較,【ancer】)
texanc3.png
(変換前と変換後の比較,【texanc】)

プリアンブルの付与

LaTeXは「プリアンブル」をテキストファイルに記述しなければコンパイルすることが出来ない。そのため、今回は卒業論文で使用するプリアンブルを変換プログラムにかけた際に自動で付与している(図【【puri】】参照)。その際に\begin{document}も一緒に付与している。\end{document}は文章の最後に付与している。これによりコンパイルが可能になる。しかし、パッケージの追加などには未対応であるため、決められた形式の論文を作成することしかできない。

puri3.png
(プリアンブルの付与,【puri】)

表紙・ページ番号の付与

論文を印刷した際に、表紙やページ番号がついていないと非常に見にくくなってしまう。しかしPukiwiki記法はWebページを作成する言語であるため、表紙やページ番号を付与させるような命令はない。そのため、LaTeX形式に変換した際に特定の命令の前後にページ番号などの命令を付与させるようにした。概要を記述すると、表紙と概要ページのページ番号を出力する命令を付与する。目次を記述すると、目次以下のページ番号を決められた書式で出力する命令を付与する(図【【pagenumber】】参照)。

しかし、プログラムが自動的に決められたページ番号を出力するようにした為、現在はページ番号の書式の設定などは出来ていない。

page3.png
(表紙やページ番号の出力,【pagenumber】)

~使用結果

筆者自身がPukiwikiを用いて卒業論文の文章を作成した。本論文が本研究の成果である。

本研究ではPukiwikiを用いてその編集画面でPukiwikiの項目を使用し、文章を作成した。述に対する集中は向上したのではないかと考える。

~考察

本論文をPukiwiki記法で作成した。それにより課題を発見することが出来た。

課題

改良案

課題の一部の問題に対する改良案として、プログラムの見直しが必要であると考える。

スクロールや行番号問題に対してはPukiwiki自体のプログラムを変更することで解決可能ではないかと考える。

PDFにする作業については、Pukiwiki上にボタンなどを追加で表示しそのボタンを押すことで、今回作成したプログラムが起動し、TeX命令へ変換、その後自動的にPDFファイルとしてダウンロードすることが可能になれば、少しでも作業の軽減ができるのではないか、と考える。

~おわりに

本研究によりPukiwiki記法を用いて文章を作成し、その文章をTeX命令へ変換するプログラムを作成した。

これにより、命令を直感的に記述することが可能になり、文章作成の際にユーザにかかる負担を軽減することが出来た。

今回、本論文をPukiwikiで作成するにあたり、課題を発見することが出来た。

~謝辞

本研究、本論文を終えるにあたり、御指導・御教授を頂いた兼宗進教授に深く感謝いたします。

また、学生生活における基礎的な学問、学問に取り組む姿勢をご教授頂いた、メディアコンピュータシステム学科の先生方に深く感謝致します。

本研究期間中、本研究に対する貴重な御意見、御協力を頂きました島袋舞子氏に心から感謝致します。そして、卒業研究に共に励んだ兼宗研究室メンバー一同にも深く感謝します。

*1 *2


~付録

付録には実験のデータやプログラムリストを付ける


*1 奥村 晴彦.LaTeX2ε 美文書作成入門 技術評論社[1997-2010],【tex】
*2 吉井 了平.Wiki2LaTeXフィルターの開発[2010],【yosii】

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS