charset=euc-jp
http://ffeck.tsuchigumo.com/
\begin{verbatim}
テ
キ
ス
ト
\end{verbatim}
とすれば空白と改行はテキストの通りになるのですが、
これではplatexの機能はほとんど使えません。
文字サイズくらいは指定したいのです。
plain2というソフトでlatex化する方法もあります。 しかし結構凝った変換をするので意外な結果になったりします。
ほかにも問題があります。
LaTeXのデフォルトのマージンが広すぎるのでエディターで 半角80桁改行で作った文章が収まらず、出力が違ってしまうのです。
こうしたことについて、多分、ちゃんと対応しているオプション などが既にあるとは思ってたのですが詳しいマニュアルを持っていない ので、応急対策でマージンと空白と改行を処理したシェルスクリプト のメニューを作りました。
後で本屋でLATEXの本を見ていたらallttというパッケージのことが 書いてあって、verbatimのように使えて、しかも中でLaTeXコマンド が有効だとありました。
LaTeXを意識しないでエディターで作った文章を手軽に見たままに 近いレイアウトでLaTeXを利用して印刷するということに少しは利点 があると思うのでallttも使うように変えてシェルスクリプトのメニュー にまとめてみました。
【設定】
以下のシェルスクリプト部分を切り取り、t という名前のファイルを作ります。 1文字のファイルが気に入らないならaliasを使ってください。 chmodコマンドで実行可能にします。 自分のディレクトリに ~/bin というディレクトリを作って t を移します。 このディレクトリにはパスを通しておきます。
LaTeXで特殊な意味を持つ文字を変換するために、 下記のsedスクリプト(1)を切り取ってfortex.sedというファイルを作ります。 これも自分のディレクトリの下の ~/binにおきます。
また、sedスクリプト(2)も切り取ってhan2zen.sedというファイルを作り、 ~/binにおきます。
使うエディターをemacsに設定してあります。 好みに合わせて変更してください。
【使い方】
ktermなどでtと打ち込むとメニューがでます。 tと間をあけて数字やアルファベットなどを打つと対応したものが起動します。 メニューに{file}がついているものは適切なファイル名をつけて打ち込みます。
● t _ i _ textfile名
と打ち込めば、allttを使わずプレーンテキストファイルをTeXファイル に処理します。 80桁が入るようにマージンを調整したプリアンブルを先頭につけて、 タブを空白に展開して 半角空白(3個)を全角(1個)にして、 特殊記号をTeX化して、 改行に\\をつけます。
エディター(emacs)が起動しますから、プリアンブルを変更したり、 TeXコマンドを付け加えてください。 tempfor.texというファイルを出力します。
次は(t _8)です。
● t _ 8
と打ち込めば、platexでtempfor.texをコンパイルします。
次は(t _ 9)または (t _ b) です。
● t _ 9 (Vine.2.1.5の場合) または
t _ b (Red Hat 7.2, 7.3, 8.0 など)
と打ち込めば、プレビュアーが起動します。印刷もできます。
● t _ o _ textfile名
これは(t _ i)や(t _ g)や(t _ j)の前におこなう処理です。 いつも必要というわけではありません。
半角の数字とアルファベットと空白を全角に変換します。 行の幅を微調整する必要があるかもしれないのでエディター(emacs) が起動しますから修正してください。
半角と全角が混在してるテキストだとpLaTeXでは縦が少しズレてしまいます。 これはverbatimやallttを使用しても同じです。 tabular環境を使う方法(後述)もありますが手軽にすますなら 全角に変換したほうが簡単みたいです。
半角文字の割合が多い行があるのに、この前処理をしない場合には右マージン を越えたり、さらには行末が次に送られたりしてズレができてしまいます。 このような条件で全角化処理をしないなら、プリアンブルで文字サイズを 小さく設定するか、sidemarginやtextwidthを調整する必要があるかもしれません。 sidemarginなどはマイナスの値も指定できるようです。
※このメニューはsedを使いますが、LINUXディストリビューションによっては sedの日本語化が不充分なものがあります。うまくいかない場合は 日本語化の確かなディストリビューションのsedをコピーして使って下さい。 Vine-2.1.5のsedは使えることを確認してあります。Redhat-7.3やRedhat-8.0の sedではうまくいきません。
※Redhat-7.2やRedhat-7.3やRedhat-8.0のpLaTeXでは日本語を使用するには
設定ファイルを修正する必要があります。
参考:『UNIX USER』2003.1/SOFT BANK
表というほどではないのですが、値段表のような項目が2つのリストを 書くことはよくあります。ところが半角と全角が混ざっていると、縦が ずれてしまいます。全角化(t _ o)すれば、ほぼそろうのですが、記号な どは間のびしないように全角化してませんので、記号が含まれたり、 半角空白の割合が違う行があると少し、ずれてしまいます。 この場合は、TeX化したtempfor.texにtabular環境を書き加えます。
例えば
(1)パン 100円\\
(2)本 1200円\\
というTeX化されたリストならば、
\begin{tabular}{lr}
(1)パン & 100円\\
(2)本 & 1200円\\
\end{tabular}
とすれば縦がそろいます。
alltt(つまりt _ j)でTeX化した場合はtempfor.texの中で
\end{alltt}で中断してからtabular環境を書いて、
また\begin{alltt}を書き込みして再開するという手続きをとる
ことになります。
● t _ g _ textfile名
と打ち込むと、縦書きでプレーンテキストをtex化します。
● t _ j _ textfile名
と打ち込めば、マージンを調整したプリアンブルをつけて
プレーンテキストをallttでtex化します。
エディター(emacs)が起動するのでプリアンブルを好みに変えて
ください。必要に応じてTeXコマンドを付け加えてください。
tempfor.texというファイルを出力します。
あとはメニューiと同様に(t _ 8)(t _ 9)または(t _ b)です。
(allttを使う場合は\や{や}は文字として処理できないようです。)
● t _ l
iやjでTeX化したファイルをもとに戻します。完全ではありません。 プリアンブルや\\をとるだけです。 tempfor.txtを出力します。
● t _ m_ textfile名
全角の空白を3つの半角に変換します。
● t _ n_ textfile名
半角空白をスペースを出力する~に変換します。
● t _ k_ textfile名
タブを空白に展開します。
▲ほかのメニューはTeXと直接関係ないものです。
以下がシェルスクリプトです。
#!/bin/bash
###################################################################
# menu to use platex2e on plain text :by SATOU Shintarou,2001.1.17#
###################################################################
editor=emacs
if [ $# != 0 ]
then
bangou=$1
fname=$2
case $bangou in
3)
tr -d '\r' < $fname | nkf -e > ${fname}.unix
echo ${fname}.unix
echo -e '\033[31mを出力しました。\033[00m'
exit
;;
4)
awk '{print $0 "\r"}' $fname | nkf -s > ${fname}.dos
echo ${fname}.dos
echo -e '\033[31mを出力しました。\033[00m'
exit
;;
5)
nkf -j $fname > ${fname}.jis
echo ${fname}.jis
echo -e '\033[31mを出力しました。\033[00m'
exit
;;
8)
platex tempfor.tex
echo -e '\033[31mうまくできたら次は(t 9) or (t b)です。\033[00m'
exit
;;
9)
xdvi tempfor.dvi
;;
0)
$editor ~/bin/t
;;
b)
pxdvi +nomakepk tempfor.dvi
;;
g)
echo '% このtexファイルを編集してください'>tempfor.tex
echo '%'>>tempfor.tex
echo '\documentclass[12pt,a4paper]{tarticle}'>>tempfor.tex
echo '\pagestyle{empty}'>>tempfor.tex
echo '\setlength{\topmargin}{0mm}'>>tempfor.tex
echo '\setlength{\topskip}{0mm}'>>tempfor.tex
echo '\setlength{\footskip}{20mm}'>>tempfor.tex
echo '\setlength{\oddsidemargin}{0mm}'>>tempfor.tex
echo '\setlength{\evensidemargin}{0mm}'>>tempfor.tex
echo '\setlength{\textwidth}{164mm}'>>tempfor.tex
echo '\setlength{\ybaselineshift}{-0.5mm}'>>tempfor.tex
echo '\begin{document}'>>tempfor.tex
echo '\noindent'>>tempfor.tex
cp $fname ${fname}.bak
expand ${fname}.bak > $fname
sed -f ./bin/fortex.sed $fname |awk '{print $0 "\\\\"}' >>tempfor.tex
echo '\end{document}'>>tempfor.tex
$editor tempfor.tex
echo -e '\033[31mうまくできたら次は(t 8)です。\033[00m'
exit
;;
h)
echo '3 漢字と改行をunix式に変換 '
echo '4 漢字と改行をdos式 '
echo '5 漢字をjis式へ'
echo '8 texのコンパイル '
echo '9 texのプレビューと印刷 '
echo '0 メニューのedit'
echo 'b texのプレビューと印刷 '
echo 'g テキストをtexに変換(縦) '
echo 'i テキストをtexに変換'
echo 'j テキストをそのままtexに変換 '
echo 'k タブを空白に変換 '
echo 'l texをテキストへ変換'
echo 'm 全角空白を3半角へ変換 '
echo 'M 3半角空白を全角へ変換 '
echo 'n 半角空白を~に変換 '
echo 'o 英数字を全角へ変換 '
exit
;;
i)
echo '% このtexファイルを編集してください'>tempfor.tex
echo '%'>>tempfor.tex
echo '\documentclass[12pt,a4paper]{jarticle}'>>tempfor.tex
echo '\pagestyle{plain}'>>tempfor.tex
echo '\setlength{\topmargin}{-20.0mm}'>>tempfor.tex
echo '\setlength{\topskip}{0mm}'>>tempfor.tex
echo '\setlength{\footskip}{30mm}'>>tempfor.tex
echo '\setlength{\oddsidemargin}{0mm}'>>tempfor.tex
echo '\setlength{\evensidemargin}{0mm}'>>tempfor.tex
echo '\setlength{\textheight}{220mm}'>>tempfor.tex
echo '\setlength{\textwidth}{184mm}'>>tempfor.tex
echo '\setlength{\ybaselineshift}{-0.0mm}'>>tempfor.tex
echo '\begin{document}'>>tempfor.tex
echo '\noindent'>>tempfor.tex
cp $fname ${fname}.bak
expand ${fname}.bak > $fname
sed -f ./bin/fortex.sed $fname |awk '{print $0 "\\\\"}' >>tempfor.tex
echo '\end{document}'>>tempfor.tex
$editor tempfor.tex
echo -e '\033[31mうまくできたら次は(t 8)です。\033[00m'
exit
;;
j)
echo '% このtexファイルのパラメーターを編集してください'>tempfor.tex
echo '%'>>tempfor.tex
echo '\documentclass[12pt,a4paper]{jarticle}'>>tempfor.tex
echo '\pagestyle{bothstyle}'>>tempfor.tex
echo '\setlength{\topmargin}{0mm}'>>tempfor.tex
echo '\setlength{\topskip}{0mm}'>>tempfor.tex
echo '\setlength{\footskip}{20mm}'>>tempfor.tex
echo '\setlength{\oddsidemargin}{0mm}'>>tempfor.tex
echo '\setlength{\evensidemargin}{0mm}'>>tempfor.tex
echo '\setlength{\textwidth}{184mm}'>>tempfor.tex
echo '\usepackage{alltt}'>>tempfor.tex
echo '\begin{document}'>>tempfor.tex
echo '\begin{alltt}'>>tempfor.tex
cat $fname >>tempfor.tex
echo '\end{alltt}'>>tempfor.tex
echo '\end{document}'>>tempfor.tex
$editor tempfor.tex
echo -e '\033[31mうまくできたら次は(t 8)\033[00m'
exit
;;
k)
expand $fname > ${fname}.tb2spc
echo ${fname}.tb2spc
echo -e '\033[31mを出力しました。\033[00m'
exit
;;
l)
awk ' /\\\\/ {gsub("\\\\", "");print}' tempfor.tex > tempfor.txt
$editor tempfor.txt
;;
m)
sed -e 's/ / /g' $fname >${fname}.zn2hn-s
echo ${fname}.zn2hn-s
echo -e '\033[31mを出力しました。\033[00m'
exit
;;
M)
sed -e 's/ / /g' $fname >${fname}.hn2zn-s
echo ${fname}.hn2zn-s
echo -e '\033[31mを出力しました。\033[00m'
exit
;;
n)
tr ' ' '~' < $fname >${fname}.spc2tld
echo ${fname}.spc2tld
echo -e '\033[31mを出力しました。\033[00m'
exit
;;
o)
sed -f ./bin/han2zen.sed $fname > ${fname}.hn2zn
$editor ${fname}.hn2zn
echo ${fname}.hn2zn
echo -e '\033[31mを出力しました。\033[00m'
exit
;;
esac
fi
echo -e '\033[07m'
echo ' t [symbol] [file] enter '
echo
echo 'symbol:'
echo '3 {file} dos_to_unix '
echo '4 {file} unix_to_dos '
echo '5 {file} jis '
echo '8 platex '
echo '9 xdvi (old) '
echo '0 edit this menu '
echo 'b pxdvi +nomakepk(73) '
echo 'g {file} plain2tex(tate) '
echo 'h japanese help '
echo 'i {file} plain_to_tex '
echo 'j {file} to_tex(alltt) '
echo 'k {file} expand '
echo 'l tex_to_plain '
echo 'm {file} space(zen to 3han) '
echo 'M {file} space(3han to zen) '
echo 'n {file}space(han to ~) '
echo 'o {file} han_to_zen '
echo -e '\033[00m'
以下がsedスクリプト(1)です。
#TEXで特殊文字として作用する文字などをそのまま印刷するための変換
#
s/ / /g
s/\\/\\textbackslash /g
s/\%/\\%/g
s/\$/\\$/g
s/\#/\\#/g
s/\&/\\&/g
s/\{/\\{/g
s/\}/\\}/g
s/\^/\\textasciicircum /g
s/\_/\\_/g
s/\~/\\textasciitilde /g
s/|/\\textbar /g
s/\\textless /g
s/>/\\textgreater /g
以下がsedスクリプト(2)です
#半角から全角へ
s/ / /g
y/0123456789/0123456789/
y/ABCDEFGHIJKLM/ABCDEFGHIJKLM/
y/NOPQRSTUVWXYZ/NOPQRSTUVWXYZ/
y/abcdefghijklm/abcdefghijklm/
y/nopqrstuvwxyz/nopqrstuvwxyz/