LaTeX Generator

ブラウザ上で動作するJavaScriptによる簡易LaTeXソースコード生成装置「LaTeX Generator」を作ってみた。
最初に作ったときは、JavaScriptで新たなHTMLページを生成していたが、Google Chromeでは、戻るボタンで戻ることが出来ず、
ページを毎回更新する必要があって、使い難かった為、新たにテキストエリアに生成する方針で作り直し中(現在、零~参まで完成)。
「LaTeX Generator」は、コードを書くコードなので、狭義には、メタプログラムの一種であるといえるかもしれないが、
どちらかといえば、「自動プログラミング」と言った方がより正確かも知れない。因みに、AIや人工知能の領域には及んでいない。

※テキストエリア内、及び、<pre>~</pre>タグ内は、
EdgeとIEでは、バックスラッシュになるが、
ChromeとFirefoxでは、半角の円記号で表示されるようだ…。

目次

零. LaTeX文書の生成 プログラム ソースコード
壱. 箇条書き(記号付き・番号付き・見出し付き) プログラム ソースコード
弐. 表の生成 プログラム ソースコード
参. Table Convertor プログラム ソースコード
肆. ギリシア文字の生成 プログラム ソースコード
伍. 数式コマンドの生成 プログラム ソースコード
陸. 行列・行列式の生成 プログラム ソースコード
漆. 縦ベクトルの生成 プログラム ソースコード
捌. 場合分けの生成 プログラム ソースコード
玖. 参考文献リスト プログラム ソースコード
拾. プログラム ソースコード




零. LaTeX文書の生成

クラスオプション:
クラスファイル(必須):
使用するパッケージ:









LaTeX文書のタイトル:
著者名:
日付:


(解説) クラスオプション、クラスファイル(必須)、タイトル、著者名、日付を入力し、
使用するパッケージのチェックボックスをチェックした後、
「生成する」ボタンを押すと、LaTeX文書が生成される。




壱. 箇条書き(記号付き・番号付き・見出し付き)

項目数:




(解説) 項目数を入力後、ラジオボタンで、
「記号付き箇条書き」か「番号付き箇条書き」か「見出し付き箇条書き」かを選択し、
「生成する」ボタンを押すと、それぞれ、itemize環境、enumerate環境、description環境の
ソースコードがその数だけ、生成される。




弐. 表の生成

行数: 列数:
セル:

(解説) 行数、列数を入力後、セルの左右中央揃えをラジオボタンで選択し、
「生成する」ボタンを押すと、表が生成される。




参. Table Convertor

入力欄(必須):
入力データ形式(必須):
列数(必須):
セル:

(解説) ファイルから、入力データをテキストエリアの入力欄にコピーして貼り付ける。
入力データの形式は、CSV(半角コンマ区切り)、SSV(半角スペース区切り)、
TSV(タブ区切り)にのみ対応している。即ち、入力データの行(レコード)は、
改行ごとに区切られ、列(カラム、フィールド)は、選択された上記のデリミタ(区切り文字)
によって、区切られる。但し、最終行の後は絶対に改行してはならない。
【サンプルデータ】

1,2,3
4,5,6
7,8,9
10,11,12




肆. ギリシア文字の生成

ギリシア文字(大文字):

ギリシア文字(小文字):


ギリシア文字(変体文字):

(解説) 各ギリシア文字(ギリシャ文字)のボタンを押すと、
該当するギリシア文字(ギリシャ文字)のLaTeXコマンドが生成される。




伍. 数式コマンドの生成


(解説) 数式を選択後、「生成する」ボタンを押すと、LaTeXの数式コマンドが生成される。
数式を選択する度に、改行とともに、LaTeXの数式コマンドが出力欄に加算されていく。




陸. 行列・行列式の生成

行数: 列数:

(解説) 行数、列数を入力後、「生成する」ボタンを押すと、行列・行列式が生成される。
但し、必ず数式モードで使用すること。また、変数名の「mord(モルトゥ)」は、 独逸(ドイツ)語で、「殺人」を意味するらしいが、
これは英単語「mode」の綴りの誤植ではなく、ここでは、「matrix」or「determinant」の略である。




漆. 縦ベクトルの生成

縦ベクトルの成分の数:

(解説) 縦ベクトルの成分の数を入力後、「生成する」ボタンを押すと、
縦ベクトルが生成される。但し、必ず数式モードで使用すること。
(ちな)みに、 「陸. 行列・行列式の生成」において、
「列数」を「1」としても、全く同様の結果が生成される。




捌. 場合分けの生成

分岐の数:
生成する環境(列数):

(解説) 分岐の数を入力し、array環境を使うか、case環境を使うか、
1列にするか、2列にするかを選択することが出来る。
選択したボタンを押すと、場合分けが生成される。
但し、必ず数式モードで使用すること。




玖. 参考文献リスト

項目数:

(解説) 項目数を入力後、「生成する」ボタンを押すと、thebibliography環境が生成される。




ソースコード

零. LaTeX文書の生成

HTMLサイド

<form><!-- getElementByIdを使用する為、name属性を指定しない -->
<table border="5" frame="void" rules="none">
  <tr>
    <td style="text-align:right">クラスオプション:</td>
    <td style="text-align:left"><input type="text" id="classoption"></td>
  </tr>
  <tr>
    <td style="text-align:right">クラスファイル(必須):</td>
    <td style="text-align:left"><input type="text" id="classfile"></td>
  </tr>
  <tr>
    <td style="text-align:right">使用するパッケージ:</td>
    <td style="text-align:left">
