文章作成システムの提案

日付:2024-05-02

名前:小林 大輔

学生番号:HT12A038

指導教員:兼宗 進

年度:2014

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

本研究では、Pukiwiki記法を用いて、LaTeXで行う文章作成の負担の軽減を目標とした提案と、そのプログラムを作成した。

~はじめに

文章を作成する為のソフトの一つに「LaTeX」というソフトがある。

このソフトは、各自様々なエディタにLaTeXの命令や本文を記述し、コマンドプロンプトなどを用いてコンパイルし、pdfファイルを得るという方法である。数式を扱うのに長けており、複雑な数式を美しく記述可能であるのが特徴である。そのため、理系の文章作成において重宝されている。 しかし、LaTeXの命令には複雑なものが多く、初学者が扱う際にはLaTeXの命令をいちいち参考書やインターネットなどで調べながら、本文を書かなければならない。そのため、文章作成のみに集中できないのではないかと考えた。

そこで今回、Pukiwiki記法をTeX形式の命令へ変換するプログラムを作成した。 論文作成において必要であるLaTeXの命令と、Pukiwikiの項目を対応させることで、ユーザへの入力負担を軽減できるのではと考えた。Pukiwikiを仕様する利点としては、プレビューボタンを押すだけで、出力結果が見れることや、命令の項目が直感的な点である。

~先行研究

Wiki2LaTeXフィルターの開発

「Wiki2LaTeXフィルターの開発」

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

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

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

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

~研究課題・提案

様々な文章作成ソフト

現在、文章作成ソフトには「Word」、「Writter」等があり、これらは「視覚マークアップ言語」と呼ばれ、テキスト中の「手掛かり」から文書構造を推論しようというものである。

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

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

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

他にも、卒業論文や研究論文など理系の論文を執筆する際の多くは「LaTeX」という文章作成ソフトを使用することがある。

「LaTeX」の特徴としては、

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

しかし、これらの文章作成ソフトは、文章作成時に、レイアウトに気を遣ったり、命令を調べながらでないと文章を作成できない、等の問題もある。

現在の論文執筆方法と提案方法の比較

本学の卒業論文の執筆方法は、各自様々なエディタを用いて、LaTeXの命令や本文を記述し、コマンドプロンプトなどを用いてコンパイルし、pdfファイルを得るという方法である。しかし、LaTeXの命令には複雑なものが多く、初学者が扱う際にはLaTeXの命令をいちいち参考書やインターネットなどで調べながら、本文を書かなければならない。そのため、文章作成のみに集中できないのではないかと考える。 そこで、Pukiwiki記法でLaTeXのように文章作成をすることが出来ないか、と考えた。

従来のLaTeXでの文章作成方法と、今回提案するPukiwik記法での文章作成方法をそれぞれ示す。

Pukiwiki

PukiwikiとはPHP言語で動作するWikiの一種である。

Pukiwikiの文法は直感的な記述が可能である。見出しは「*」「**」「***」で表現されている。他にも、箇条書きは「-」や「+」を使用し表現される。 「-」が記号付きの箇条書きで「+」は番号付の箇条書きである。

~研究内容

LaTeX を扱うのは容易ではなく負担がかかるため、今回は直感的に箇条書きや表などの記述が可能であるpukiwiki記法を記述し、それをLaTeX命令へ変換することで、ユーザの負担を軽減することは出来ないかと考えた。

対応の仕方

今回Pukiwikiのページを扱う利点としては、プレビュー時にPDFにした時のイメージが掴める、という点である。しかし、PukiwikiとLaTeXではそれぞれ利用目的が違うため、対応する項目は限られている。今回はそれぞれの項目の対応から行った。

対応時に考えたのは、プレビュー時にどれだけ自然に見せることが出来るか、という点である。

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

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

LaTeXに存在し、Pukiwikiに存在しない項目については、命令同士の意味が異なる場合でも対応させている。その時に考えたのは、Pukiwikiでのプレビュー時に、それの文章をPDFにした時にどのように出力されるのかイメージできるか、という点である。

PukiwikiとLaTeX、お互いに対応する語が存在しない項目をリストアップし、Webブラウザ上(Pukiwiki)で様々な項目を使用し、プレビューを行いながら対応付けを行った。 全ての項目を対応させるのは困難な為、今回の研究では、論文を作成する際に一般的に使用すると思われる項目と、卒業論文に使用するであろう項目に絞り対応付けを行う。 下記は一般的に使用すると思われる項目である。

下記は卒業論文のサンプルに記述されていたため、特別に必要であると思われる項目である。

章立て

例えば、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ではファイル名がその図の表示名になってしまう為、表示名を出力する命令を自身で考え追加した。

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

それらの対応方法を図【【lab1】】と図【【lab2】】を用いて説明する。

  1. Pukiwiki上で #ref(画像ファイル名,表示位置) と入力すること(図の出力)
  2. 改行し、CENTER:(表示名、ラベル)と入力(図の下部に表示名とラベルを表示することでPDFでの表示と似せる)

Pukiwikiでの入力を図【【lab2】】のようにTeX命令へ当てはめていく。

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

タイトルなど表紙に書く内容

論文には、もちろんタイトルや著者名が必要である。他にも、今回の卒業論文では、学生番号や指導教員名、所属学科などを記述する必要がある。

プログラムの処理

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

下記は図【【item】】のプログラムの処理方法である。

  1. 文頭の記号を判別し、変数の値が0の場合に対応する命令\begin{itemize}を出力する
  2. 文頭の記号を\itemに変換し変数の値を+1する
  3. 文頭に対応する記号が無い行、かつ変数の値が0以上であれば命令\end{itemize}を出力する
item.png
(箇条書きの変換プログラム,【item】)

箇条書きや表組、画像貼り付け等、LaTeX側で複数行に渡り命令をする場合は図【【item】】のような処理方法を行っている。

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

pl2.png
(タイトルと目次の変換プログラム,【pl2】)

アンカーの削除

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】)

動作方法

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

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

activity.png
(変換方法,【activity】)

~評価実験

~考察

PukiWiki記法からTeX形式に変換するシステムの開発

課題

~終わりに

「おわりに」では,あらためて,研究で何を行ったのか,また,そ の成果は何か,を簡潔にまとめる.また,今後の課題も簡潔にまとめる. 特に,今後の課題については,たくさんある場合でも,あまり多 くは書かず,次にするべきことは何かを簡潔にまとめる. 今後の課題がたくさんある場合には,考察のところで取り上げ, どのようなアプローチが考えられるかをなるべく具体的に書く とよい.

~謝辞

「謝辞」では,卒業研究や修士の研究でお世話になった先生や 先輩に対して感謝の意を表す.卒業研究や修士の研究とはいう ものの,大学や大学院で得た知識の集大成が卒業研究や修士の 研究の成果なのであるから,それをふまえて,広く感謝の意を 表す方がよい.

通常,謝辞では,感謝の度合が高いほど先に書く.また,何 人かを一まとめにするよりは,個別に謝辞を書く方が,感謝の 度合が高くなる.同列に並べる時でも,役職の高い人を先に書 くなど,一般的に常識とされることがあるので,気を配った方 がよい.


~付録

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


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