nikkie-ftnextの日記

イベントレポートや読書メモを発信

Sphinxで作るPDFでリンクを(水色の囲み線も出さずに)モノクロにする

はじめに

秘密はね、最後に明かされるんだよ。 nikkieです。

拡張を自作したり、技術同人誌を作るときに選択したりと使い込んでいるSphinx
原稿(今回はreST)をドキュメント(今回はPDF)に変換できるツールなのですが、モノクロのPDFを作ろうとしてリンクまわりで少しつまづきました。

ちなみに、この記事で一番言いたいことはP.S.です。
アイうた合同誌の新刊を、よろしくお願いします!!

目次

サンプルプロジェクト

今回のSphinxプロジェクトの全容は以下からご確認ください。

sphinx-quickstartした1後、index.rstにはリンクがあるだけです

Welcome to Black and White PDF's documentation!
===============================================

Awesome link: https://github.com/ftnext/sphinx-playground

Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

conf.pyで設定して、リンクをモノクロにしていきましょう!

設定をせずにPDFを作る(色付きのリンク)

quickstartでできたままのconf.pyでPDFをビルドしてみましょう。
Dockerイメージsphinxdoc/sphinx-latexpdfがとても重宝しています。

docker run --rm -v $PWD:/docs sphinxdoc/sphinx-latexpdf:7.1.2 make latexpdf

できたPDFではリンクに色がついています。
※この記事ではmacOSのプレビュー.appでPDFを開いています

hyperrefにcolorlinks=falseと指定して、モノクロに設定(ただし水色の囲み線)

モノクロにする方法を調べて見つけたのが、こちらのGist。
https://gist.github.com/uchida/4545280
はじめて技術同人誌を作ったとき2には大変助けられました。

できるだけモノクロにする」に設定があります。

PC 等で閲覧する場合はハイパーリンクに色がついていると便利ですが、 印刷する際には不要かもしれません。 リンクに色をつけないようにするには、プリアンブルに以下を追加します。:

\hypersetup{colorlinks=false} % ハイパーリンクの色を無効に

プリアンブルとは前口上

LATEX 文書ファイルの \documentclass[...]{...} と \begin{document} の間にさらに細かい指定を書くことができます。この部分のことをプリアンブル(preamble,前口上)といいます。(『[改訂第8版]LaTeX2ε美文書作成入門3p.34)

Sphinxでは原稿を一度LaTexに変換してからPDFにしています。
conf.pyを使って(HTMLをビルドする時のカスタマイズと同様に)LaTeXもカスタマイズできます

カスタマイズに使うのは、latex_elementsという辞書(dict)です。
https://www.sphinx-doc.org/ja/master/latex.html#the-latex-elements-configuration-setting
'preamble'というキーに値を指定したら、中間のLaTeXファイルにプリアンブルを指定できます。

Gistで案内された設定をconf.pyに追加します。

PREAMBLE = r"""
\hypersetup{colorlinks=false}
"""
latex_elements = {
    "preamble": PREAMBLE
}

この状態でPDFをビルドすると...
(コマンドは同様なので省略します)

リンクがモノクロになりました!

ですが、水色の囲み線がありますね4

モノクロかつ囲み線無しはhidelinks指定

囲み線をなくすには、conf.pyを以下のように変えます。

PREAMBLE = r"""
-\hypersetup{colorlinks=false}
+\hypersetup{hidelinks}
"""
latex_elements = {
    "preamble": PREAMBLE
}

ビルドすると、リンクはモノクロ、かつ、囲み線がありません!🙌5

参考サイト

colorlinks

リンクのテキストに色をつけるかどうか。true のときテキストの色が変わり,false のときリンクに枠がつく。

hidelinks

リンクに色や枠をつけない。リンク自体は残る。印刷版にするときにはこうするとよい。

注意点2:リンクの「枠」

リンクに色や枠が確実に付かないようにするためには,hidelinksオプションを利用しましょう.

2つ目の記事からhyperrefのドキュメントを見に行けばいいのかと気づき、確認しました。

5.6 Extension options
https://ftp.kddilabs.jp/CTAN/macros/latex/contrib/hyperref/doc/hyperref-doc.html#x1-180005.6

hidelinks
Hide links (removing color and border).

終わりに

Sphinxで作るPDFでリンクをモノクロにする場合は、プリアンブルでhyperrefにhidelinksを指定です。

PREAMBLE = r"""
\hypersetup{hidelinks}
"""
latex_elements = {
    "preamble": PREAMBLE
}

これでリンクの囲み線も出ません
この件はググるのが難しかったのですが、少しつまづく程度で解決できて幸運でした。

P.S. 📣『アイの歌声を聴かせて』合同誌の新刊が出ました!📣

C102で合同誌に参加しています

通販で入手できます
https://www.melonbooks.co.jp/detail/detail.php?product_id=2062761

合同誌参加の中で、PDFのリンクに水色の囲み線がある事象を解決しました。
原稿提出締め切り間際で、私としてはモノクロになっていると思いこんでいたので嫌な汗をかきましたね...

さて、アイうた合同誌ですが、C103でも新刊が出ました!👏

色々と網羅されていて、きわめて資料価値が高い1冊です!

アイうたはAmazon Prime VideoやNetflixなどで見放題配信が解禁されています(2023年6月〜)。
アイうたに触れ、撃ち抜かれた方には垂涎の1冊でしょう(2巻あるから2冊か)。
新刊にある網羅コンテンツでは、当時の盛り上がりを追体験できちゃいますよ〜🤗

C103新刊の通販はこちらです!
https://www.melonbooks.co.jp/detail/detail.php?product_id=2160382

よろしくお願いします!


  1. 引数込みのコマンド:https://github.com/ftnext/sphinx-playground/blob/fab60b9a5044811732e2d0052413d7e70359a9b7/quickstart.sh#L6-L13
  2. 2023年に新版(9版)が出たようです。
  3. 目次のリンクは赤色でした
  4. 目次のリンクについても同様に、モノクロ、かつ、囲み線なしです!