ふること

多分、古典文学について語ります

Wordで漢文を打つ方法・その1

実は私、20年ほど前に塾講師をやっていて、古文漢文のテキスト作成をしてたんですね。
で、WORDで入試問題の入力とかしてました(今にして思うと、入試問題を入力してテキストに使うのって著作権的にどうだったんだろう?)。
自分でオリジナル問題作ったりもしてたよ!w 問題以外のテキストはオリジナルだったしね!

 

たまたま最近twitterで、漢文のテキストを入力する方法みたいなのが話題に上がったので、「昔Wordで漢文をバリバリ打ってましたよ!」という話をし、ついでに古いファイルを漁ってみたら、過去の漢文入力専用のマクロつきファイルも出てきて、今のWordでも動いたので、一通りやり方とかマクロ内容とかをまとめて公開しようと思います。

ちなみにうちのWordは「Office Home and Business Premium」だから最新?のはず…

 

1,漢文入力時の課題とは?

漢文入力については、ややこしいのは訓点や振仮名送り仮名が入り交じる所だと思います。

訓点だけなら、本文フォントに比して小さいフォント設定にし、「下付き文字」の設定にすればそれらしくなります。

また、振仮名送り仮名は「ルビ」機能を使って実現できます。

しかし、訓点を独立したフォントで打つと、行送りが狂うと訓点だけが次の行に行っちゃったりするんですよね。

また、再読文字という厄介なものがあって、文字の左右に振仮名と送り仮名を配置しなければいけないようなものもあります。

こういうものをどうやって打つのか?という場合、色々方法は考えられますが、たとえば

  • 本文用の行と振仮名・送り仮名・訓点用の行を設けてフォントを小さくし、スペースを大量に入れて位置調整をする(あるいは振仮名・送り仮名だけ専用の行を使って、訓点は下付き文字という手もあるかな)
  • テキストボックスで配置する

といったことも考えられるかも。

 

しかしやはり、問題は、テキストとして作る時、たとえば「傍線部A」とかを後から作りたい時、どうしてもその分位置がずれてしまって、行送りが変わり、調整がややこしいことになってしまう、ということなんですね。

 

そのため、

本文文字に訓点と振仮名・送り仮名をくっつけてワンセットで配置し、行送りが変わる時は本文文字ごと次の行に行くようにする 

 ということを実現できるか?ということが大事になってくるわけです。

 

それを実現することができる機能が「EQフィールド」というものなんです。

 

2,EQフィールドとは?

EQフィールドというのは、Wordのルビ用にも使われているフィールドコードです。

そもそもフィールドコードとはなにか、ですが…

簡単に言うと、Wordの文書の中に、自動的に更新したり配置したりする情報を入れるためのもので、Excelの数式っぽい機能です。

フィールドコードが挿入されている部分にカーソルを置くと、グレーの網がかかります。その部分で右クリックすると「フィールドコードの表示/非表示」というメニューが現れます。
または、「alt+F9」を押すと、文書全体のフィールドコードが表示されます。
フィールドコードが入った部分を選択した状態で「alt+F9」を押すと、選択した部分のみフィールドコードが表示されます。

たとえば、ページ番号を文書に入れる時は、ヘッダーやフッターの領域に「page」というフィールドが挿入されています。

文書に更新日付を自動で入れる時は、入れたい場所に「挿入」-「日付と時刻」で「自動で更新する」にチェックを入れて挿入すると、「TIME」というフィールドが挿入されます。

また、ルビ機能を利用してルビを振ると「EQ」というフィールドが自動で挿入されるのです。

 

これらは、フィールドを意識せずにWordが勝手に入れてくれたりもするんですが、フィールド自体を自分で編集すると、Wordのデフォルト機能では実現できない細かいレイアウトが実現できたりするのです。

 

EQフィールドというのは、もともと数式を入力するためのフィールドで、文字の周囲に、その本文文字を基準として上に何ポイント、下に何ポイント等の位置に他の文字を配置する、といった機能を持つフィールドです。


EQフィールドを直接編集することで、ルビ機能では文字の上側・縦書きでは右側にしか振れないルビを、下側や左側などに振ったり、文字の大きさや本文文字からの距離も自由に設定できるので、漢文入力にはうってつけの機能です。

 

support.microsoft.com

 3,実際にどんな風に使用するのか

たとえば、下記のような漢文をうちたいとします。これ、過去に作ったテキストの一部なんですがw
Wordで編集記号表示設定にしているため、スペースが「□」半角スペースが「・」で表示されますが、これらは印刷されません。

f:id:fujmi:20210503232617p:plain

この「未」の文字の場合、「alt+F9」または右クリックで選んでフィールドコードを表示させると

{・EQ・\o\al(\s\up・13(□・ダ),{・EQ・\o\al(\s\down・12(□ル),未レ)})}

といった指定になっています。なお、上記コードの「□」は全角スペース、「・」は半角スペースを分かりやすく表しています。(EQの文字の前後などにも半角スペースが入ります)

また、フォント指定は
  • 「未」が16pt
  • 返り点の「レ」は「16pt 下付き」
  • 「□・ダ」「□ル」は8pt
になっています。
フィールドコードを表示させた状態なら、「□ル」「□・ダ」等のフィールドコード内の文字に個別にフォント設定が可能なので、個々に16ptだの8ptだのと設定可能です。
 
このフィールドのうち
  • \0」は重ね文字のスイッチ
    「EQ \O(1,○)」と指定すると、①(機種依存文字ですが、要するに「まるいち」)という風に、カッコ内の文字が重なって配置されます。
  • \al」とあるのは「左揃え」という意味です(縦書きの場合は上揃えですね)。
  • \s」は「上付きまたは下付き」で配置するという意味。
  • \up」は(縦書きの場合)に何ポイントずらすか。
  • \down」または「\do」は(縦書きの場合)に何ポイントずらすか。
    「up」「down」のあとに半角スペースを入れた後、半角で数字を指定して、何ポイントという部分を指定します。上記の場合、「本文文字の中心位置から右に13ポイントずらした位置に「□・ダ」を配置する」「本文文字の中心位置から左に12ポイントずらした位置に「□ル」を配置する」という意味になります。
このフィールドは入れ子式になっています。
  1. 「未レ」という本文文字+下付き文字のレ点の左側12ptの位置に「□ル」を配置し、
  2. 「□ル」という左側の送り仮名が配置された「未レ」の文字全体を本文文字として、その右側13ptの位置に「□・ダ」という文字が配置され、
  3. それらを本文文字に重ねて配置してますよ

    …というものです。
 
訓点と本文文字を合わせてフィールドコードの中に入れてしまえば、文字送りがずれて改行される場合も、本文文字と訓点はセットで次の行に送られます。
これを利用して、送り仮名等がない場合も、両者をセットで空のEQフィールドの中に入れてしまえば、本文と訓点が離れてしまわないようになります。
 
 …とりあえず初回ここまで。