<label for="amsmath"><input type="checkbox" id="amsmath">amsmath (複雑な数式を使う)</label><br>
<label for="amssymb"><input type="checkbox" id="amssymb">amssymb (AMSFontsを使う)</label><br>
<label for="braket"><input type="checkbox" id="braket">braket (ブラケット記法を使う)</label><br>
<label for="color"><input type="checkbox" id="color">color (色を使う)</label><br>
<label for="colortbl"><input type="checkbox" id="colortbl">colortbl (色のついた表)</label><br>
<label for="graphicx"><input type="checkbox" id="graphicx">graphicx (グラフィックスを使う)</label><br>
<label for="latexsym"><input type="checkbox" id="latexsym">latexsym(latexsymで定義されている文字を使う)</label><br>
<label for="longtable"><input type="checkbox" id="longtable">longtable (ページをまたぐ表)</label><br>
<label for="multicol"><input type="checkbox" id="multicol">multicol (多段組にする)</label><br>
<label for="tabularx"><input type="checkbox" id="tabularx">tabularx (横幅の定まった表)</label><br>
<label for="ulem"><input type="checkbox" id="ulem">ulem (下線を引く)</label>
    </td>
  </tr>
  <tr>
    <td style="text-align:right">LaTeX文書のタイトル:</td>
    <td style="text-align:left"><input type="text" id="title"></td>
  </tr>
  <tr>
    <td style="text-align:right">著者名:</td>
    <td style="text-align:left"><input type="text" id="author"></td>
  </tr>
  <tr>
    <td style="text-align:right">日付:</td>
    <td style="text-align:left"><input type="text" id="date"></td>
  </tr>
  <tr>
    <td style="text-align:center" colspan="2"><hr>
<input type="button" value="生成する" onclick="LaTeXGenerator0()"><!-- 関数名は、「LaTeXGenerator0」 --><br>
<textarea id="output0" cols="50" rows="20"></textarea><!-- 出力のみなので、テキストエリア名は、「output0」 -->
    </td>
  </tr>
</table>
</form>

JavaScriptサイド

var input0; // テキストエリア「output0」へ入力する為の変数

var LaTeXGenerator0 = function(){
  var classoption = document.getElementById("classoption").value; // クラスオプションを取得
  var classfile = document.getElementById("classfile").value; // クラスファイルを取得

  var flagamsmath = document.getElementById("amsmath").checked; // amsmathパッケージ使用フラグ
  var flagamssymb = document.getElementById("amssymb").checked; // amssymbパッケージ使用フラグ
  var flagbraket = document.getElementById("braket").checked; // braketパッケージ使用フラグ
  var flagcolor = document.getElementById("color").checked; // colorパッケージ使用フラグ
  var flaggraphicx = document.getElementById("graphicx").checked; // graphicxパッケージ使用フラグ
  var flaglatexsym = document.getElementById("latexsym").checked; // latexsymパッケージ使用フラグ
  var flaglongtable = document.getElementById("longtable").checked; // longtableパッケージ使用フラグ
  var flagmulticol = document.getElementById("multicol").checked; // multicolパッケージ使用フラグ
  var flagulem = document.getElementById("ulem").checked; // ulemパッケージ使用フラグ

  var title = document.getElementById("title").value; // LaTeX文書のタイトルを取得
  var author = document.getElementById("author").value; // 著者名を取得
  var date = document.getElementById("date").value; // 日付を取得

  input0 = ""; // 出力用変数に空文字列を代入して初期化

  input0 += "\\documentclass[" + classoption + "]{" + classfile + "}\n\n";

  if (flagamsmath) {
    input0 += "\\usepackage{amsmath}\n";
  } // amsmathパッケージ使用フラグがONなら出力
  if (flagamssymb) {
    input0 += "\\usepackage{amssymb}\n";
  } // amssymbパッケージ使用フラグがONなら出力
  if (flagbraket) {
    input0 += "\\usepackage{braket}\n";
  } // braketパッケージ使用フラグがONなら出力
  if (flagcolor) {
    input0 += "\\usepackage[]{color}\n";
  } // colorパッケージ使用フラグがONなら出力
  if (flaggraphicx) {
    input0 += "\\usepackage[]{graphicx}\n";
  } // graphicxパッケージ使用フラグがONなら出力
  if (flaglatexsym) {
    input0 += "\\usepackage{latexsym}\n";
  } // latexsymパッケージ使用フラグがONなら出力
  if (flaglongtable) {
    input0 += "\\usepackage{longtable}\n";
  } // longtableパッケージ使用フラグがONなら出力
  if (flagmulticol) {
    input0 += "\\usepackage{multicol}\n";
  } // multicolパッケージ使用フラグがONなら出力
  if (flagulem) {
    input0 += "\\usepackage{ulem}\n";
  } // ulemパッケージ使用フラグがONなら出力

  input0 += "\n\\title{" + title + "}\n";
  input0 += "\\author{" + author + "}\n";
  input0 += "\\date{" + date + "}\n";

  input0 += "\n\\begin{document}\n";
  input0 += "\\maketitle\n\n\n\n";
  input0 += "\\end{document}\n";

  document.getElementById("output0").value = input0; // テキストエリア「output0」へ出力する
};



壱. 箇条書き(記号付き・番号付き・見出し付き)

