キーボードには曲がった引用符「“ ”」のキーがありません。それでも LaTeX の文書にきちんとした引用符が出るのは、バッククォートを二つ、アポストロフィを二つ続けて打つと、フォント側の合字(リガチャ)機構がそれを本物の引用符に組み替えてくれるからです。f と i を fi にするのと、まったく同じ機械が動いています。このページはそこから一本の線でつなげます——引用符を正しく出す方法、csquotes の \enquote が言語ごとに形を替え入れ子まで面倒を見る仕組み、そして引用文そのものを別行に立てる quote/quotation/verse 環境まで。
曲がった引用符はどこから来るのか — バッククォート二つの正体
答えはフォントの中にあります。TeX がフォントを読むときに参照する .tfm(フォント寸法ファイル)には、どの文字とどの文字が並んだら別の一文字に置き換えるかを書いた合字プログラムが入っていて、引用符の置き換えもそこに直接書かれています。T1 エンコーディングの ecrm1000.tfm を人間可読形式に戻すと、バッククォートの項に (LIG O 140 O 20)——「バッククォートの次にバッククォートが来たら 8 進 20 番の字形に置き換えよ」——という一行があります。8 進 20 番は \textquotedblleft、つまり開き二重引用符です。アポストロフィの項も同じ形で、(LIG O 47 O 21) が閉じ二重引用符 \textquotedblright を指しています。
ここが面白いところです。同じファイルの f の項を見ると (LIG C i O 14) と書いてあります。「f の次に i が来たら fi の字形に置き換えよ」——つまり 引用符も、活字組版が何百年も使ってきた fi 合字も、TeX にとってはまったく同じ命令なのです。クヌースは文字対のために設計した機構をそのまま句読点に流用しました。ハイフン二つが en ダッシュになるのも同じ行の隣、(LIG O 55 O 173) です。「打った文字がそのまま出るわけではない」という TeX の第一の驚きは、この小さな表から来ています。
% Two backticks open a quotation, two apostrophes close it.
``A quotation set the TeX way.''
% One of each gives the single marks.
`A quotation inside a quotation.'
% Adjacent closing marks collide; a thin space keeps them apart.
``He said `yes.'\thinspace''| 入力 | 出力される字形 | 備考 |
|---|---|---|
`` | “ | 開き二重引用符。合字で合成される |
'' | ” | 閉じ二重引用符。アポストロフィ二つ |
` | ‘ | 開き一重引用符。合字は起きない |
' | ’ | 閉じ一重引用符。アポストロフィも同じ字形 |
" | ” または " | 使わない。次節を参照 |
" と打つと引用符がおかしくなる — OT1 と T1 の違い
ASCII のまっすぐな " を打つと、どのフォントエンコーディングを使っているかで結果が二通りに壊れます。LaTeX 既定の OT1 エンコーディングでは、ot1enc.def が \textquotedblright を 34 番——ASCII が " を置いている位置——に割り当てています。つまり "quoted" と書くと、開きも閉じも どちらも閉じ引用符 になって ”quoted” と出ます。一方 \usepackage[T1]{fontenc} を入れると、t1enc.def は同じ 34 番に \textquotedbl、つまりタイプライタ風のまっすぐな " を置きます。こちらは曲がらず "quoted" のまま。同じ入力が、プリアンブル一行で違う壊れ方をするわけです。アポストロフィ側にも同じ話があります。まっすぐな ' がどうしても必要なとき——コードの断片や、曲がっては困る識別子——は \textquotesingle を使ってください。TS1 の文字で、2020年以降のカーネルでは追加パッケージなしで使えます。\texttt の中でも曲がりません。
% Default OT1: slot 34 holds the CLOSING double mark.
% "quoted" -> ”quoted” (two closing marks)
\documentclass{article}
% With T1: slot 34 holds an upright typewriter quote.
% "quoted" -> "quoted" (never curls)
\usepackage[T1]{fontenc}
% Either way, this is what you want instead:
``quoted''実務上は次の三つを守れば事故が起きません。第一に、" は原稿に打たない——検索置換で一括して潰しておくのが確実です。第二に、\usepackage[T1]{fontenc} は入れる。34 番の問題を消すためではなく、ハイフネーションとアクセント付き文字のためです。第三に、LuaLaTeX や XeLaTeX で UTF-8 の “ ” を直接打つのは有効です。この場合フォントは Unicode で参照されるので合字機構を経由しませんが、原稿の見た目と出力が一致するという別の利点があります。ただし引用符の形は原稿に固定されるので、多言語文書では次節の \enquote の方が扱いやすくなります。
\enquote と手打ちの引用符の違い
違いは一言でいえば、手打ちは字形を書き、\enquote は「ここは引用である」という意味を書く という点です。csquotes パッケージを読み込んで \enquote{…} と書くと、実際にどの字形を置くかは選択中の引用スタイルが決めます。しかも入れ子は自動です。\enquote は内部で入れ子の深さを数えていて(\csq@qlevel というカウンタです)、外側なら外側の引用符、内側なら内側の引用符を選びます。英語なら外が二重で内が一重、イギリス式ならその逆、と切り替えるのはスタイル定義側の仕事になります。
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage[autostyle=true]{csquotes}
% ...
\enquote{He said \enquote{yes} to me.}
% -> “He said ‘yes’ to me.”
\begin{otherlanguage}{ngerman}
\enquote{Er sagte \enquote{ja} zu mir.}
\end{otherlanguage}
% -> „Er sagte ‚ja‘ zu mir.“
\begin{otherlanguage}{french}
\enquote{Il a dit \enquote{oui}.}
\end{otherlanguage}
% -> « Il a dit “oui”. »上の三つは同じ \enquote が同じ形で書かれているのに、出力される引用符はすべて違います。効いているのは autostyle=true で、これは babel/polyglossia の現在の言語に引用スタイルを追随させる オプションです。言語を切り替えるだけで引用符が付いてくるので、原稿の側には言語ごとの分岐が一切現れません。強制的に内側の引用符を出したいときは星付きの \enquote*{…} を使います。プリアンブルで固定したいなら \setquotestyle{german} のように直接指定もできます。
意味を書くことのもう一つの利点は、間違いが検出できることです。手打ちの引用符は開き忘れても閉じ忘れても何も起きず、印刷して初めて気づきます。\enquote は入れ子の深さを追っているので、対応が取れていなければ Package csquotes Error: Unbalanced groups or invalid nesting や Still 1 quote open. といったエラーで止まります。数百ページの論文で引用符の対応を目視で追う作業が、コンパイル時の一行に置き換わるわけです。なお、隣り合う引用符が衝突する問題も csquotes が引き受けます。スタイル定義には [0.05em] のような カーン値 が書かれていて、外側と内側の引用符が同時に開いたり閉じたりするときに自動で挿入されます。手打ちのときに \thinspace を入れていた作業が要らなくなります。
言語ごとの引用符 —「 」、„ “、« » の使い分け
引用符の形は言語ごとに違い、しかも「開き」と「閉じ」の対応まで違います。日本語の 「 」 と 『 』、ドイツ語の „ “、フランス語の « … »、英語の “ ” はどれも同じ役割を果たしながら、字形も向きも高さも一致しません。csquotes はこれを 引用スタイル として持っており、csquotes.def には英語・ドイツ語・フランス語・スペイン語・日本語を含む 29 言語分の定義が入っています。日本語スタイルの定義は素直に 「 」 が外側、『 』 が内側で、カーン値は [0pt]——全角の引用符は互いにぶつからないので、詰めを入れる必要がないからです。
| スタイル名 | 外側 | 内側 | 備考 |
|---|---|---|---|
american | “ ” | ‘ ’ | english の既定の変種 |
british | ‘ ’ | “ ” | 外と内が米国式と逆 |
german | „ “ | ‚ ’ | 閉じが英語の開きと同じ字形 |
french | « » | “ ” | 内側に不可分の空きが入る |
spanish | « » | “ ” | 段落継続時に » を行頭へ再掲 |
japanese | 「 」 | 『 』 | カーンは 0pt。全角なので衝突しない |
この表には、知っておくと得をする逆転がいくつか隠れています。ドイツ語のギユメ変種は \guillemotright で 開き、\guillemotleft で 閉じ ます——つまり »…« とフランス語の « … » は向きが正反対です。フランス語では引用符の内側に不可分の空きが必要で、csquotes はそのために \mkfrenchopenquote という専用のフックを持っています。そしてスペイン語のスタイルには 中間マーク が定義されています。複数段落にわたる引用で、二段落目以降の行頭に » を再掲するというラテン系の伝統的な組み方で、\DeclareQuoteStyle にはそれ専用の引数が用意されています。
実務上の注意が二つあります。まず、csquotes.def に定義があるのは 29 言語で、韓国語と中国語のスタイルは入っていません。必要なら \DeclareQuoteStyle で自分で定義するか、字形が一致する既存スタイル(現代の横組みなら american がそのまま使えます)を流用します。もう一つは babel の言語別ショートハンドとの関係です。ドイツ語の babel は " を活性文字にして、後ろにバッククォートが続けば \glqq、アポストロフィが続けば \grqq になるという古典的な仕掛けを持っていますが、これは原稿をドイツ語専用にしてしまいます。文書が一言語で完結するなら十分ですが、多言語なら \enquote に寄せた方が後で困りません。
quote と quotation の違い
違いは 段落の切れ目をどう見せるか の一点に尽きます。引用が三、四行(およそ 40 語)を超えたら、引用符でくくって本文に埋め込むのをやめ、左右に余白を取って別行に立てる——これは組版の一般的な慣習ですが、そこから先が二択になります。classes.dtx の定義を読むと、両者はどちらも list 環境として実装されていて、違うのは渡すパラメータだけです。quote は \rightmargin\leftmargin だけを設定し、先頭字下げは付けません。quotation は加えて \listparindent 1.5em、\itemindent \listparindent、\parsep 0pt plus 1pt を設定します。つまり 段落の頭を 1.5em 下げ、段落間の空きをほぼ潰す ——本文と同じ「字下げで段落を区切る」流儀です。
\begin{quote}
One paragraph, indented from both margins,
with no first-line indent at all.
\end{quote}
\begin{quotation}
First paragraph of a longer quotation. Its first line is indented.
Second paragraph. The indent, not blank space, marks the break,
which is why quotation is the right choice past one paragraph.
\end{quotation}| 環境 | 先頭字下げ | 段落間の空き | 向く用途 |
|---|---|---|---|
quote | なし | 通常の段落空き | 1 段落の引用、題辞、並列する短い行 |
quotation | 1.5em | ほぼ 0(0pt plus 1pt) | 複数段落にわたる長い引用、会話を含む抜粋 |
verse | −1.5em(ぶら下げ) | 通常の段落空き | 詩、歌詞、行の切れ目が意味を持つ文 |
ここで一つ、初学者がよくやる事故を挙げておきます。別行に立てた引用に引用符を付けない のが英語圏の組版の通例です。字下げそのものが「ここは引用である」という合図なので、そこにさらに “ ” を足すと合図が二重になります。quote も quotation も引用符を一切入れないのは、この慣習を素直に反映した設計です。逆に、日本語の組版では別行引用でも 「 」 を残す流儀があり、分野や版元によって割れます。どちらを採るにせよ、文書全体で統一されていることのほうが重要です。
詩と歌詞を組む verse 環境
行の切れ目が意味を持つ 文章には verse を使います。行末は \\ で自分で決め、連(スタンザ)の区切りは空行で示します。classes.dtx の定義を見ると、verse は \itemindent に マイナスの 1.5em を、\leftmargin にはプラスの 1.5em を設定しています。この組み合わせが生むのが ぶら下げインデント です。紙面に収まらない長い詩行が折り返されたとき、折り返された側だけが 1.5em 下がる——だから読者は「新しい行」と「折り返しただけの続き」を一目で区別できます。詩の行構造を壊さないための、たった二行のパラメータ設定です。
\begin{verse}
Roses are red, \\
Violets are blue, \\
This stanza ends here.
A new stanza starts after the blank line, and a line long enough to
run over gets a hanging indent so it still reads as a single verse.
\end{verse}\blockquote が長さで行内とブロックを切り替える
quote と quotation を手で選ぶという作業自体を、csquotes は消してしまいます。\blockquote{…} は中身の長さを実際に測り、しきい値を超えれば別行立てのブロック引用、超えなければ引用符付きの行内引用 として組みます。既定値は thresholdtype=lines の 3 行、ブロック側で使う環境は quote です。\SetBlockThreshold{5} や \SetBlockEnvironment{quotation} で変更でき、語数で測りたければ thresholdtype=words と threshold=50 を指定します。加えて parthreshold が既定で有効なので、引用の中に明示的な段落区切りや改行があれば、長さに関わらずブロックになります——複数段落の引用は必ず別行に、という直感どおりの挙動です。
\usepackage[autostyle=true]{csquotes}
\SetBlockThreshold{3} % default: 3 lines
\SetBlockEnvironment{quote} % default: the quote environment
% ...
% Short -> stays inline, with quotation marks around it:
\blockquote{Brevity is the soul of wit.}
% Longer than the threshold -> set as an indented block, no marks:
\blockquote{A passage that runs past three printed lines of text is
set off on its own instead, and csquotes reaches that decision by
measuring the material rather than by asking the author to choose
between the quote and the quotation environment by hand.}
% Block quotation that also prints a citation (page 67 of doe2020):
\blockcquote[][67]{doe2020}{The argument develops over several
sentences and is long enough to be set as a block.}出典を一緒に出したいときは \blockcquote と、その行内版 \textcquote を使います。\blockcquote[⟨前注⟩][⟨後注⟩]{⟨文献キー⟩}{⟨本文⟩} の形で、後注には通常ページ番号を入れます。呼び出される引用命令は \SetCiteCommand で差し替えられるので、biblatex でも natbib でも同じ書き方が通ります。行内引用だけが欲しく、長さに関係なく必ず引用符で囲みたい場合は \textquote{…} を使ってください——\blockquote と違い、こちらは決してブロックに切り替わりません。外国語の引用には \foreignblockquote{⟨言語⟩}{…}(引用符もハイフネーションもその言語に合わせる)と \hyphenblockquote{⟨言語⟩}{…}(ハイフネーションだけ切り替える)があります。
csquotes 自体の来歴も一言。このパッケージを書いたのは biblatex の作者でもある Philipp Lehman で、著作権表示によれば 2003 年から 2011 年まで開発を担当しました。2015 年以降は Joseph Wright が引き継いでいます(TeX Live 2024 収録版は v5.2n)。引用と文献参照を同じ設計思想で結び直したのが同一人物だと分かると、\blockcquote が biblatex とあれほど滑らかに噛み合う理由も腑に落ちます。
結局どれを使えばよいか
- 短い行内引用 →
\enquote{…}。字形は言語が決め、入れ子も対応チェックも自動。 - 1 段落の別行引用 →
quote。パッケージ不要で、引用符は付けない。 - 複数段落の長い引用 →
quotation(先頭字下げで段落を区切る)。 - 詩・歌詞 →
verse(行末は\\、連は空行、長い行はぶら下げ)。 - 長短の判断ごと任せたい →
\blockquote(既定 3 行、parthresholdで段落があれば必ずブロック)。 - 出典も一緒に出す →
\blockcquote/\textcquote(\SetCiteCommandで biblatex・natbib に接続)。 - 多言語文書 →
\usepackage[autostyle=true]{csquotes}を babel/polyglossia と併用する。
最後に一つ。ここまでの環境はすべて内部で list として組まれているので、itemize と同じように前後に縦の空きが入り、入れ子にもできます。引用の中で改行位置を細かく詰めたいときは「改行・改段落の扱い」を、字下げや中央寄せといった配置全般は「文字寄せ」を、ダッシュや省略記号など引用の周辺で使う約物は「引用符・ダッシュ」を参照してください。