
		Frequently Asked Questions (FAQ.JIS)

  ユーザの方々から頂いた質問・要望とそれに対する答えを、できるだけコンパクト
  にまとめてみました。お役に立つと良いのですが。 質問、要望、バグ等に関する
  連絡は、天野一男 (kamano@po.iijnet.or.jp) までお気軽にどうぞ。

-------------------------------------------------------------------------------
● 質問：インストレーション
src2tex と src2latex のインストールの仕方を教えてください。
● 答え
詳しくは src2tex.c.ps に書いてありますが、簡単に説明しますと、単に
	make
	make install
とやるだけです。この結果、
	src2tex
	src2latex
が出来上がります。後は、これらをコマンドサーチパスの通っている適当なディレクト
リにコピーするだけです。
ＤＯＳユーザの方は、gcc がインストールされている場合には、ただ１行
	make dos
とだけ入力して下さい。
	src2tex.exe
	src2ltex.exe
が作られます。Gcc が無い場合でも、Makefile にちょっと手を加えれば、コンパイル
できるはずです。
※ それから、ＵＮＩＸユーザの方は、もしよろしかったら、
	make report
とやって、システム情報をわれわれにお送り頂けないでしょうか？ 今後の開発の参考に
させて頂きたいと思います。
-------------------------------------------------------------------------------
● 質問：使い方
src2tex と src2latex の使い方を教えてください。
● 答え
詳しくは src2tex.c.ps に書いてありますが、使い方はいたって簡単です。例えば、
ソースファイル popgen.red から TeX ファイル popgen.red.tex を作るには、
	src2tex popgen.red
とやるだけです。src2latex の使い方も、同様です。
-------------------------------------------------------------------------------
● 質問：TeX, ASCII JTeX, NTT JTeX の違い
src2tex は、英語版 TeX、ASCII JTeX、NTT JTeX のどれにも対応しているのでしょ
うか？
● 答え：
src2tex と src2latex は、すべての TeX に対応するようなコードを生成するように、
作られています（作ったつもりです  (^^;)  )。このような対応は、初めに数十行の
\if 文を出力することによって行われます。従って、src2tex の出力の一部分を切り貼
りする場合には、最初の \if 文もコピーして下さい。
-------------------------------------------------------------------------------
● 質問：漢字の取扱い
コメントを漢字で書くと、src2tex と src2latex がうまく動作しません。バグではない
でしょうか？
● 答え
src2tex と src2latex は EUC 漢字コードだけを受け付けます。それ以外の漢字コード
をお使いの場合には、パッケージに添付されているシェルスクリプト src2tex2dvi,
src2tex2ps, src2latex2dvi, src2latex2ps をご利用下さい。ただし、環境によっては
これらのシェルスクリプトを「修正する必要があります。」使用する前に、一度内容を
確認してみて下さい。とくに、漢字コンバータ nkf があなたの漢字環境に矛盾していな
いかどうかを、チェックしてください。
-------------------------------------------------------------------------------
● 質問： src2tex2dvi, src2tex2ps, src2latex2dvi, src2latex2ps
パッケージに入っている、シェルスクリプト src2tex2dvi, src2tex2ps, src2latex2dvi
と src2latex2ps がうまく動きません。どうしてでしょうか？
● 答え
これらのシェルスクリプトの動作には、src2tex と src2latex 以外に、
	nkf, jtex, jlatex, dvi2ps, psnup
という比較的有名なフリーソフトウェアが必要です。システム管理者に、これらのソフ
トウェアのインストールを依頼してみて下さい。また、jtex, jlatex, dvi2ps の設定環
境に応じて、これらのシェルスクリプトを若干書き替える必要があります。ご注意下さ
い。詳しくは、DVI ファイル src2tex2dvi.dvi, src2tex2ps.dvi, src2latex2dvi.dvi
と src2latex2ps.dvi をお読み下さい。
-------------------------------------------------------------------------------
● 質問：数式の書き方
どうやってコメントエリアに数式を書いたらよいのでしょうか？ 具体的に、実例を挙げ
て教えて下さい。
● 答え
具体例については、hanoi.c, newton.c, simpson.c, popgen.red をご参照下さい。これ
らのソースファイルに対して、
	src2tex2ps hanoi.c newton.c simpson.c, popgen.red