HTMLサイド

<form><!-- getElementByIdを使用する為、name属性を指定しない -->
項目数:<input type="text" id="item"><br>
<label for="itemize"><input type="radio" name="listtype" id="itemize">記号付き箇条書き</label><br>
<label for="enumerate"><input type="radio" name="listtype" id="enumerate">番号付き箇条書き</label><br>
<label for="description"><input type="radio" name="listtype" id="description">見出し付き箇条書き</label><br>
<input type="button" value="生成する" onclick="LaTeXGenerator1()"><!-- 関数名は、「LaTeXGenerator1」 --><br>
<textarea id="output1" cols="50" rows="20"></textarea><!-- 出力のみなので、テキストエリア名は、「output1」 -->
</form>

JavaScriptサイド

var input1; // テキストエリア「output1」へ入力する為の変数

var LaTeXGenerator1 = function(){
  var listtype; // 【ラジオボタン】箇条書きのタイプを指定
  var item = parseInt(document.getElementById("item").value); // 項目数の値を取得

  if(isNaN(item)==true){ // 項目数の値が半角の数値ではない場合に
    alert("項目数は、半角の数値を入力して下さい"); // アラートを表示して
    return false; // 処理を中断する
  }

  // 【ラジオボタン】箇条書きのタイプを指定
  if(document.getElementById("itemize").checked == true){ listtype=0; } // 記号付き箇条書き
  if(document.getElementById("enumerate").checked == true){ listtype=1; } // 番号付き箇条書き
  if(document.getElementById("description").checked == true){ listtype=2; } // 見出し付き箇条書き

  input1 = ""; // 出力用変数に空文字列を代入して初期化

  switch(listtype){
    case 0: 
      input1 += "\\begin{itemize}\n";
      for(i=0;i<item;++i){
        input1 += " \\item \n";
      }
      input1 += "\\end{itemize}\n";
      break;
    case 1: 
      input1 += "\\begin{enumerate}\n";
      for(i=0;i<item;++i){
        input1 += " \\item \n";
      }
      input1 += "\\end{enumerate}\n";
      break;
    case 2: 
      input1 += "\\begin{description}\n";
      for(i=0;i<item;++i){
        input1 += " \\item[] \n";
      }
      input1 += "\\end{description}\n";
      break;
    default: break;
  }

  document.getElementById("output1").value = input1; // テキストエリア「output1」へ出力する
};



弐. 表の生成

HTMLサイド

<form><!-- getElementByIdを使用する為、name属性を指定しない -->
行数:<input type="text" id="tablerows" value="3">
列数:<input type="text" id="tablecols" value="3">
<br>
セル:
<label for="lcrleft"><input type="radio" name="lcr" id="lcrleft">左揃え</label>
<label for="lcrcenter">
  <input type="radio" name="lcr" id="lcrcenter" checked>中央揃え(センタリング)
</label><!-- デフォルト -->
<label for="lcrright"><input type="radio" name="lcr" id="lcrright">右揃え</label>
<br>
<input type="button" value="生成する" onclick="LaTeXGenerator2()"><!-- 関数名は、「LaTeXGenerator2」 --><br>
<textarea id="output2" cols="50" rows="20"></textarea><!-- 出力のみなので、テキストエリア名は、「output2」 -->
</form>

JavaScriptサイド

var input2; // テキストエリア「output2」へ入力する為の変数

var LaTeXGenerator2 = function(){
  var tr = 3; // 行数を表す変数trを初期値3と共に宣言
  var tc = 3; // 列数を表す変数tcを初期値3と共に宣言
  var lcr; // セルの左右中央揃えを表す変数lcrを宣言

  tr = parseInt(document.getElementById("tablerows").value); // 行数を取得して更新
  tc = parseInt(document.getElementById("tablecols").value); // 列数を取得して更新

  input2 = ""; // 出力用変数に空文字列を代入して初期化

  if(isNaN(tr)==true){ // 行数の値が半角の数値ではない場合に
    alert("行数は、半角の数値を入力して下さい"); // アラートを表示して
    return false; // 処理を中断する
  }

  if(isNaN(tc)==true){ // 列数の値が半角の数値ではない場合に
    alert("列数は、半角の数値を入力して下さい"); // アラートを表示して
    return false; // 処理を中断する
  }

  // セルの左右中央揃えを表す変数lcrの値をラジオボタンの選択で代入
  if(document.getElementById("lcrleft").checked == true){ lcr="l"; } // 左揃え
  if(document.getElementById("lcrcenter").checked == true){ lcr="c"; } // 中央揃え(センタリング)
  if(document.getElementById("lcrright").checked == true){ lcr="r"; } // 右揃え

  input2 += "\\begin{center}\n";
  input2 += "\\begin{tabular}{|";
  for(i=0;i<tc;++i){
    input2 += lcr + "|";
  }
  input2 += "} \\hline\n";

  for(i=0;i<tr;++i){
    for(j=0;j<tc-1;++j){
      input2 += " \& ";
    }
    input2 += " \\\\ \\hline\n";
  }

  input2 += "\\end{tabular}\n";
  input2 += "\\end{center}\n";

  document.getElementById("output2").value = input2; // テキストエリア「output2」へ出力する
};



参. Table Convertor

HTMLサイド

