提出せねばならない書類がWordフォーマットしか用意されてない,ということはそこまで珍しいことではありません.しかし,Wordなんて持ってないとか,Wordは思い通りに書けないとか言う人も多いはずです.また,数式が書きたいけどWordの数式はなぁ……なんて人もいるはず.
そんな時,TeXでこれらの書類を書くことができたら嬉しいことです.そんな方法をここに記してみます.勿論,財布に優しくフリーソフトのみで攻めてみます*1.
アイデアは単純です.書式のファイルを背景として取り込み,そこにあわせて文字出力.ただこれだけです.というわけで,以下その方法を実現してみましょう.
なお,このアイデアは斎藤君によります.多謝!なお,彼自身による書式が指定された書類を TeX で書く方法もどうぞ(アイデアは同様ですが,少し実装方法が違います.).
Windows*2,角藤さんによるW32TeX,dviout,GhostScript,GSView,Adobe Readerといった標準的な構成を想定します.W32TeXはgraphicxパッケージが使えることを確認しておきます.たぶん普通は使えるはずです.
それでは,始めてみましょう.
与えられたファイルを使いやすいPSファイルに変換します.
まずPostScriptプリンタドライバをインストールします.これは,ファイルに「印刷」することにより,psファイルを作り出せるものです*3.PSプリンタドライバのインストールと活用方法も参考にしてください.
AdobeからPPDファイルをダウンロード&解凍します.解凍したら,Adist5j.ppdというファイル以外は消してください.それと,やはりAdobeからユニバーサルインストーラを落とします.ダウンロードし終わったら,ダブルクリックでインストール開始.以下のようにしてください(バージョンにより少し変更がある可能性があります.).
インストールが終わったら,与えられたフォーマットファイルをPSに変換します.与えられたWordなりPDFなりをそのビューア*4で開き,印刷をします.プリンタを「Acrobat Distiller J」にし,「ファイルに出力」がチェックされてることを確認します.このまま印刷をすればPSファイルとして出力されますが,ここで1ページ1ファイルにしておく必要があります.というわけで,1ページ目を1.ps,2ページ目を2.psといったようにしてPSファイルを作っていってください.
いよいよTeXの出番です.psファイルと同じディレクトリにTeXファイルを作成しましょう.とりあえず,普通の雛形を作っておきます.
\DeclareFontShape{JY1}{mc}{m}{n}{<-> jis}{} \DeclareFontShape{JY1}{gt}{m}{n}{<-> jisg}{} \documentclass{jarticle} \begin{document} \end{document}
ここで,jsarticleは使わないほうが無難です*5.また,文字サイズを変更したい場合は,\documentclass[11pt]{jarticle}といったようにすればOKです.デフォルトは10ptです.なお,TeXの1ptとWordの1ptはちょっと違っていて,TeXの10ptは大体Wordの9.5ptに対応します.
graphicxをusepackageしておいてください.オプションにはdvipdfmでも入れておきましょう.
背景に画像を取り込むのは,TeX Q & Aで紹介されていたマクロを使います.次をプリアンブルに記述します.
\hoffset0mm \voffset0mm \makeatletter \let\@@shipout\shipout \def\shipout\vbox{\@@shipout\vbox\bgroup\afterassignment\insertBackGround\let\reserved@a=} \def\insertBackGround#1{#1% \iftombow \copy\BackGround\kern0pt \else \kern-1truein\moveleft1truein\copy\BackGround\kern1truein \fi} \newbox\BackGroundUnit \newbox\BackGround \def\@haikei#1{ \setbox\BackGroundUnit\hbox{\includegraphics*{#1}} \@tempdima\paperheight \advance\@tempdima\ht\BackGroundUnit\advance\@tempdima\dp\BackGroundUnit \setbox\BackGround\vbox to \@tempdima{ \@tempdima=\paperwidth\advance\@tempdima\wd\BackGroundUnit \leaders\hbox to\@tempdima{\leaders\copy\BackGroundUnit\hfil}\vfil } \wd\BackGround=0pt\ht\BackGround=0pt\dp\BackGround=0pt } \newcommand{\HAIKEI}{\@haikei{\thepage.ps}} \makeatother
\HAIKEIが画像を張り込むのに使う命令です.適切なタイミングで\HAIKEIと書いておくことで,そのページ以降に(ページ数).psという画像を背景として取り込みます.
但し,これだと背景画像が少しずれることがあるようです.その時は,\hoffset,\voffsetを適当にいじってください.
背景に取り込めれば,後は文字を調整するのみです.本格的な位置調整が必要な場合は,picture環境でねらい打ちなどが必要かもしれませんが,とりあえず今回は「枠のみが指定されていてそれにあわせる」という簡単な状況を想定します.
このような簡単な状況下では,文字を出力する位置,幅,高さを指定すれば十分なはずです.まずは,よけいな値を全て0にしておきます.
\headsep0pt \headheight0pt \topskip0pt \footheight0pt \footskip0pt \evensidemargin\oddsidemargin
但し,\headsep,\headheight,\footheight,\footskipはヘッダ,フッタを使わない場合のみです. そして,以下をページ毎に調整すればいいでしょう*6.
どれがどこを表すのかわからない人は,dviout 3.16.1以降を起動し,Help→Help TeXを選んで現れたdvioutから,Sizeをクリックして表示されるのを参考にしてください.
調整すればよい,といいましたが,そもそもこれらの値は一度決めたら変更してはならないものらしく,結構思い通りになりません.自分がした時に感じた注意点をいくつか.
\textheightはページが変わる前に変更しておかないとだめみたいですが,\oddsidemarginや\topmarginはページが変わった後に変更しておくべきみたいです.
\textwidthはプリアンブル以外で設定できません.横幅を変えたい場合は,minipage環境で囲みましょう.\begin{minipage}{160mm}とかすると,160mmの横幅になります.但し,これだと段落頭のインデントが入らないので,\parindent1zwしておきます.
少し行をとばしたい時は,\vspace{10mm}とかを使います.改ページは\newpageです.
例えば各ページ一番下に名前を入れる必要がある,という場合は,フッタなどを使うと便利です.例えば……
\makeatletter \newdimen\footleft \def\ps@mystyle{% \renewcommand{\@oddhead}{}% \renewcommand{\@evenhead}{\@oddpage}% \renewcommand{\@oddfoot}{\hbox to \footleft{\hfill 阿部 紀行}}% \renewcommand{\@evenfoot}{\@oddfoot} } \makeatother \pagestyle{mystyle}
として,\footskip,\footleft(上で勝手に定義したもの)を設定したりとか,です.
普通にコンパイルすれば,dvioutで見られるはずです.また,更にdvipdfmすれば,pdfファイルができます.dviだと,背景画像が取り込まれませんが*7,pdfなら背景画像も取り込まれるので,それだけ持ってれば十分です.