CENTER:''論文作成システムの提案''
CENTER:''Wikiで記述する方式の卒業論文作成システムの提案''

名前:小林 大輔

学籍番号:HT12A038

日付:&_date;

指導教員:兼宗 進

年度:2014

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

 本研究では、論文作成システムの提案を行った。

 論文執筆等に行う際に使用するソフトウェアのひとつとして、LaTeXというものがある。これは、TeXmakerやEmacs等のエディタを用いて、LaTeXの命令や文章を書き、コンパイルすることによりPDFファイルを得る。しかし、LaTeXの命令は独特であり、これを初学者が用いて論文執筆を行うことは困難である。命令が複雑なため、初学者にはわかりづらく、参考書やWebサイト等で調べながら執筆をすることになる。そうすると、執筆作業に集中できず、執筆作業以外にも労力を取られてしまう。そのため、命令が単純で直感的に記述することができれば、執筆作業に集中できると考えた。
 本研究では、Wikiで記述する方式の論文作成システムの提案をする。
 論文執筆を行う際に使用するソフトウェアのひとつに、LaTeXがある。
 これは、ユーザがTeXmakerやEmacs等のエディタに英語表記の命令や文章を記述し、コマンド実行等のコンパイル作業を行うことで出力結果を得ることができる。
 しかし、初学者が複雑な命令を使用しながら、論文を執筆することは難しいと考えた。
 そこで、命令を簡略化し、命令の入力量を減らすことにより、ユーザの負担を軽減できる、Wikiで記述する方式の論文作成システムを開発した。

 本研究では、論文作成時に必要である命令を直感的に記述するための提案をした。提案を実現する為にPukiwikiを用いた。Pukiwikiは、Webブラウザ上で命令や文章を入力し、プレビューボタンを押すだけで出力結果を見ることが可能なシステムである。
>LaTeX PukiWiki Webブラウザ 文章変換 文章作成支援

 Pukiwikiの記法とLaTeXの命令の対照表を作成し、その表を元にプログラムを作成した。その際、Pukiwikiと対照できない命令が存在した為、自身で考え対応させた。対応時にはプレビューした際に、完成時のイメージが掴めるようにした。

 結果、プレビューボタンで完成時のイメージが掴める様になり、文章作成への集中が向上したのではないかと考える。

>論文作成 LaTeX Pukiwiki 

#contents