<form><!-- getElementByIdを使用する為、name属性を指定しない -->
<table border="1">
  <tr>
    <td style="text-align:right;">入力欄(必須):</td>
    <td style="text-align:left;"><textarea id="input3" cols="50" rows="20"></textarea></td>
  </tr>

  <tr>
    <td style="text-align:right;">入力データ形式(必須):</td>
    <td style="text-align:left;">
      <label for="csv"><input type="radio" name="separator" id="csv" checked>半角コンマ</label>
      <label for="ssv"><input type="radio" name="separator" id="ssv">半角スペース</label>
      <label for="tsv"><input type="radio" name="separator" id="tsv">タブ</label>
    </td>
  </tr>

<!-- 「program2」と重複しないようにするため、idを「tablecols」→「table2cols」に変更 -->
  <tr>
    <td style="text-align:right;">列数(必須):</td>
    <td style="text-align:left;"><input type="text" id="table2cols" value="3"></td>
  </tr>

<!-- 「program2」と重複しないようにするため、idとnameを「lcr」→「lcr2」に変更 -->
  <tr>
    <td style="text-align:right;">セル:</td>
    <td style="text-align:left;">
      <label for="lcr2left"><input type="radio" name="lcr2" id="lcr2left">左揃え</label>
      <label for="lcr2center">
        <input type="radio" name="lcr2" id="lcr2center" checked>中央揃え(センタリング)
      </label><!-- デフォルト -->
      <label for="lcr2right"><input type="radio" name="lcr2" id="lcr2right">右揃え</label>
    </td>
  </tr>

  <tr>
    <td style="text-align:center" colspan="2">
      <input type="button" style="width:200px;height:40px" value="上記の条件で生成する" onclick="LaTeXGenerator3()">
      <!-- 関数名は、「LaTeXGenerator3」 -->
    </td>
  </tr>

  <tr>
    <td style="text-align:center;" colspan="2"><hr></td>
  </tr>

  <tr>
    <td style="text-align:center" colspan="2">
      <textarea id="output3" cols="80" rows="20"></textarea><!-- 出力のみなので、テキストエリア名は、「output3」 -->
    </td>
  </tr>
</table>
</form>

JavaScriptサイド

var input3; // テキストエリア「input3」から入力されたデータを読み込む為の変数
var output3; // テキストエリア「output3」へ出力する為の変数

var LaTeXGenerator3 = function(){
  var cols = parseInt(document.getElementById("table2cols").value);
  // 列数を表す変数colsを宣言し、テキストフィールド:「table2cols」の欄から値を取得して整数化して代入
  var lcr; // セルの左右中央揃えを表す変数lcrを宣言

  var record; // 改行文字で読み込んだデータを各行に分解して代入するための配列を宣言
  var i, j; // ループ変数を宣言
  var separator; // 入力データ形式である、区切り文字を表す変数を宣言
  var eachdata; // 各行に分解されたデータをさらに区切り文字で分解して各値を代入するための配列を宣言

  input3 = ""; // データを読み込み用変数に空文字列を代入して初期化(念の為)
  input3 = document.getElementById("input3").value; // テキストエリアから読み込む

  // 改行を\nに統一
  input3 = input3.replace("\r\n", "\n");
  input3 = input3.replace("\r", "\n");

  record = input3.split("\n"); // 読み込んだデータを改行文字で各行に分解して、配列recordに代入
  rows = record.length; // 行数を算出して、行数を表す変数rowsを仮の値から更新

  // ラジオボタンで選択された入力データ形式に対応する区切り文字を、区切り文字を表す変数separatorに代入
  if(document.getElementById("csv").checked == true){ separator = ","; } // CSV形式
  if(document.getElementById("ssv").checked == true){ separator = " "; } // SSV形式
  if(document.getElementById("tsv").checked == true){ separator = "\t"; } // TSV形式

  if(isNaN(cols)==true){ // 列数を表す変数colsの値が半角の数値ではない場合に
    alert("列数は、半角の数値を入力して下さい"); // アラートを表示して
    return false; // 処理を中断する
  }

  // セルの左右中央揃えを表す変数lcrの値をラジオボタンの選択で代入
  if(document.getElementById("lcr2left").checked == true){ lcr="l"; } // 左揃え
  if(document.getElementById("lcr2center").checked == true){ lcr="c"; } // 中央揃え(センタリング)
  if(document.getElementById("lcr2right").checked == true){ lcr="r"; } // 右揃え

  output3 = ""; // 出力用変数に空文字列を代入して初期化

  output3 += "\\begin{center}\n";
  output3 += "\\begin{tabular}{|";

  for(i = 0; i < cols; i++){
    output3 += lcr + "|";
  }

  output3 += "} \\hline\n";

  for(i = 0; i < rows; i++){
    record[i] = record[i].replace(RegExp(separator,"g"), " & ");
    output3 += record[i] + " \\\\ \\hline\n";
  }

  output3 += "\\end{tabular}\n";
  output3 += "\\end{center}";

  document.getElementById("output3").value = output3; // テキストエリア「output3」へ出力する
};



肆. ギリシア文字の生成

HTMLサイド

