強調の方法について

この記事は、TeX & LaTeX Advent Calendar 2013 の 第 10 日目 のために書いたものです。

12/9 の担当者は kawabata さん で、12/11 の担当者は long_long_float さん です 。

ホントは、ヘェ〜と驚きのあるネタとか、クスッと笑える小ネタなんかをお届け出来ればいいのでしょうけれど、悲しいかなそんな技術もセンスも持ち合わせていないので、ネタでもなんでもない箸休め的な雑文で参加させていただきます。すいません。

『美文書』 ならば 「16.6 アンダーライン」 の節で 7 〜 8 行で簡潔にまとめられている話を、少し長めの例文に適用して、ところどころに感想を挟んでみましたら、A4 判で 5 ページほどにもなってしまいました (でも、例文を除けば、実質的な文章量はせいぜい A4 で 2 ページくらいかと思います)

HTML の知識もないので LaTeX で書いて PDF にしたものを置かせていただきます:

強調の方法についてHervorhebung131209a.pdf, 256 KB

【LaTeX とはまったく無関係な追記】
 たまたま昨日 (12/8) 書店で買った本の一部が、ペーパーに書いた内容に関連していることに気付いたのですけれど、ペーパーの頁数を増やしたくないので、ここに追記を:
 1) 強調語が頻出する文章の例として想定していたのは翻訳の場合だったのですが、山口仲美 『日本語の古典』 (岩波新書・2011年) では、古典からの引用部分が明朝体太字になってました。引用文は鍵括弧で括ったりインデントしたりされているので、そのうえ太字にまでする必要はないように思えます。せっかく本文が精興社書体でキレイなのに…。
 2) 欧文特有の強調方法としては、“スモールキャピタルにする” と “レタースペースを広げる” とを挙げましたが、他に “キャピタライズ (大文字化) する” もありましたね。小林章 『まちモジ 日本の看板文字はなぜ丸ゴシックが多いのか?』 (グラフィック社・2013年) に、「避けたほうが賢明」 な例として載っていました。 [Added: Dec 9, 2013.]

【追記その 2】
 エルンスト・カッシーラー (山本義隆訳) 『実体概念と関数概念』 (みすず書房・1979年) では、凡例に 「原文の ( ) は ( ) で、イタリック体とゲシュペルト体の語句は――固有名詞を除いて――それぞれ傍点と 〈 〉 で記した。また訳者の補いは〔 〕で標記した。」 とあります。
 実際には原文でイタリックになっているのは他の著者からの引用文のごく一部であって、カッシーラー自身による強調箇所はみなゲシュペルトされています。原文に大量に出現するこれらゲシュペルトされた語句は、訳文では凡例に述べられているとおり 〈 〉 で囲んであるのですが、この表記方法でまったくストレスなく読むことができました。 [Added: Dec 4, 2014.]

〔差し替え〕
  Hervorhebung131209.pdf --> Hervorhebung131209a.pdf に差し替えました。
  脚註から余計なグルーを 2, 3 個削っただけで、内容に変更はありません。 [Added: Dec 16, 2013.]

Since: December 9, 2013.


【オマケ】 AdobePiStd の利用について

上に載せたペーパーでは、一部に AdobePiStd というフォントを使っていますが、その経緯について簡単にメモ:

LaTeX で Zapf Dingbats を使った文書をフォントを埋め込んだ PDF にすると、普通 pzdr.tfm にマッピングされているのは、Adobe の ZapfDingbats zd______.pfb ではなくて、URW の Dingbats d050000l.pfb をリネームした uzdr.pfb ですよね。

Adobe ZapfDingbats と URW Dingbats とのデザインの差は私には見分けがつかないので、このこと自体は大した問題ではないのですけれど、フォントを埋め込まない PDF にすると、(少なくとも私の手元の Adobe Reader X の場合) 実際の表示に使われるフォントは AdobePiStd で、これは Adobe ZapfDingbats や URW Dingbats とはデザインが異なります [図1]。

AdobePiStd のほうがなんかシャープな感じで、このフォントも LaTeX で直接使いたいなと思いました。

そこで AdobePiStd のグリフの一覧 [図2] と URW Dingbats の表 [図1左] とを照らし合わせて、32 番が space、33 番が uni2701、34 番が uni2702、… という風に URW Dingbats のエンコーディングに合わせて AdobePiStd のグリフ名を並べた enc ファイルを作って、dvipdfmx でこの enc を介して AdobePiStd にマッピングしたら、ちゃんと埋め込めました [図1右]。

なお [図2] をよく見ますと、AdobePiStd には、Adobe ZapfDingbats や URW Dingbats には含まれていないグリフが結構入っているので、せっかくなのでこれらにもアクセスしたいと考えました。

Adobe ZapfDingbats/URW Dingbats には含まれてなくて AdobePiStd には含まれているグリフは 160 〜 170 個ありますが(註1)、別に全部は必要ないと思ったので、100 個ほどを選んで、それらを適当に並べた enc を作って(註2)、この enc を使って tfm を作ったら、無事利用することが出来るようになりました [図3]。めでたしめでたし。