とすると、４つのポストスクリプトファイル hanoi.c.ps, newton.c.ps, simpson.c.ps,
popgen.red.ps が出来ます。ソースファイルとポストスクリプトファイルを見比べれば
数式の書き方がお分かり頂けると思います。基本的には、TeX と同じ様に書けば ＯＫ 
です。
たとえば、BASIC + plain TeX の場合ですと、次のようにして数式を書きます。
例１：	REM $x^2+y^2=z^2$
例２：	REM $$F(x)=\int_a^x f(t)\,dt$$ 
例３：	10 REM {\ Heaviside function $H(x)$ is defined by
	20 REM $$
	30 REM	H(x)=\cases{	1 &if $x \ge 0$ \cr
	40 REM			0 &if $x  <  0$ \cr}
	50 REM $$
	60 REM }
例３で   {\  という記述が不自然ですが、これは src2tex に TeX モードの始まりであ
ることを知らせるために、どうしても必要です。というのは、src2tex は  {  の直後に
TeX の escape sequence があると、TeX モードの始まりであると解釈するからです。従
って、{\ は {\null や {\hbox{} や {\rm などでも代用できます。詳しくは、src2tex.
c.ps をご覧下さい。
-------------------------------------------------------------------------------
● 質問：図・ 絵の取扱い
図や絵を、コメントエリアに張り付けるには、どのような方法があるのでしょうか？
● 答え
さまざまな方法があります。TeX に関する書籍をお読みになった方が良いと思います。
ご参考までに、私がよく使う方法を紹介しておきます。
例１：	{\special{epsfile=psfigure1.eps hoffset=60 voffset=50 ...}}
例２：	{\begin{figure} ...... \end{figure}}
C + plain TeX の場合の具体例でよろしければ、hanoi.c, newton.c, simpson.c をご覧
下さい。その他の環境での書式は、これらから類推できると思います。LaTeX ユーザの
方は、例えば
	奥村晴彦著「LaTeX 入門」−美文書作成のポイント− 技術評論社
をご一読されると良いと思います。
-------------------------------------------------------------------------------
● 質問：マクロの利用
自分で作ったマクロを読み込みたいのですが、どうしたらよいのでしょうか？
● 答え
コメントエリアの中で、
	{\input <ファイル名>}
と記述してください。具体的に言うと、たとえば LISP のソースの中で、mymacro.tex 
というファイルを取り込みたい場合には、
	; {\input mymacro.tex}
というように書きます。このテクニックは、src2tex.c を書くとき、効果的に使われて
います。参考にしてみて下さい。
-------------------------------------------------------------------------------
● 質問：LaTeX スタイルファイルの指定方法
src2latex のデフォルト・スタイルファイル以外のスタイルファイルを使いたいのです
が、それは可能でしょうか？
● 答え
はい、可能です。documentstyle escape sequence を使います。例えば、
	\documentstyle[twocolumn,12pt]{jarticle}
を指定したければ、
	{\documentstyle[twocolumn,12pt]{jarticle}}
という一行だけからなるコメント行を、ソースファイルの第１行目に書いて下さい。具
体的に言うと、PASCAL の場合ならば、一番初めに
	(* {\documentstyle[twocolumn,12pt]{jarticle}} *)
と書けば ＯＫ です。ただし、COBOL の場合には、第１行目にコメントを書けないこと
もあるので、COBOL の場合に限り第２か第３行目でもＯＫです。
-------------------------------------------------------------------------------
● 質問：字体の選択
コメントエリア内でも、プログラムエリアで使われているのと同じ typewriter type の
字体を使いたいのですが、どのようにしたら良いのでしょうか？
● 答え
src2tex escape sequence を使います。例えば、コメントエリアの中でも、typewriter
font を使いたいのであれば、
	{\src2tex{texfont=tt}}
という src2tex escape sequence だけを含むコメント行を、そのコメントエリアの直前
に挿入して下さい。例えば、FORTRAN の場合ですと、
	* {\src2tex{texfont=tt}}
という一行を挿入すると、それ以後コメントエリアで使われる字体は、typewriter type
になります。この設定をもとに戻すには、
	{\src2tex{texfont=rm}}
という escape sequence だけからなるコメント行を、書き入れます。例えば、C の場合
ですと、
	/* {\src2tex{texfont=rm}} */
とすればよいわけです。
尚、src2tex escape sequence の詳しい使い方は、src2tex.c.ps で説明されています。
-------------------------------------------------------------------------------
● 質問：言語の判定
src2tex と src2latex はどのようにして、言語の判定を行っているのでしょうか？
● 答え
まずファイル名のサフィックスを見て、以下のように判定します：
	.tex, .txt, .doc	=>	TEXT
	.bas, .vb		=>	BASIC
	.c, .cpp, .vc		=>	C, C++, OBJECTIVE-C
	.cbl, .cob		=>	COBOL
	.f, .for		=>	FORTRAN
	.html			=>	HTML
	.java			=>	JAVA
	.lsp, .sc, .scm, .el	=>	LISP, SCHEME
	makefile		=>	MAKE
	.p, .pas, .tp		=>	PASCAL
	.pl, .prl		=>	PERL
	.sh, .csh, .ksh		=>	SHELL
	.tcl, .tk		=>	TCL/TK
	.asi, .asir, .asr	=>	ASIR
	.mac, .max		=>	MACSYMA, MAXIMA
	.map, .mpl		=>	MAPLE
	.mat, .mma		=>	MATHEMATICA
	.ml, .mtlb, .oct	=>	MATLAB, OCTAVE
	.mu			=	MuPAD
	.red, .rdc		=>	REDUCE
これで判定出来なかったとき、あるいは初めからファイル名が与えられていなかった場
合には、予約語による判定を試みます。それでも判定不能なときには、ただの TEXT だ
と考えます。
※ もし、言語の自動判定が誤動作するソースファイルがみつかりましたら、是非
	kamano@po.iijnet.or.jp
まで送って下さい。そのようなソースは、自動判定ルーチンの改良に必要不可欠だと、
われわれは考えています。ご協力をお願い致します。
-------------------------------------------------------------------------------
● 質問：コメントエリアの右端の揃え方。
FORTRAN のプログラムの中で
	* ----------------------------- *
	*         SUBROUTINE1           *
	*       1'st pde solver         *
	* ----------------------------- *
などと書くと、右端の * が、プロポーショナル印字の影響でずれてしまう事が、ときど
きあります。どうしたら良いでしょうか？
● 答え
TeX の \hfill コマンドを使って、
	* {\hrulefill} *
	* {\hfill SUBROUTINE1 \hfill} *
	* {\hfill 1'st pde solver \hfill} *
	* {\hrulefill} *
といった様に書くことをおすすめします。もっと凝って、例えば plainTeX の場合なら
ば、src2tex.s2t ファイルの中であらかじめ
	\settabs 3\columns
などと定義しておき、
	* {\vskip-1\baselineskip\+ \phantom{\tt *}\hrulefill
	*	& {\tt *} & \cr}
	* {\vskip-1\baselineskip\+ \phantom{\tt *}\hfill SUBROUTINE1\hfill
	*	& {\tt *} & \cr}
	* {\vskip-1\baselineskip\+ \phantom{\tt *}\hfill 1'st pde solver\hfill
	*	& {\tt *} & \cr}
	* {\vskip-1\baselineskip\+ \phantom{\tt *}\hrulefill
	*	& {\tt *} & \cr}
といった TeXnique を用いることも出来ます。ご存知のように、TeX にはかなりの自由
度があるので、上記の方法以外にも色々なやり方がある筈です。
-------------------------------------------------------------------------------
● 質問： src2tex.s2t と src2latex.s2t の置き場所。
src2tex.s2t と src2latex.s2t は何処に置いておけば良いのでしょうか？
● 答え
plain TeX の input-file  *.tex  および LaTeX の style-file  *.sty  と同じ様に
扱えます。どの directory をどのような順序で探すかは、あなたの TeX 環境に依存し
ます。TeX, LaTeX のマニュアルを参照して下さい。
-------------------------------------------------------------------------------
● 質問：行番号、行数制御、二段組、四段組あるいは六段組の出力
src2tex で行番号の付加、１頁あたりの行数の制限、２段組、４段組あるいは６段組の
出力は可能ですか？
● 答え
はい、シェルスクリプト src2tex2ps, src2latex2ps を使えば可能です。例えば、
    ☆ ＴｅＸで、２段組、行番号付き、２０行／１頁
    ☆ ＬａＴｅＸで、４段組、行番号付き、３５行／１頁
の出力を得るには、それぞれ
    src2tex2ps -twocolumns -pagelength 20  <filenames>
    src2latex2ps -fourcolumns -pagelength 35  <filenames>
とします。ただし、「-pagelength 0」とすると、行番号は付きますが、１頁に印刷され
る行数のコントロールは TeX に委ねられます。残念ながら、これらのシェルスクリプト
は、そのままではうまく動かないかもしれません。各人の UNIX 環境に合うように「書
き換えてお使い下さい。」詳しくは、DVI ファイル src2tex2ps.dvi と src2latex2ps
.dvi をお読み下さい。
-------------------------------------------------------------------------------
● 質問：特定の単語または文字列を特別な字体にする方法
Src2tex に、特定のキーワードや関数名をボールド体あるいは特別な字体で表現させた
いのですが、そのような事は可能でしょうか？
● 答え
Src2tex にはそのような機能はありませんが、src2tex の出力する TeX ファイルを、
sed 等を用いて
	s/}<keyword>{/}{\\bf <keyword>}{/g
というような具合にして、
	}<keyword>{	===>	}{\bf <keyword>}{
と置換してみて下さい。ここで、src2tex はプログラムエリアの
<keyword> を、必ず
	}<keyword>{
という文字列に翻訳するので、この性質を利用しました。Src2tex は、このような置換
にも耐え得るTeX コードを生成します。ご自分で、自分好みの sed スクリプトを書いて
みてはいかがでしょうか。Ｃ言語で関数名だけをボールド体で印字したい等の、ちょっ
と複雑な変換を行いたいときには、perl スクリプトの利用をお薦めします。
参考までに、Ｃ の予約語をボールド体にしたいときに我々が使っている shell スクリ
プト c2tex と sed スクリプト c2tex.sed を、パッケージに入れておきました。
-------------------------------------------------------------------------------
● 質問：言語の自動判定機能について。
言語の自動判定で苦労している様ですが、自動判定機能は必要ないのでは？
● 答え
私天野は、次のような場合に言語の自動判定が、必要だと考えています。
(1) src2tex あるいは src2latex が、ファイル名を与えられずに、
    標準入力からデータを受け取った場合
(2) *.m のように、複数の言語で共通して同じ filename-suffix が
    用いられている時
(3) filename-suffix が厳格に規定されていない言語のソースを変
    換しなければならない場合
もちろん、自動判定など諦めて、src2tex が  -f77  とか  -maple  などといったオプ
ションを理解できるようにする方が、遥かに簡単なことは分かっています。しかし、プ
ログラミングの難しさを避けるために、様々なオプションを設けることは、私天野の美
意識と信条に反します。それは、プログラマの怠慢さのツケを、ユーザに払わせている
様なものだからです。
偏屈なヤツとお思いでしょう  (^^) . でも、これは私天野の信念です。ご理解頂けると
嬉しいのですが・・・