<form><!-- getElementByIdを使用する為、name属性を指定しない -->
ギリシア文字(大文字):<br>
<input type="button" value="&Gamma;" style="width:40px;height:40px" onClick="LaTeXGamma()">
<input type="button" value="&Delta;" style="width:40px;height:40px" onClick="LaTeXDelta()">
<input type="button" value="&Theta;" style="width:40px;height:40px" onClick="LaTeXTheta()">
<input type="button" value="&Lambda;" style="width:40px;height:40px" onClick="LaTeXLambda()">
<input type="button" value="&Xi;" style="width:40px;height:40px" onClick="LaTeXXi()">
<input type="button" value="&Pi;" style="width:40px;height:40px" onClick="LaTeXPi()">
<input type="button" value="&Sigma;" style="width:40px;height:40px" onClick="LaTeXSigma()">
<input type="button" value="&Upsilon;" style="width:40px;height:40px" onClick="LaTeXUpsilon()">
<input type="button" value="&Phi;" style="width:40px;height:40px" onClick="LaTeXPhi()">
<input type="button" value="&Psi;" style="width:40px;height:40px" onClick="LaTeXPsi()">
<input type="button" value="&Omega;" style="width:40px;height:40px" onClick="LaTeXOmega()">
<br>
ギリシア文字(小文字):<br>
<input type="button" value="&alpha;" style="width:40px;height:40px" onClick="LaTeXalpha()">
<input type="button" value="&beta;" style="width:40px;height:40px" onClick="LaTeXbeta()">
<input type="button" value="&gamma;" style="width:40px;height:40px" onClick="LaTeXgamma()">
<input type="button" value="&delta;" style="width:40px;height:40px" onClick="LaTeXdelta()">
<input type="button" value="&epsilon;" style="width:40px;height:40px" onClick="LaTeXepsilon()">
<input type="button" value="&zeta;" style="width:40px;height:40px" onClick="LaTeXzeta()">
<input type="button" value="&eta;" style="width:40px;height:40px" onClick="LaTeXeta()">
<input type="button" value="&theta;" style="width:40px;height:40px" onClick="LaTeXtheta()">
<input type="button" value="&iota;" style="width:40px;height:40px" onClick="LaTeXiota()">
<input type="button" value="&kappa;" style="width:40px;height:40px" onClick="LaTeXkappa()">
<input type="button" value="&lambda;" style="width:40px;height:40px" onClick="LaTeXlambda()">
<input type="button" value="&mu;" style="width:40px;height:40px" onClick="LaTeXmu()">
<br>
<input type="button" value="&nu;" style="width:40px;height:40px" onClick="LaTeXnu()">
<input type="button" value="&xi;" style="width:40px;height:40px" onClick="LaTeXxi()">
<input type="button" value="&omicron;" style="width:40px;height:40px" onClick="LaTeXomicron()">
<input type="button" value="&pi;" style="width:40px;height:40px" onClick="LaTeXpi()">
<input type="button" value="&rho;" style="width:40px;height:40px" onClick="LaTeXrho()">
<input type="button" value="&sigma;" style="width:40px;height:40px" onClick="LaTeXsigma()">
<input type="button" value="&tau;" style="width:40px;height:40px" onClick="LaTeXtau()">
<input type="button" value="&upsilon;" style="width:40px;height:40px" onClick="LaTeXupsilon()">
<input type="button" value="&phi;" style="width:40px;height:40px" onClick="LaTeXphi()">
<input type="button" value="&chi;" style="width:40px;height:40px" onClick="LaTeXchi()">
<input type="button" value="&psi;" style="width:40px;height:40px" onClick="LaTeXpsi()">
<input type="button" value="&omega;" style="width:40px;height:40px" onClick="LaTeXomega()">
<br>
ギリシア文字(変体文字):<br>
<input type="button" value="&epsilon;" style="width:40px;height:40px" onClick="LaTeXvarepsilon()">
<input type="button" value="&thetasym;" style="width:40px;height:40px" onClick="LaTeXvartheta()">
<input type="button" value="&piv;" style="width:40px;height:40px" onClick="LaTeXvarpi()">
<input type="button" value="&rho;" style="width:40px;height:40px" onClick="LaTeXvarrho()">
<input type="button" value="&sigmaf;" style="width:40px;height:40px" onClick="LaTeXvarsigma()">
<input type="button" value="&phi;" style="width:40px;height:40px" onClick="LaTeXvarphi()">
<br>
<textarea id="output4" rows="20" cols="50"></textarea>
</form>

JavaScriptサイド

var LaTeXGamma = function(){ document.getElementById("output4").value += "\\Gamma "; };
var LaTeXDelta = function(){ document.getElementById("output4").value += "\\Delta "; };
var LaTeXTheta = function(){ document.getElementById("output4").value += "\\Theta "; };
var LaTeXLambda = function(){ document.getElementById("output4").value += "\\Lambda "; };
var LaTeXXi = function(){ document.getElementById("output4").value += "\\Xi "; };
var LaTeXPi = function(){ document.getElementById("output4").value += "\\Pi "; };
var LaTeXSigma = function(){ document.getElementById("output4").value += "\\Sigma "; };
var LaTeXUpsilon = function(){ document.getElementById("output4").value += "\\Upsilon "; };
var LaTeXPhi = function(){ document.getElementById("output4").value += "\\Phi "; };
var LaTeXPsi = function(){ document.getElementById("output4").value += "\\Psi "; };
var LaTeXOmega = function(){ document.getElementById("output4").value += "\\Omega "; };

