背景
大学に勤務していると、折々に以下のような「研究業績調書」なるものを用意する必要が生じます。
| 論文名称 | 著者 | 発行年月日 | 雑誌名 | 概要 |
|---|---|---|---|---|
| 1. くじらの卵を求めて | ○△□ | 9999年9月 | 大海原の夢社 | くじらの卵についての探求記録について述べた一般向け書籍. |
| 2. くじらの卵の発見 | ○△□ | 9999年9月 | 全宇宙夢想的生物学会誌, Vol.99, No.99, pp.2999-3000 | くじらの卵についての記述論文. |
ところが、某大学の指定様式は、とても面倒な様式になっていました。
- Microsoft Word で縦方向の罫線だけが指定されていて、横方向の罫線が存在しませんでした。そのため、各頁の2番目以後の項目については、手動で改行を挿入して垂直方向の開始位置を揃える必要がありました。
- 論文名称の冒頭に 1,2,... と手動でナンバリングしなければならない。
特に垂直方向の位置を揃える作業に悶絶1したので、Microsoft Wordで様式が指定された文書をLaTeXで記述する方法を調べてみました。結論としては、科研費LaTeXで用いられている方法と良く似ているのですが、以下のような手順になりました。
- Microsoft Word文書をEPSファイルに変換2
- EPSファイルをwallpaper.styを使って、LaTeX文書の背景に貼る。
- 適当に場所を調整してLaTeX文書を作成する。今回の様式の場合はlongtable環境が適切。
Microsoft Word文書をEPSファイルに変換
最初に、何らかの方法でMicrosoft Word文書をPDFファイルに変換します。筆者の利用しているOffice2010では、「ファイル」→「名前をつけて保存」→「ファイルの種類」でPDFを選択、という手順で変換できました。
次に、pdfcropコマンドを使って、PDFファイルの余白部分を削除します。
pdfcrop given-msword-based.pdf mywallpaper.pdf
次に、pdftopsコマンドを使って、PDFファイルをEPSファイルに変換します。
pdftops -eps mywallpaper.pdf mywallpaper.eps
なお、pdfcropコマンドおよびpdftopsコマンドは、Debian GNU/Linuxでは、texlive-extra-utilsパッケージに含まれていますので、適宜にインストールしておきます。
EPSファイルの様式を背景とするLaTeX文書の作成
様式中のテキストの入るべき場所と、LaTeXが想定しているテキスト範囲を適当に一致させた文書を作成する必要があります。今回は背景として貼り込む様式の最外周の罫線を、そのままテキスト範囲と一致させました。サンプルは、以下の通りです3。
\documentclass[9pt]{jsarticle}
% 今回は背景として貼り込む様式の最外周の罫線を、そのままテキスト範囲と一致させた。
\addtolength{\topmargin}{-5.5mm}
\addtolength{\textheight}{25mm}
\addtolength{\fullwidth}{25mm}
\setlength{\oddsidemargin}{-12mm}
\usepackage[dvipdfmx]{graphicx}
\usepackage{wallpaper}
\usepackage{longtable}
\usepackage[normalem]{ulem}
% 今回は複数ページからなる書類で、各ページにページ番号を付番しなければならない様式。
% 以下は、そのページ番号を指定箇所に出力させるための独自のページスタイルの定義。
\makeatletter
\def\ps@myheadings{%
\ps@headings
\def\@evenfoot{}%
\def\@oddfoot{}%
\def\@evenhead{%
\if@mparswitch \hss \fi%
\hbox to \fullwidth{No.~\thepage\hfil}%
\if@mparswitch\else \hss \fi}%
\def\@oddhead{%
\hbox to \fullwidth{\hfil No.~\thepage}\hss}%
}
\makeatother
\pagestyle{myheadings}
% 業績をナンバリングするためのカウンタの定義
\newcounter{journal}
\setcounter{journal}{0}
\renewcommand{\thejournal}[0]{\stepcounter{journal}\arabic{journal}.}
\begin{document}
\CenterWallPaper{0.9}{mywallpaper.eps}
\renewcommand\arraystretch{1.5}
\begin{longtable}{p{4mm}@{~}p{35mm}p{14mm}p{20mm}p{36mm}p{72mm}}
\rule[0mm]{0mm}{32mm} \\% 様式の固定部分をスキップ.
\endhead
\thejournal
& くじらの卵を求めて
& ○△□
& 9999年9月
& 大海原の夢社
& くじらの卵についての探求記録について述べた一般向け書籍.\\
\thejournal
& くじらの卵の発見
& ○△□
& 9999年9月
& 全宇宙夢想的生物学会誌, Vol.~99, No.~99, pp.~2999--3000
& くじらの卵についての記述論文.\\
\end{longtable}
\end{document}
別バージョン:書き込み不可のPDFの様式しか存在しなかった場合
もともと紙の様式しか存在しなかったらしく、それをスキャンしたPDFの様式しか存在しない書類に、かなりしっかりと文章を書く必要に迫られました。まず、ページ毎に様式を分解します。
% pdftk format.pdf cat 1 output p1.pdf
% pdftk format.pdf cat 2 output p2.pdf
次に、以下のような原稿を用意します。上述の例とはいくつかの点で異なっています。まず、geometryパッケージを使って、天地左右のマージンを0にリセットしています。これは場所の調整をやりやすくするためです。また、1ページ目と2ページ目で書き込む場所が違っていたので、テキストの書き込み位置は愚直にvspaceコマンドとhspaceコマンドで調整しました。
また、pdfファイルの寸法を自動抽出して背景として貼り込むために、mediabbパッケージも使っています。
\documentclass[11pt]{jsarticle}
\usepackage{mediabb}
\usepackage[margin=0mm,dvipdfm]{geometry}
\usepackage{wallpaper}
\begin{document}
\pagestyle{empty}
\ThisULCornerWallPaper{0.9}{p1.pdf}
\vspace*{100mm}
\hspace*{65mm}
\begin{minipage}[t]{95mm}
ここはサンプル1ページ目.
\end{minipage}
\clearpage
\ThisULCornerWallPaper{0.9}{p2.pdf}
\vspace*{32mm}
\hspace*{65mm}
\begin{minipage}[t]{95mm}
ここはサンプル2ページ目.
\end{minipage}
\end{document}