いまどきのエンジンだったら、こんな面倒なことをしなくても、システムに入ってるフォントなら何でも簡単に扱えるのかな…?

[図1] pzdr とフォント埋め込みの有無 (pzdr_embed_noembed.jpg
[図2] AdobePiStd のグリフ一覧 (table_Adobe_PiStd.jpg
[図3] 自分用に AdobePiStd から抜粋したもの (extra_Ding_temp.jpg

(註1) 細かいことを言いますと、[図1左] に載っているグリフが Adobe ZapfDingbats/URW Dingbats の全グリフというわけではありません。他に括弧類が 7 ペア 14 グリフ含まれていて、それらは AdobePiStd にも含まれています。

(註2) \char\symbol を使ったり pifont パッケージを利用したりして、文字コードを直接指定することを前提にするなら、0 番から順番に並べていっても問題ないはずなのですが、なんとなく 32 番から始めてしまいました。


予め用意していた記事は以上なのですけれど、ZR さんの初日の記事 を拝読しましたら、以前書きかけで放っておいたものを思い出しましたので、恥かきついでにそれも付け加えておきます:

【オマケ2】 “\item” みたいな引数の取り方をするコマンドとか “theorem 環境” みたいな引数の取り方をする環境とかを作る話

一般に、\newcommand による 「オプション引数付きの命令」 の解説では、

\newcommand{\cmd}[<num of args>][<default for arg1>]{<definition>}

で、<num of args> が 2 以上の例が多いですよね。

こうして定義された \cmd を使う際には、例えば <num of args> が 2 のときは、

\cmd{<arg2>}” または “ \cmd[<arg1>]{<arg2>}

という引数の取り方になり、(繰り返しになりますが) <num of args> が 3 のときは、

\cmd{<arg2>}{<arg3>}” または “ \cmd[<arg1>]{<arg2>}{<arg3>}

という形になります <num of args> が 4 〜 9 の場合は略)

ここで <num of args> を 1 にして、<default for arg1> を与えて定義すると、

\cmd” または “\cmd[<arg1>]

という形で使える \cmd が作れます。

\item とか \linebreak とか \pagebreak みたいですね。 これらのコマンドは、LaTeX2.09 だと内部で \@ifnextchar を使っていて、LaTeX2e だと内部で \@testopt を使っていたりしますが、こういう内部コマンドを知らなくても、オプション引数付きの \newcommand を使って、似たようなコマンドが作れるわけです (実は \newcommand は内部で \@ifnextchar\@testopt を使っていて、\@testopt は内部で \@ifnextchar を使っているのですけれど…)

例えば、\item もどきとして、

\newcommand{\ikemenLabel}{}
\newcommand{\ikemenLabelWidth}{3zw} % \newlength ではなぜかズレてしまったので
\newcommand{\ikemenLabelIndent}{1.5zw}

\newcommand{\ikemen}[1][※]{%
   \renewcommand{\ikemenLabel}{#1}
   \setlength{\hangindent}{\ikemenLabelWidth}
   \noindent\makebox[\ikemenLabelWidth]
      {\hspace{\ikemenLabelIndent}\ikemenLabel}\ignorespaces
}

\newcommand{\SampleText}{%
   いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやま
   けふこえてあさきゆめみしゑひもせす\par
}

と定義して、

\SampleText
\ikemen     \SampleText
\ikemen[●] \SampleText
\ikemen     \SampleText
\SampleText

としてみると、

となります。

また、\newenvironment<num of args> を 1 にし、<default for arg1> を空にして例えば以下のように定義すると、theorem 環境っぽい引数の取り方をする環境が作れます:

\newcommand{\QuestTitle}{}
\newcounter{QuestNum}

\newenvironment{Quest}[1][]
   {\ifx\relax#1\relax
       \renewcommand{\QuestTitle}{}
    \else
       \renewcommand{\QuestTitle}{\textgt{\sffamily(#1)}}
    \fi
    \refstepcounter{QuestNum}
    \noindent\textbf{任務\sffamily\theQuestNum}\QuestTitle\par}
   {}

これで、

\begin{Quest}
   \label{que:organize}
   2隻以上の艦で編成される「艦隊」を編成せよ!
\end{Quest}

\begin{Quest}[あ号作戦]
   \label{que:operation-A}
   1週間の全力出撃を行い、可能な限り多くの敵艦隊を捕捉、これを迎撃せよ!
\end{Quest}

\begin{Quest}
   \label{que:repair}
   各艦隊から整備が必要な艦を5隻以上ドック入りさせ、大規模な整備をしよう!
\end{Quest}

\vspace{\baselineskip}
任務\ref{que:organize}/任務\ref{que:operation-A}/任務\ref{que:repair}

としてみると、

となります。

こんな単純なやつじゃなくて、もっと使えそうな例を考えてからちゃんと記事にまとめようかと思ってたのですが、そのうちすっかり忘れてしまっていました。

Merry TeXmas & Happy TeXing!

Since: December 9, 2013.


home