var LaTeXalpha = function(){ document.getElementById("output4").value += "\\alpha "; };
var LaTeXbeta = function(){ document.getElementById("output4").value += "\\beta "; };
var LaTeXgamma = function(){ document.getElementById("output4").value += "\\gamma "; };
var LaTeXdelta = function(){ document.getElementById("output4").value += "\\delta "; };
var LaTeXepsilon = function(){ document.getElementById("output4").value += "\\epsilon "; };
var LaTeXzeta = function(){ document.getElementById("output4").value += "\\zeta "; };
var LaTeXeta = function(){ document.getElementById("output4").value += "\\eta "; };
var LaTeXtheta = function(){ document.getElementById("output4").value += "\\theta "; };
var LaTeXiota = function(){ document.getElementById("output4").value += "\\iota "; };
var LaTeXkappa = function(){ document.getElementById("output4").value += "\\kappa "; };
var LaTeXlambda = function(){ document.getElementById("output4").value += "\\lambda "; };
var LaTeXmu = function(){ document.getElementById("output4").value += "\\mu "; };
var LaTeXnu = function(){ document.getElementById("output4").value += "\\nu "; };
var LaTeXxi = function(){ document.getElementById("output4").value += "\\xi "; };
var LaTeXomicron = function(){ document.getElementById("output4").value += "\\omicron "; };
var LaTeXpi = function(){ document.getElementById("output4").value += "\\pi "; };
var LaTeXrho = function(){ document.getElementById("output4").value += "\\rho "; };
var LaTeXsigma = function(){ document.getElementById("output4").value += "\\sigma "; };
var LaTeXtau = function(){ document.getElementById("output4").value += "\\tau "; };
var LaTeXupsilon = function(){ document.getElementById("output4").value += "\\upsilon "; };
var LaTeXphi = function(){ document.getElementById("output4").value += "\\phi "; };
var LaTeXchi = function(){ document.getElementById("output4").value += "\\chi "; };
var LaTeXpsi = function(){ document.getElementById("output4").value += "\\psi "; };
var LaTeXomega = function(){ document.getElementById("output4").value += "\\omega "; };

var LaTeXvarepsilon = function(){ document.getElementById("output4").value += "\\varepsilon "; };
var LaTeXvartheta = function(){ document.getElementById("output4").value += "\\vartheta "; };
var LaTeXvarpi = function(){ document.getElementById("output4").value += "\\varpi "; };
var LaTeXvarrho = function(){ document.getElementById("output4").value += "\\varrho "; };
var LaTeXvarsigma = function(){ document.getElementById("output4").value += "\\varsigma "; };
var LaTeXvarphi = function(){ document.getElementById("output4").value += "\\varphi "; };



伍. 数式コマンドの生成

HTMLサイド

<form><!-- getElementByIdを使用する為、name属性を指定しない -->
<select id="input5">
  <option>数式を選択して下さい</option>
  <option value="$^{}$">累乗(インライン数式)</option>
  <option value="$_{}$">添字(インライン数式)</option>
  <option value="&#92;[  &#92;]">ディスプレイ数式</option>
  <option value="&#92;left(  &#92;right)">小括弧(自動調整)</option>
  <option value="&#92;left&#92;{  &#92;right&#92;}">中括弧(自動調整)</option>
  <option value="&#92;left[  &#92;right]">大括弧(自動調整)</option>
  <option value="&#92;left|  &#92;right|">絶対値(自動調整)</option>
  <option value="&#92;sqrt{}">平方根</option>
  <option value="&#92;frac{}{}">分数</option>
  <option value="&#92;frac{d}{d}">微分</option>
  <option value="&#92;frac{&#92;partial }{&#92;partial }">偏微分</option>
  <option value="&#92;sum_{}^{}">総和記号</option>
  <option value="&#92;prod_{}^{}">総積記号</option>
  <option value="&#92;int_{}^{}">積分記号</option>
</select>
<input type="button" value="生成する" onclick="LaTeXGenerator5()"><!-- 関数名は、「LaTeXGenerator5」 --><br>
<textarea id="output5" cols="50" rows="20"></textarea><!-- 出力のみなので、テキストエリア名は、「output5」 -->
</form>

JavaScriptサイド

var input5; // テキストエリア「output5」へ入力する為の変数

var LaTeXGenerator5 = function(){
  input5 = ""; // 出力用変数に空文字列を代入して初期化
  input5 = document.getElementById("input5").value;
  // LaTeXの数式コマンドをテキストフィールドから取得して、変数に代入
  document.getElementById("output5").value += input5 + "\n"; // テキストエリア「output5」へ出力する
};



陸. 行列・行列式の生成

HTMLサイド

<form><!-- getElementByIdを使用する為、name属性を指定しない -->
行数:<input type="text" id="mordrows" value="3">
列数:<input type="text" id="mordcols" value="3">
<br>
<label for="matrix1"><input type="radio" name="mord" id="matrix1" checked>行列(丸括弧)</label>
<label for="matrix2"><input type="radio" name="mord" id="matrix2">行列(鍵括弧)</label>
<label for="determinant"><input type="radio" name="mord" id="determinant">行列式(縦棒)</label>
<input type="button" value="生成する" onclick="LaTeXGenerator6()"><!-- 関数名は、「LaTeXGenerator6」 --><br>
<textarea id="output6" cols="50" rows="20"></textarea><!-- 出力のみなので、テキストエリア名は、「output6」 -->
</form>

JavaScriptサイド

var input6; // テキストエリア「output6」へ入力する為の変数