*~はじめに 【chap1】 [#kdef7ab8]
文章を作成するためのソフトウェアには「Microsoft Word」や「Open Office Writer」、「LaTeX」等がある。上記に記述したソフトウェア以外にも、様々な文章作成ソフトウェアが存在するが、論文作成には主にLaTeXを用いられることが多い。

*~はじめに [#kdef7ab8]
LaTeXは、ユーザがTeXmakerやEmacs等のエディタにLaTeXの命令や文章を記述したあと、コンパイル作業をすることで、PDFファイルといった閲覧用ファイルを取得することが可能である。数式を扱うのに長けており、複雑な数式を美しく出力することができ、理系の文章作成において用いられることが多い。命令は英語表記で記述し、その中にはわかりやすい命令もあれば、少し複雑な命令も存在する。

本学科の卒業論文作成にも、LaTeXを使用することが定められている。卒業論文を書く場合、文章の内容を考え、何十ページも記述しなければならないため、複雑な命令を何度も記述するのは負担があると考えた。
そこで本研究では、Wiki形式で記述する方式の卒業論文作成システムの提案をする。本来、WikiはWebページを作成するシステムであり、独自の記法を用いて簡易的にWebページを作成できることが知られている。今回、卒業論文作成システムの構築にあたり、Wikiには存在しない記法もあったため、記法を独自で考えた。また、標準のWikiにはPDFを生成する機能はないため、提案したシステムで記述した文章を保存すると、PDFファイルを得ることも可能にした。

文章を作成するための言語には、「視覚マークアップ言語」や「手続きマークアップ言語」がある。
上記の言語を用いたソフトには「Microsoft Word」や「Open Office Writer」や「LaTeX」があるが、論文作成には主に「LaTeX」を用いることが多い。
本論文では次のような構成になっている。第【【chap2】】章では、様々な文章作成ソフトウェアの説明を述べる。第【【chap3】】章では、本学科での論文執筆方法と、本研究で提案する卒業論文作成システムについて述べる。第【【chap4】】章では、論文作成システムの実装について述べる。第【【chap5】】章では、本研究で提案したシステムの使用結果と考察を述べる。第【【chap6】】章では、本研究のまとめを述べる。

LaTeXは、ユーザが様々なエディタにLaTeXの命令や本文を記述し、コマンドプロンプトなどを用いてコンパイルし、PDFファイルを得る事が可能である。数式を扱うのに長けており、複雑な数式を美しく記述可能であるのが特徴である。そのため、理系の文章作成において重宝されている。
*~様々な文章作成ソフトウェア 【chap2】 [#rff8ec2b]
*Microsoft Word [#f95539a6]
Microsoft社が、WindowsおよびMac OS向けに発売している文章作成ソフトウェア(図【【word】】)である。ボタンひとつで、文字を中央に寄せたり、文字のサイズや書式を変更できる。文字や図や表の配置の自由度が高い。

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

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

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


*~様々な文章作成ソフト [#rff8ec2b]
*視覚マークアップ言語 [#w3f4a349]
例えば、テキストファイルの文章のタイトルの前にいくつか改行やスペースを入れることで、行送りの調整や中央寄せを暗示させている。

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

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

**Microsoft Word [#f95539a6]
マイクロソフトが1983年にMulti-Tool Wordという名称で発売した。現在はWindowsおよびMac OS向けに販売されている。
-複雑なレイアウトを作成した際に崩れにくい
-ボタン一つで文章を中央に寄せる、などレイアウトの設定が容易である
-入力した内容、画面に出力されている内容と、印刷した時の出力が一致する

上記のような特徴がある。

#ref(word1.png,center)
CENTER:(Microsoft Word,【word】)

**Open Office Writer [#sd1fb0da]
オラクル コーポレーションが開発し、英語版のバージョン1.0が2002年5月1日にリリースされ、無料で入手でき、自由に使用が可能。
-ボタン一つで文章を中央に寄せる、などレイアウトの設定が容易である
-スタイルを使うことで、文書の構造と見かけを分けて管理できる
-入力した内容、画面に出力されている内容と、印刷した時の出力が一致する

*Open Office Writer [#sd1fb0da]
オープンソースで開発されたフリーの統合オフィスソフト「OpenOffice.org」の内のひとつ(図【【writer】】)。無料で利用できる。基本的な画面や操作方法は「Word」と似ているが、サポートされていない機能もある。

上記のような特徴がある。

#ref(writer1.png,center)
CENTER:(Open Office Writer,【word】)
CENTER:(Open Office Writer,【writer】)

*手続きマークアップ言語 [#z93c3128]
例えば、書式を整えるために、書式指定の命令を文章の直前に並べ、中央揃えモードに移る、書体を大きくさせるなどの指示を出す。文章の後には、それらの効果を打ち消す命令が並ぶ言語である。出力した際には非常に整っていて見やすい。しかし、命令が複雑なため、扱うのは容易ではない。
*LaTeX [#ndcbc411]
記述している文章内容と、視覚的なレイアウト情報を分けて記述し、文章を作成していくソフトウェアである。例えば、'''\section{はじめに}'''と記述すると、'''\section{}'''という命令でレイアウト情報を示し、'''{}'''の中に記述した文章が、指定された形式で出力される。英語表記の命令を用いて文章を作成し、コンパイル処理を行うことで初めてDVIやPDF等の閲覧用のファイルを得ることが可能である。

**LaTeX [#ndcbc411]
-TeXにパッケージを組み込むことで構築されている
-ソースコードを作成し、コンパイルを行うことで初めてDVIやPDFなどの閲覧用のファイルを得ることが可能である
-コンパイルを行わないとどういった出力が得られるかが分かりにくい
-非常に綺麗に数式を出力することが可能である
-命令が複雑である
*PukiWiki [#ra4f2b88]
Webブラウザ上で独自の記法を用いて、Webページを作成するWikiの一種である。PukiWikiでは、独自の記法であるPukiWiki記法や文章を記述することでWebページの作成、編集ができる。

上記のような特徴がある。

*先行研究 [#ce177b82]
先行研究として、関西学院大学の吉井了平氏が行った「Wiki2LaTeXフィルターの開発」がある。
先行研究として、関西学院大学の吉井了平氏が行った「Wiki2LaTeXフィルターの開発」『『yosii』』がある。この研究では、LaTeXで文章作成する際に必要な命令の一部を、PukiWikiの記法と、その他に自身で設定した記号に置き換えている。それにより、LaTeX命令の入力作業の軽減を実現している(図【【wiki2tex】】)。

この研究では、LaTeXで文章作成する際に必要で、頻出する命令を、PHP言語で動作するWikiの一種であるPukiwikiの記法と、そ の他に自身で設定した記号に置き換えている。それにより、LaTeX命令の入力作業の軽減を実現している(図【【wiki2tex】】)。
PukiWiki記法をLaTeXの命令へ変換するために、既存のフィルターである「pukipa.rb」を改良している。「pukipa.rb」とは、Pukiwikiの独自文法をHTMLに変換するプログラムである。本来、HTMLに変換し出力する部分を、LaTeX命令を出力するように変更している。PukiWiki記法を用いて作成した文章を、フィルターにかけることでLaTeXの命令へ変換している。

PukiWiki記法をTeX命令へ変換するために既存のフィルターである「pukipa.rb」を改良している。「pukipa.rb」とは、Pukiwikiの独自文法をHTMLに変換するプログラムである。HTMLに出力する部分をそれぞれに対応するLaTeX命令へ変更している。
この研究では頻出する命令のみに対応している。しかし、表や図など対応していない命令があるため、論文を作成することはできない。

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

#ref(wiki2tex2.png,center)
CENTER:(先行研究での執筆方法の比較,【wiki2tex】)
CENTER:(先行研究での文章記述方法とLaTeXへの変換後の比較,【wiki2tex】)


*~本学科の論文執筆方法と提案する方法 【chap3】 [#b51a51eb]
*本学科の論文執筆方法 [#i6dee2cf]
本学科の卒業論文の執筆には、LaTeXを扱っている。
卒業論文には様々な指定があり、指定通りに論文を作成するには、以下の項目や命令が必要である。

*~本学科の論文執筆方法と提案する方法 [#b51a51eb]
本学科の卒業論文の執筆方法は、ユーザが様々なエディタを用いて、LaTeXの命令や本文を記述し、コマンドプロンプトなどを用いてコンパイルし、PDFファイルを得るという方法である。

一般的な論文を作成する際には以下の命令が必要である。
-表紙
-タイトル
-著者
-日付け
-指導教員
-日付
-学籍番号
-年度
-所属学部学科
-概要
-目次
-章立て
-表紙
-章
-節
-付録
-ラベル
-参照
-文字のセンタリング
-付録
-改行
-コメントアウト
-ページ番号の設定

下記は本学の卒業論文に必要である命令である。
-学籍番号
-指導教員
-年度
-所属学部学科
-ノンブルを算用数字

上記のLaTeX命令には複雑なものが多く、初学者が扱う際にはLaTeXの命令を参考書やインターネットなどで調べながら、文章の執筆作業を行う。そのため、文章作成のみに集中できないのではないかと考えた。
以上の項目や命令に対応する必要がある。
*提案する方法 [#e784ced6]
第【【chap1】】章でも述べたが、LaTeXはTeXmakerやEmacs等のエディタに、英語表記の命令を入力し文章を作成する。命令にはわかりやすいものもあるが、複雑なものもある。複雑な命令を何度も記述するのは、慣れていないユーザには負担がかかると考えた。先行研究では、LaTeXの命令の入力を簡略化することで、ユーザへの負担は軽減している。しかし、表や図に対応していないため、このシステムのみではLaTeXの命令を記述せずに論文を作成することはできない。

先行研究では、Pukiwiki記法をLaTeX命令に変換し、入力作業の軽減を実現しているが、図や表などの命令には未対応である。
そこで、論文作成に必要な命令を独自に簡略化する。また、作成した文章を保存することで、PDFファイルを作成する。これらの機能がある論文作成システムを提案をする。例として、図の挿入時に記述する命令を、提案する命令と、LaTeXの命令の文章を比較する(図【【inc】】)。命令を簡略化することで、負担を軽減できると考えられる。

本研究では、記法を直感的に記述することが可能で、プレビューボタンを押すだけで出力結果が見ることが可能なPukiwiki用いて、ユーザの負担軽減を目標にした。

従来の論文作成方法と今回提案する論文作成方法を図【【texwiki】】に示す。
#ref(texwiki.png,center)
CENTER:(従来の方法と今回の提案,【texwiki】)
#ref(inc.png,center)
CENTER:(図の挿入命令の比較,【inc】)

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

上記の流れを図に示したものが図【【activity】】である。
*~研究内容 【chap4】 [#a8a88a9d]
*システムの概要 [#tbe2e096]
本研究で提案するシステムはPukiWikiをベースに作成する。提案するシステムでの文章の記述には、PukiWiki記法と、独自に提案する記法を用いる。PukiWiki記法を用いて作成した文章をLaTeX形式へ変換するプログラムの作成をする。その後、PDFファイルを作成できるようにした。

#ref(activity.png,center)
CENTER:(動作方法,【activity】)
*対応方法 [#na0f25b5]
Pukiwikiは本来、Webページの作成に用いられる。一方で、LaTeXは論文作成のために用いられる。両者の利用目的が異なるため、必ずPukiWiki記法とLaTeXの命令が一致するとは限らない。そのため、命令と記法が一致しなかった記法を独自に作成し、対応付けをした。

例えば、LaTeXには内容梗概('''{abstract}''')という命令があるが、PukiWikiにはそのような記法はない。そのため、文頭に半角スペースを入力することで内容梗概を暗示させる。LaTeXで文章作成を行う際に必要な命令と、PukiWiki記法との対照表を表【【lists】】に示す。

*対応の仕方 [#ye0d098c]
本研究でPukiwikiを扱う利点としては、記法が直感的に記述することが出来る、プレビューボタンを押すだけで出力結果が見れる、という点である。しかし、PukiwikiとLaTeXではそれぞれ利用目的が違うため、必ず記法と命令が対照するとは限らない。今回はそれぞれの対照から行った。
CENTER:(PukiWiki記法とLaTeX命令の対照表,【lists】)
|LEFT:Pukiwiki記法|LEFT:LaTeX命令(始まり)|LEFT:LaTeX命令(終わり)|LEFT:意味|
|LEFT:'''*~'''|LEFT:'''\chapter'''|LEFT:なし|LEFT:章|
|LEFT:'''*'''|LEFT:'''\section'''|LEFT:なし|LEFT:節(大)|
|LEFT:'''**'''|LEFT:'''\subsection'''|LEFT:なし|LEFT:節(中)|
|LEFT:'''***'''|LEFT:'''\subsubsection'''|LEFT:なし|LEFT:節(小)|
|LEFT:'''+'''|LEFT:'''\begin{enumerate}'''|LEFT:'''\end{enumerate}'''|LEFT:番号付リスト|
|LEFT:'''-'''|LEFT:'''\begin{itemize}'''|LEFT:'''\end{itemize}'''|LEFT:番号なしリスト|
|LEFT:|a|b||LEFT:'''\begin{table}'''|LEFT:'''\end{table}'''|LEFT:表組み|
|LEFT:'''#ref'''(ファイル名)|LEFT:'''\begin{figure}'''|LEFT:'''\end{figure}'''|LEFT:図の挿入|
|LEFT:'''【''' 】|LEFT:'''\label{}'''|LEFT:なし|LEFT:ラベル|
|LEFT:'''【''' '''【''' '''】''' 】|LEFT:'''\ref{}'''|LEFT:なし|LEFT:参照|
|LEFT:文頭に半角スペース|LEFT:'''\begin{abstract}'''|LEFT:'''\end{abstract}'''|LEFT:内容梗概|
|LEFT:'''#'''contents|LEFT:'''\maketitle'''|LEFT:なし|LEFT:目次|
|LEFT:'''----'''|LEFT:'''\appendix'''|LEFT:なし|LEFT:付録|
|LEFT:'''CENTER''':""タイトル""|LEFT:'''\title'''|LEFT:なし|LEFT:タイトル|

まず、LaTeXで文章作成を行う際に頻出する命令をリストアップしPukiwiki記法との対照表を作成した。
一部を、表【【lists】】に示す。
PukiWikiでのプレビュー時に、Webブラウザ上に表示される文章やレイアウトを見ることで、PDFファイルの出力結果をイメージできるように対応付けをした。

CENTER:(対照表,【lists】)
|CENTER:Pukiwiki記法|CENTER:LaTeX命令(始まり)|CENTER:LaTeX命令(終わり)|CENTER:意味|
|CENTER:'''*'''|CENTER:'''\section'''|CENTER:'''/'''|CENTER:見出し|
|CENTER:'''+'''|CENTER:'''\begin{enumerate}'''|CENTER:'''\end{enumerate}'''|CENTER:番号付リスト|
|CENTER:'''-'''|CENTER:'''\begin{itemize}'''|CENTER:'''\end{itemize}'''|CENTER:番号なしリスト|
|CENTER:|a|b||CENTER:'''\begin{table}'''|CENTER:'''\end{table}'''|CENTER:表組み|
|CENTER:'''#ref'''(ファイル名)|CENTER:'''\begin{figure}'''|CENTER:'''\begin{figure}'''|CENTER:図|
**章立て [#sa221d8e]
LaTeXには「章('''\chapter''')」や「節('''\section''')」という命令がある。しかし、PukiWiki記法には「章」はなく「節(*)」しかない。PukiWiki上では「*」を使用しなければプレビュー時に目次に表示されないため、節と章を「*」を用いた記述方法にした。しかし、PukiWiki記法では「***(LaTeXでいう'''\subsubsection''')」までしか対応されていない。そのため、「'''****'''」とは、記述することができない。そこで、文頭に「'''*~'''」と記述すると「章」とし、「節(*)」部分と区別するようにした(図【【chapsec】】参照)。


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

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

#ref(chapsec.png,center)
CENTER:(編集画面とプレビュー,【chapsec】)

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

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

#ref(labref.png,center)
CENTER:(Pukiwiki上でのラベルと参照,【labref】)
CENTER:(PukiwWikiでのラベルと参照,【labref】)

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

Pukiwikiではファイル名がその図の表示名になってしまう為、表示名を出力する命令を自身で考え追加した(図【【ref1】】参照)。
図【【ref1】】中の数字の説明として、1がPukiwikiでの図を挿入する命令。2で図の下部に表示名とラベルを表示させている。
**図の挿入 [#uc15a163]
図を挿入する際には、一度PukiWiki上に画像ファイルをアップロードし、('''#'''ref(画像ファイル名),図の位置)と記述するとPukiWiki上に図が表示される。PukiWikiではファイル名がその図の表示名になってしまうため、表示名を出力する命令を考え実装した(図【【ref1】】参照)。画像が表示できるのは拡張子が(*.jpg)や(*.png)のファイルで、(*.eps)についてはファイル名のみが表示され、クリックすることで表示することが可能である。

LaTeXの命令へ変換しPDFにする場合にはTeXファイル(*.tex)と同じフォルダ内に画像ファイルを挿入しておく必要がある。


図【【ref1】】中の数字の説明は、1がPukiwikiでの図を挿入する命令。2で図の下部に表示名とラベルを表示している。

#ref(wikiref3.png,center)
CENTER:(図の挿入,【ref1】)

**表の挿入 [#o5cd0e10]
表を挿入する際、Pukiwikiでは非常に直感的な記述が可能である。しかし、通常の記述方法では、図と同様に、表示名やラベルを記述することが出来ない為、表示名とラベルの記述方法を考え追加した(図【【tab1】】)。
図【【tab1】】中の解説として、1がPukiwikiで表を挿入する命令。2で図のタイトルを図の上部に表示する。命令となっている
**表の挿入 [#cd8d7329]
表を挿入する際、PukiWikiでは非常に直感的な記述が可能である。しかし、通常の記述方法では、図と同様に、表示名やラベルを記述することが出来ないため、表示名とラベルの記述方法を考え実装した(図【【tab1】】)。
図【【tab1】】中の数字は、1がPukiwikiで表を挿入する命令。2で表の上部のタイトルとラベルを表示している。

#ref(tab2.png,center)
CENTER:(表の挿入,【tab1】)

**タイトルなど表紙に記述する内容 [#jb2fb2ba]
論文には、タイトルや著者名、日付が必要である。他にも、卒業論文では、学籍番号や指導教員名、所属学科などを記述する必要がある。タイトルは最上の中央部に太字で出力し、日付はPukiWiki記法で標準で扱えるものを使用する。著者名や学籍番号等の記述方式は似せるようにした(図【【title】】)。

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

#ref(title2.png,center)
CENTER:(表紙に記述する文章,【title】)

*処理内容 [#xcb81867]
**主な処理内容 [#ied52cf1]
PukiWiki記法を、LaTeXの命令へ変換するプログラムを、Perl言語を用いて作成した。下記はPukiWiki記法で箇条書きを使用した際に、変換プログラムが行う処理である。
+ 文頭の記号を判別し、'''\begin{itemize}'''を出力する
+ 文頭の記号を'''\item'''へ変換する
+ 文頭に対応する記号が無い行で'''\end{itemize}'''を出力する

*プログラムの処理 [#xcb81867]
**主なプログラムの処理方法 [#ve00a8c0]
下記は箇条書きのプログラムの処理方法である。
+ 文頭の記号を判別し、変数の値が0の場合、対応する命令'''\begin{itemize}'''を出力する
+ 文頭の記号を'''\item'''に変換し変数の値を+1する
+ 文頭に対応する記号が無い行、かつ変数の値が0以上であれば命令'''\end{itemize}'''を出力する
この処理を行った際の、変換前(PukiWiki)と変換後(LaTeX)の比較を図【【item】】に示す。

LaTeX側で複数行に渡り記述する命令についてはこのような処理方法を行っている。
LaTeX側で複数行に渡り記述する命令については、このような処理をベースとしている。

その他、タイトル('''\title''')や目次('''\tableofcontents''')等、一行で判別が可能な命令については、文頭や文中に特定の項目がが存在した際に、LaTeXの命令に変換している
#ref(itempl.png,center)
CENTER:(箇条書きの変換前と変換後の比較,【item】)

**図の挿入 [#c4923209]
LaTeXでの図の換入の命令は複雑である。図を表示させる、図の場所を指定する、図のタイトルを出力する命令、場合によってラベルを付与する必要がある。
その他、タイトル('''\title''')や目次('''\tableofcontents''')等、一行で判別が可能な命令については、文頭や文中に特定の文字や記号が存在した際に、LaTeXの命令に変換している。

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

**図の挿入 [#w618d4ad]
LaTeXでの図の挿入時には、図を表示させる、図の場所を指定する、図のタイトルを出力する命令、場合によってラベルを付与する必要がある。
PukiWikiでの入力(図【【lab1】】)をLaTeXの命令(図【【lab2】】)へあてはめていく処理を行っている。

図【【lab1】】と図【【lab2】】中の数字は、1がファイル名、2が図を表示する位置、3が図のタイトル、4がラベルとなっている。

#ref(labnew.png,center)
CENTER:(Pukiwikiでの図の表示,【lab1】)

#ref(labnew1.png,center)
CENTER:(TeX命令へ変換後,【lab2】)


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

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


#ref(table1.png,center)
CENTER:(表の挿入(変換前),【table1】)
CENTER:(表の挿入(PukiWiki記法),【table1】)

#ref(table3.png,center)
CENTER:(表の挿入(変換後),【table2】)
CENTER:(表の挿入(LaTeX命令),【table2】)

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

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

#ref(ancer.png,center)
CENTER:(ページ更新前と更新後の比較,【ancer】)


#ref(texanc3.png,center)
CENTER:(変換前と変換後の比較,【texanc】)
CENTER:(アンカー削除:変換前と変換後の比較,【texanc】)

**プリアンブルの付与 [#ta3f45a5]
LaTeXは「プリアンブル」をテキストファイルに記述しなければコンパイルすることが出来ない。そのため、今回は卒業論文で使用するプリアンブルを変換プログラムにかけた際に自動で付与している(図【【puri】】参照)。その際に'''\begin{document}'''も一緒に付与し、'''\end{document}'''は文章の最後に付与している。これによりコンパイルが可能になる。
**プリアンブルの付与 [#rb5fb635]
LaTeXは、「プリアンブル」をテキストファイルに記述しなければコンパイル処理をすることが出来ない。そのため、今回は卒業論文で使用するプリアンブルを、変換プログラムにかけた際に、自動で付与している(図【【puri】】参照)。その際に'''\begin{document}'''も一緒に付与し、'''\end{document}'''は文章の最後に付与している。これによりコンパイル処理が可能になる。

#ref(puri3.png,center)
CENTER:(プリアンブルの付与,【puri】)

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

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

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


*変換の自動化 [#sff4f0c7]
PDFファイルにする際に、Pukiwikiで編集した文章を、テキストファイルにコピーし、変換し、コンパイルしてPDFファイルにする。このような作業を行うと、時間や手間がかかるたため、ユーザに負担がかかってしまう。そのため、コピー、変換、コンパイルなどの作業を省略できないかと考えた。Pukiwikiで記述した文章を、ページ更新ボタンを押すだけでPDFファイルに出来ないかと考えた。
PukiWikiでは、文章の作成やレイアウトの確認はできるが、PDFファイルを作成することはできない。PDFファイルを作成するためには、PukiWiki記法を用いて作成した文章を、LaTeX形式に変換する、そのLaTeX形式の文章をコンパイル作業を行いPDFファイルにする。しかし、これでは手間がかかってしまう。そこで、これらの作業を自動化する。

まず、Pukiwikiで編集しているテキストファイルをサーバー上で、LaTeX命令へ変換、その後コンパイルできないか、と考えたが、筆者が使用しているPukiwikiが存在しているサーバーではLaTeXが動作しなかった。外部のサーバーで動作させてしまうと、サーバー移動の際にユーザに負担がかかってしまう。
Pukiwikiで編集している文章を保存することで、LaTeX形式の文章へ変換し、そのLaTeX形式の文章をコンパイル処理することでPDFファイルになる。そのPDFファイルを保存する。
その提案を実現するために、シェルスクリプトを用いてプログラムを作成する。

そこで、ページ更新ボタンを押した際に、Pukiwikiで編集している文章がLaTeX命令へ変換され、コンパイルしPDFになりDropbox内のフォルダに更新できないか、と考えた。
自動化を行うために、rsyncコマンドと「a」オプションを使うことにより、タイムスタンプを保持したまま、変更されたファイルのみをコピーすることができる。このコマンドを用いて、サーバ内に存在するPukiWikiのWikiディレクトリを、タイムスタンプを保持したまま、変更されたファイルのみをコピーする。タイムスタンプが更新されてしまうと、タイムスタンプの比較が正常にできなくなってしまう。

本研究室では卒業研究や卒業論文執筆についての作業はDropboxを用いて行っているため、自身でサーバーにアクセスするより、自動的に自身のPCに同期されるDropboxの方が便利だと考え、提案を実現するためのプログラム作成を行った。
「ファイル名.txt」が「ファイル名.tex」より新しくなっていた場合は、「ファイル名.txt」を変換プログラムにかけ、LaTeX命令へ変換し、「ファイル名.tex」へ書き込む。platexでtexファイルを2回コンパイル処理し、エラーが出れば次の処理には移らず、エラーが出なければdvipdfmxでコンパイル処理を行いPDFファイルを作成する。以上の処理を30秒ごとに行う。

プログラムはシェルスクリプトを用いて作成した。

まず、自動化を行うために、LaTeXをコンパイルするために用いるディレクトリの中身と、文章作成を行っているPukiwikiのページのディレクトリのバックアップを行う。この処理を、シェルスクリプトのrsyncを用いて行う。

本研究で作成したPukiwiki記法をTeX命令へ変換するsample.plと、それを複製したw2t.plを用意する。Pukiwikiで更新ボタンが押された際に、sample.plが更新されているかチェックし、構文エラーが無ければ、w2t.plと見比べ、sample.plがw2t.plより新しくなっている場合、sample.plの文字コードを変更しw2t.plへ書き換える。

その後、Pukiwikiで文章作成時に更新されているテキストファイルと、Dropbox内に存在する同名称のtexファイルを見比べ、テキストファイルの方が新しい場合、そのテキストファイルを変換プログラムでLaTeX命令に変換しtexファイルへ書き換える。その後、2回コンパイルを行う。その際にエラーが出現した場合は、コンパイルを中止。エラーが出現しない場合はPDFファイルを生成する。上記の作業を30秒ごとに行う。
この処理をフローチャートに示したものが図【【flow】】である。

#ref(flow.png,center)
CENTER:(プログラムの流れ,【flow】)
#ref(flow3.png,center,max)
CENTER:(自動化プログラムの流れ,【flow】)

*~使用結果 [#o662e8ee]
筆者自身がPukiwikiを用いて卒業論文を作成した。本論文が本研究の成果である。
*~使用結果 【chap5】 [#cce84965]
作成したシステムによって、本論文を作成した。本システムでは、LaTeXのように細かい指定等はできないが、簡略化した命令を用いるため、文章の作成を容易に行うことができた。また、プレビューを行うことで、出力結果をイメージすることができ、全体の構成を確認しながら執筆を進めることができた。今後の課題として以下の点が挙げられる。

本研究ではPukiwikiを用いてその編集画面でPukiwiki記法を用いて文章を作成した。作成に対する集中は向上したのではないかと考える。
+箇条書きを入れ子にできない
+表や図のサイズや、文章のサイズなど細かい指定ができない
+パッケージの追加などには未対応である
+プリアンブルが規定されたものしか付与できない
+ページ番号も規定されたものしか付与できない
+プレビューをすると、編集画面の上部にプレビューが表示されるため再編集時には、最下部までスクロールしなければならない
+数式に対応できていない
+行番号がないので編集時にわかりにくい

*考察 [#cce84965]
本論文をPukiwikiを用いて作成した。それにより課題を発見することが出来た。
課題に対する解決策として、1から5までは変換プログラムの改良が必要である。6から8までの課題を解決するためには、PukiWikiを改良しなければならない可能性が高いので検討する必要がある。

**課題 [#s803d58d]
-段落を下げた箇条書きが記述できない
-パッケージの追加などには未対応であるため、決められた形式の論文を作成することしかできない
-プリアンブルが規定されたものしか付与できない為、決められた論文しか作成できない
-ページ番号も規定されたものしか付与できない
-表や図、文章のサイズなど細かい指定ができない
-プレビューした後、編集画面が最下部に行ってしまう為、最下部までスクロールしなければならない
-行番号がないので編集時にわかりにくい
-PDFファイル名が・・・
*~おわりに 【chap6】 [#ef19b892]
本研究では、Wiki形式で記述する方式の卒業論文作成システムの提案した。

**改良案 [#x1619dbb]
課題の一部の問題に対する改良案として、作成したプログラムの見直しが必要であると考える。
本システムの構築にあたり、PukiWiki記法と独自に提案した記法を用いて作成した文章を、LaTeX形式へ変換するプログラムを作成した。

スクロールや行番号問題に対してはPukiwiki自体のプログラムを変更することで解決可能ではないかと考える。
本システムにより、本論文を作成した。簡略化した命令を使用できる、かつ、プレビューにより、出力結果をイメージすることができ、全体の構成を確認しながら執筆を容易に進められることを確認できた。
また、論文が受理されたことから、本学科指定の卒業論文を作成することができたといえる。

今回、本論文をこのシステムで作成するにあたり、使用できない命令や、細かい指定が出来ない等の課題を発見することが出来た。

今後は、発見した課題を解決していきたい。そして、このシステムが論文作成の際にユーザにかかる負担を軽減できるのか、さらなる検証を行いたい。


*~おわりに [#ef19b892]
本研究ではPukiwiki記法を用いて文章を作成し、その文章をTeX命令へ変換するプログラムを作成した。

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

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


*~謝辞 [#t76c9886]
本研究、本論文を終えるにあたり、御指導・御教授を頂いた兼宗進教授に深く感謝いたします。
本研究、本論文を終えるにあたり、多大なる御指導、御教授をいただいた、兼宗進教授に深く感謝致します。

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

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

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

((奥村 俊之. LaTeX2ε美文書作成入門. 技術評論社, 2010.,【texx】))
((吉井 了平. Wiki2LaTeXフィルターの開発. &br;http://ist.ksc.kwansei.ac.jp/'''~'''nishitani/'''?'''MBTheses. , 2010. ,【yosii】))
((増井 俊之. Perl書法. 株式会社アスキー, 1993.,【pel】))
((Perl基礎入門|KenTWeb. http://www.kent-web.com/perl/. ,【perl2】))
((FrontPage-PukiWiki-official. http://pukiwiki.sourceforge.jp/. ,【pukipuki】))

((奥村 晴彦.『LaTeX2ε 美文書作成入門』技術評論社[1997-2010],【tex】))
((吉井 了平.『Wiki2LaTeXフィルターの開発』[2010],【yosii】))
((増井 俊之.『Perl書法』[1993],【perl】))

----
*~プログラムリスト [#h12a62c8]
:sample.pl|[変換プログラム,【pl22】]

:w2t.sh|[自動化プログラム,【sh】]
<<<
my $ti=0; #タイトル
my $abst=0; #概要
my $tc=0; #table
my $ic=0; #item
my $ec=0; #enumarete
my $ac=0; #abst
my $clc=0; #chapter.labe
my $slc=0; #section.label
my $anc=0; #sectoin ancor
my $sanc=0; #sub anc
my $ssanc=0; #subsub anc
my $ref=0;
my $bibi=0;
my $fig=0;
my $tab=0;

print "\\documentclass\[11pt\]\{oecu-thesis\}\n";
print "\\usepackage\{times\}\n";
print "\\usepackage\[dvipdfmx\]\{graphicx,color\}\n";
print "\\newcommand\{\\tag\}\[1\]\{\$\\langle";
print "\$\\nobreak\#1\\nobreak\$\\rangle\$\}\n";
print "\\newcommand\{\\stereotype\}\[1\]\{\\raisebox\{0.45ex\}\{\$\_\\ll\$\}\\nobreak\n";
print "\#1\\nobreak\\raisebox\{0.45ex\}\{\$\_\\gg\$\}\}\n";
print "\\begin\{document\}\n";



while (<>){
	chomp;
	
	$count = (() = $_ =~ /\|/g);#"|"の数をカウント
	
	#べた書き
	if(/\'\'\'(.*)\'\'\'/){
		s/\'\'\'(.*?)\'\'\'/\\verb\+\1\+/g;
	}
	#図
	if(/\#ref\((.*?),(.*?)\)/){
		s/\#ref\((.*?),(.*?)\)//;
		print "\\begin\{figure\}\[h\]\n\\begin{$2}\n";
		print "\\includegraphics[width=0.8\\textwidth]{$1}";
		$fig = 1;
	}elsif(/CENTER\:\((.*?),\【(.*?)\】\)/ && $fig == 1){
		s/CENTER\:\((.*?),\【(.*?)\】\)//;
		print "\\caption{$1}\\label{$2}\n\\end{center}\n\\end{figure}\n" ;
		$fig = 0;
	}
	#表
	if(!/^\|/ && $tab != 0){
		print "  \\end\{tabular\}\n";
		print " \\end{center}\n";
		print "\\end\{table}\n";
		$tab=0;
	}elsif(/^CENTER:\((.*?),\【(.*?)\】\)/){
		print "\\begin{table}[h]\n";
		print " \\begin{center}\n";
		print "  \\caption{$1}\\label{$2}";
		s/^CENTER:\((.*?),\【(.*?)\】\)//;
		$tab++;
	}elsif(/^\|/ && $tab == 1){
		$str = $_;
		$str2 = $str;
		if($count != 0){
			print "   \\begin{tabular}{";
				s/\|//;
			for($j = 1; $j < $count; $j++){
				print "|";
				s/(.*?)\|//;
				if($1 =~ /CENTER:/){
					print "c";
				}elsif($1 =~ /RIGHT:/){
					print "r";
				}elsif($1 =~ /LEFT:/){
					print "l";
				}else{
					print "l";
				}
			}
			print "|} \\hline\n";
			$tab++;
		}
		$str2 =~s/RIGHT:|CENTER:|LEFT://g;
		$str2 =~ s/^\|//g;
		$str2 =~ s/\|/\&/g; #gはマッチするものを全て置換
		chop($str2);
		print "    ";
		print $str2 . " \\\\ \\hline";
		s/.*//;
	}elsif($tab != 0 && $count != 0){
		$str = $_;
		$str =~s/RIGHT:|CENTER:|LEFT://g;
		$str =~ s/^\|//g; 
		$str =~ s/\|/\&/g; #gはマッチするものを全て置換
		chop($str);
		print "    ";
		print $str . " \\\\ \\hline";
		s/.*//;
	}

	
	#改行
	if(/\&br\;/){
		s/\&br\;/\\\\/g;
		print $_;
	}

	#参照
	elsif(/『『.*』』/){
		s/『『(.*?)』』/\\cite\{\1\}/g;
		#print $_;
	}
	
	
	#タイトル
	if(/^CENTER:/ && /\'\'/){
		s/^CENTER: *(.*)/\\title\{\1\}/;
		s/\'\'//g;
		#print $_ . "\n";
	}
	#参考文献
	if(!/^\(\(/ && $bibi != 0){
		print "\\end\{thebibliography\}\n";
		$bibi=0;
	}elsif(/\(\((.*?),\【(.*?)\】\)\)/ && $bibi == 0){
		print "\\begin{thebibliography}{999}\n";
		print "\\bibitem\{$2\}$1" . "\n";
		$bibi++;
	}elsif(/\(\((.*?),\【(.*?)\】\)\)/ && $bibi >= 1){
		print "\\bibitem\{$2\}$1" . "\n";
		}
	
	#参照
	elsif(/【【.*】】/){
		s/【【(.*?)】】/\\ref\{\1\}/g;
		print $_;
	}
	
	#ラベル
	elsif(/【.*】/){
		s/【(.*?)】/\\label\{\1\}/g;
		print $_;
	}
	elsif(/^\<\<\</){
		s/^\<\<\</\\begin\{verbatim\}/g;
		print $_;
	}
	elsif(/^\>\>\>/){
		s/^\>\>\>/\\end\{verbatim\}/g;
		print $_;
	
	#keyword
	elsif(/^\>(.*?)/){
		s/\>/\\keywords\n/;
		s/ /\\quad\n/g;
		print $_ . "\n";
	}		
	#学生番号
	elsif(/^学生番号\:/){
		s/^学生番号: *(.*)/\\学生番号\{\1\}/;
		print $_ . "\n";
	}
	#学生番号
	elsif(/^学生番号:/){
		s/^学生番号: *(.*)/\\学生番号\{\1\}/;
		print $_ . "\n";
	}
	
	#指導教員
	elsif(/^指導教員:/){
		s/^指導教員: *(.*)/\\指導教員\{\1 教授\}/;
		print $_ . "\n";
	}
	
	#指導教員
	elsif(/^指導教員:/){
		s/^指導教員: *(.*)/\\指導教員\{\1 教授\}/;
		print $_ . "\n";
	}
	#付録
	elsif(/----/){
		s/----/\\appendix\n/;
		print $_;
	}
	#著者
	elsif(/^名前:/){
		s/^名前: *(.*)/\\author\{\1\}/;
		print $_ . "\n";
	}
	elsif(/^名前:/){
		s/^名前:*(.*)/\\author\{\1\}/;
		print $_ . "\n";
	}
	#日付
	elsif(/^日付\:/){
		s/^日付\:\&_date;/\\date\{\\today\}/;
		print $_ . "\n";
	}
	#日付
	elsif(/^日付:/){
		s/^日付\:\&_date;/\\date\{\\today\}/;
		print $_ . "\n";
	}
	
	#年度
	elsif(/^年度:/){
		s/^年度\: *(.*)/\\年度\{\1\}/;
		print $_ . "\n";
	}
	#年度
	elsif(/^年度:/){
		s/^年度: *(.*)/\\年度\{\1\}/;
		print $_ . "\n";
	}	
	
	#所属
	elsif(/^所属:/){
		s/^所属\: *(.*)/\\所属\{\1\}/;
		print $_ . "\n";
	}
	
	#所属
	elsif(/^所属:/){
		s/^所属: *(.*)/\\所属\{\1\}/;
		print $_ . "\n";
	}
	
	#概要
	elsif(/^ / && $abst >= 1){
		s/^ //;
		print $_ . "\n";
		$abst++;
	}elsif(/^ /){
		if($abst == 0){
			print "\\maketitle\n";
			print "\\pagenumbering\{roman\}\n";
			print "\\begin\{abstract\}\n";
			s/^ //;
			print $_ . "\n";
			$abst++;
		}
	}
	#箇条書き
	elsif(!/^-/ && $ic > 0){ #先頭が-じゃない場合
		print "\\end\{itemize\}\n";
		$ic=0;
	}elsif(!/^\+/ && $ec > 0){ #先頭が+じゃない場合
		print "\\end\{enumerate\}\n";
		$ec=0;
	}elsif($ic >= 1){
		s/^\-/\\item /;
		print $_ . "\n"; #読み込んでる一行
		$ic++;
	}elsif(/^-/){
		if($ic == 0){
			print "\\begin\{itemize\}\n";
			s/^\-/\\item /;
			print $_ . "\n"; #読み込んでる一行
			$ic++;
		}
	}
	#begin{enumerate}
	elsif($ec >= 1){
		s/^\+/\\item /;
		print $_ . "\n";
		$ec++;
	}elsif(/^\+/){
		if($ec == 0){
			print "\\begin\{enumerate\}\n";
			s/^\+/\\item /;
			print $_ . "\n"; #読み込んでる一行
			$ec++;
		}	
	}
	#*の後の[]を消す
	#謝辞
	elsif(/^\*\~謝辞/ && /\[.*\]/){
		s/ \[.*\]//;
		s/^\*\~謝辞/\\acknowledgment/;
		print $_ . "\n";
	}elsif(/^\*\*\*/ && /\[.*\]/){
		$ssanc = $_;
		$ssanc =~ s/ \[.*\]//;
		$ssanc =~ s/^\*\*\* *(.*)$/\\subsubsection\{\1\} /;
		print $ssanc . "\n";
	}elsif(/^\*\*\*/){
		s/^\*\*\* *(.*)$/\\subsubsection\{\1\} /;
		print $_ . "\n";
	}elsif(/^\*\*/ && /\[.*\]/){
		$sanc = $_;
		$sanc =~ s/ \[.*\]//;
		$sanc =~ s/^\*\* *(.*)$/\\subsection\{\1\} /;
		print $sanc . "\n";
	}elsif(/^\*\*/){
		s/^\*\* *(.*)$/\\subsection\{\1\} /;
		print $_ . "\n";
	}elsif(/^\*\~/ && /\\label\{.*\}/ && /\[\#.*\]/){
		s/ \[\#.*]//;
		s/^\*\~ *(.*?)(\\label\{.*\})/\\chapter\{\1\} \2/;
		print $_ . "\n";
	}elsif(/^\*\~/ && /\[.*\]/){
		s/ \[.*\]//;
		s/^\*\~ *(.*?)$/\\chapter\{\1\}/g;
		print $_ . "\n";
	}elsif(/^\*\~/){
		s/ \[.*\]//;
		s/^\*\~ *(.*)/\\chapter\{\1\}/;
		print $_ . "\n";
	}elsif(/^\*/ && /\\label\{.*\}/ && /\[.*\]/){
		$anc = $_;
		$anc =~ s/ \[.*\]//;
		$anc =~ s/^\* *(.*?)(\\label\{.*\})/\\section\{\1\} \2/g;
		print $anc . "\n";
	}elsif(/^\*/ && /\[.*\]/){
		s/ \[.*\]//;
		s/^\* *(.*?)$/\\section\{\1\}/g;
		print $_ . "\n";
	}elsif(/^\*/){
		s/^\* *(.*?)$/\\section\{\1\} /g;
		print $_ . "\n";
	}
	#目次
	elsif(/^\#contents/){
		print "\\end\{abstract\}\n";
		s/^\#contents/\\tableofcontents/;
			print $_ . "\n";
		print "\\cleardoublepage\n";
		print "\\setcounter\{page\}\{1\}\n";
		print "\\pagenumbering\{arabic\}\n";
	}
	#ページ参照
	elsif(/》》(.*)《《/){
		s/》》(.*?)《《/\\pageref\{\1\}/g;
		print $_;
	}
	#コメント
	elsif(/\\\\/){
		s/\\\\/\%/;
		print $_;
	}
	#中央寄せ
	elsif(/CENTER: *(.*)/){
		s/CENTER: *(.*)$/\\begin\{center\}\n \1\n\\end\{center\}\n/;
		print $_;
	}
	#左
	elsif(/LEFT: *(.*)/){
		s/LEFT: *(.*)$/\\begin\{flushleft\}\n \1\n\\end\{flushleft\}\n/;
		print $_;
	}
	#右
	elsif(/RIGHT: *(.*)/){
		s/RIGHT: *(.*)$/\\begin\{flushright\}\n \1\n\\end\{flushright\}\n/;
		print $_;
	}
	elsif($_ eq ""){
		print "\n";
	}
		
	else{
		print $_ . "\n";
	}
	
}
print "\\end\{document\}\n";
>>>


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