var LaTeXGenerator6 = function(){
  var mordr = 3; // 行数を表す変数mrを初期値3と共に宣言
  var mordc = 3; // 列数を表す変数mcを初期値3と共に宣言
  var mord; // 行列・行列式の括弧を選択する変数mordを宣言

  mordr = parseInt(document.getElementById("mordrows").value); // 行数を取得して更新
  mordc = parseInt(document.getElementById("mordcols").value); // 列数を取得して更新

  if(document.getElementById("matrix1").checked == true){ mord=0; } // 行列(丸括弧)
  if(document.getElementById("matrix2").checked == true){ mord=1; } // 行列(鍵括弧)
  if(document.getElementById("determinant").checked == true){ mord=2; } // 行列式(縦棒)

  input6 = ""; // 出力用変数に空文字列を代入して初期化

  if(isNaN(mordr)==true){ // 行数の値が半角の数値ではない場合に
    alert("行数は、半角の数値を入力して下さい"); // アラートを表示して
    return false; // 処理を中断する
  }

  if(isNaN(mordc)==true){ // 列数の値が半角の数値ではない場合に
    alert("列数は、半角の数値を入力して下さい"); // アラートを表示して
    return false; // 処理を中断する
  }

  switch(mord){
    case 0: // 行列(丸括弧)の場合
      input6 += "\\left(\n"; // 行列開始の可変丸括弧
      break;
    case 1: // 行列(鍵括弧)の場合
      input6 += "\\left[\n"; // 行列開始の可変鍵括弧
      break;
    case 2: // 行列式(縦棒)の場合
      input6 += "\\left|\n"; // 行列式開始の可変縦棒
      break;
    default: break;
  }

  input6 += "\\begin{array}{"; // array環境開始

  for(i=0;i<mordc;++i){
    input6 += "c";
  }
  input6 += "}\n";

  for(i=0;i<mordr-1;++i){
    for(j=0;j<mordc-1;++j){
      input6 += " \& ";
    }
    input6 += " \\\\\n";
  }

  for(j=0;j<mordc-1;++j){   // 最後の行だけは改行記号を含まないので、別に出力。
    input6 += " \& ";
  }

  input6 += "\n\\end{array}\n"; // 改行してarray環境終了して更に改行

  switch(mord){
    case 0: // 行列(丸括弧)の場合
      input6 += "\\right)\n"; // 行列終了の可変丸括弧
      break;
    case 1: // 行列(鍵括弧)の場合
      input6 += "\\right]\n"; // 行列終了の可変鍵括弧
      break;
    case 2: // 行列式(縦棒)の場合
      input6 += "\\right|\n"; // 行列式終了の可変縦棒
      break;
    default: break;
  }

  document.getElementById("output6").value = input6; // テキストエリア「output6」へ出力する
};



漆. 縦ベクトルの生成

HTMLサイド

<form><!-- getElementByIdを使用する為、name属性を指定しない -->
縦ベクトルの成分の数:<input type="text" id="components"><br>
<label for="vector1"><input type="radio" name="vectorbracket" id="vector1" checked>縦ベクトル(丸括弧)</label>
<label for="vector2"><input type="radio" name="vectorbracket" id="vector2">縦ベクトル(鍵括弧)</label>
<input type="button" value="生成する" onclick="LaTeXGenerator7()"><br>
<textarea id="output7" cols="50" rows="20"></textarea><!-- 出力のみなので、テキストエリア名は、「output7」 -->
</form>

JavaScriptサイド

var input7; // テキストエリア「output7」へ入力する為の変数

var LaTeXGenerator7 = function(){
  var vc = parseInt(document.getElementById("components").value);
  // 縦ベクトルの成分の数の値を取得して、整数値化する
  var vb; // 縦ベクトルの括弧を選択する変数vbを宣言

  input7 = ""; // 出力用変数に空文字列を代入して初期化

  if(isNaN(vc)==true){ // 縦ベクトルの成分の数が半角の数値ではない場合に
    alert("縦ベクトルの成分の数は、半角の数値を入力して下さい"); // アラートを表示して
    return false; // 処理を中断する
  }

  if(document.getElementById("vector1").checked == true){ vb=0; } // 縦ベクトル(丸括弧)
  if(document.getElementById("vector2").checked == true){ vb=1; } // 縦ベクトル(鍵括弧)

  switch(vb){
    case 0: // 縦ベクトル(丸括弧)の場合
      input7 += "\\left(\n"; // 縦ベクトル開始の可変丸括弧
      break;
    case 1: // 縦ベクトル(鍵括弧)の場合
      input7 += "\\left[\n"; // 縦ベクトル開始の可変鍵括弧
      break;
    default: break;
  }

  input7 += "\\begin{array}";
  input7 += "{c}\n";

  for(i=0;i<vc-1;++i){
    input7 += " \\\\\n";
  }

  input7 += "\n"; // 改行

  input7 += "\\end{array}\n";

  switch(vb){
    case 0: // 縦ベクトル(丸括弧)の場合
      input7 += "\\right)\n"; // 縦ベクトル終了の可変丸括弧
      break;
    case 1: // 縦ベクトル(鍵括弧)の場合
      input7 += "\\right]\n"; // 縦ベクトル終了の可変鍵括弧
      break;
    default: break;
  }

  document.getElementById("output7").value = input7; // テキストエリア「output7」へ出力する
};



捌. 場合分けの生成

HTMLサイド

<form><!-- getElementByIdを使用する為、name属性を指定しない -->
<table border="1">
  <tr>
    <td style="text-align:right"">分岐の数:</td>
    <td style="text-align:left"><input type="text" id="branches"></td>
  </tr>

  <tr>
    <td style="text-align:right"">生成する環境(列数):</td>
    <td style="text-align:left">
      <label for="array1">
        <input type="radio" name="arraycase" id="array1" value="array1">array環境(1列)<br>
      </label>
      <label for="array2">
        <input type="radio" name="arraycase" id="array2" value="array2">array環境(2列)<br>
      </label>
      <label for="case1">
        <input type="radio" name="arraycase" id="case1" value="case1">case環境(1列)<br>
      </label>
      <label for="case2">
        <input type="radio" name="arraycase" id="case2" value="case2">case環境(2列)
      </label>
    </td>
  </tr>

  <tr>
    <td style="text-align:center" colspan="2">
      <input type="button" style="width:200px;height:40px" value="上記の条件で生成する" onclick="LaTeXGenerator8()">
      <!-- 関数名は、「LaTeXGenerator8」 -->
    </td>
  </tr>

  <tr>
    <td style="text-align:center;" colspan="2"><hr></td>
  </tr>

  <tr>
    <td style="text-align:center" colspan="2">
      <textarea id="output8" cols="50" rows="20"></textarea><!-- 出力のみなので、テキストエリア名は、「output8」 -->
    </td>
  </tr>
</table>
</form>

JavaScriptサイド

var input8; // テキストエリア「output8」へ入力する為の変数

var LaTeXGenerator8 = function(){
  var cb = parseInt(document.getElementById("branches").value);
  // 分岐の数の値を取得して、整数値化する
  var arraycase; // 生成する環境(列数)を選択する変数acを宣言

  input8 = ""; // 出力用変数に空文字列を代入して初期化

  if(isNaN(cb)==true){ // 分岐の数が半角の数値ではない場合に
    alert("分岐の数は、半角の数値を入力して下さい"); // アラートを表示して
    return false; // 処理を中断する
  }

  if(document.getElementById("array1").checked == true){ arraycase = 0; } // array環境(1列)
  if(document.getElementById("array2").checked == true){ arraycase = 1; } // array環境(2列)
  if(document.getElementById("case1").checked == true){ arraycase = 2; } // case環境(1列)
  if(document.getElementById("case2").checked == true){ arraycase = 3; } // case環境(2列)

  input8 += "\\left\\{\n";

  switch(arraycase){
    case 0: // array環境(1列)の場合
      input8 += "\\begin{array}{c}\n"; // array環境(1列)開始

      for(i=0;i<cb-1;++i){
        input8 += " \\\\\n"; // バックスラッシュ2個、改行
      }

      input8 += "\n"; // 改行
      input8 += "\\end{array}\n"; // array環境(1列)終了
      break;
    case 1: // array環境(2列)の場合
      input8 += "\\begin{array}{cc}\n"; // array環境(2列)開始

      for(i=0;i<cb-1;++i){
        input8 += " &  \\\\\n"; // &#38;ではなく&、バックスラッシュ2個、改行
      }

      input8 += " & \n";    // &#38;ではなく&、改行
      input8 += "\\end{array}\n"; // array環境(2列)終了
      break;
    case 2: // case環境(1列)の場合
      input8 += "\\begin{cases}\n"; // case環境(1列)開始

      for(i=0;i<cb-1;++i){
        input8 += " \\\\\n"; // バックスラッシュ2個、改行
      }

      input8 += "\n"; // 改行
      input8 += "\\end{cases}\n"; // case環境(1列)終了
      break;
    case 3: // case環境(2列)の場合
      input8 += "\\begin{cases}\n"; // case環境(2列)開始

      for(i=0;i<cb-1;++i){
        input8 += " &  \\\\\n"; // &#38;ではなく&、バックスラッシュ2個、改行
      }

      input8 += " & \n";    // &#38;ではなく&、改行
      input8 += "\\end{cases}\n"; // case環境(2列)終了
      break;
    default: break;
  }

  input8 += "\\right.";

  document.getElementById("output8").value = input8; // テキストエリア「output8」へ出力する
};



玖. 参考文献リスト

HTMLサイド

<form><!-- getElementByIdを使用する為、name属性を指定しない -->
項目数:<input type="text" id="thebibliography">
<input type="button" value="生成する" onclick="LaTeXGenerator9()"><br>
<textarea id="output9" cols="50" rows="20"></textarea><!-- 出力のみなので、テキストエリア名は、「output9」 -->
</form>

JavaScriptサイド

var input9; // テキストエリア「output9」へ入力する為の変数

var LaTeXGenerator9 = function(){
  var bibnum = parseInt(document.getElementById("thebibliography").value);

  input9 = ""; // 出力用変数に空文字列を代入して初期化

  if(isNaN(bibnum)==true){ // 項目数が半角の数値ではない場合に
    alert("項目数は、半角の数値を入力して下さい"); // アラートを表示して
    return false; // 処理を中断する
  }

  input9 += "\\begin{thebibliography}{99}\n";
  
  for(i=0;i<bibnum;++i){
    input9 += " \\bibitem{} \n";
  }

  input9 += "\\end{thebibliography}\n";

  document.getElementById("output9").value = input9; // テキストエリア「output9」へ出力する
};



拾.

HTMLサイド


JavaScriptサイド

var input10; // テキストエリア「output10」へ入力する為の変数





Shadow Academy トップへ戻る

inserted by FC2 system