Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

「部」の後に出現する部に属さない章・付録に対するPDFのしおりの構造 #1197

Closed
doublemarket opened this issue Nov 4, 2018 · 5 comments

Comments

@doublemarket
Copy link

以下のようなcatalog.ymlがあった時、

CHAPS:
  - ch01.re
  - pt01.re:
    - ch02.re
  - ch03.re

APPENDIX:
  - ap01.re

PDFに描画されている目次についてはこのようになっているのですが、

2018-11-04 21 54 32

PDFに含まれるしおりの情報だと、ch03.reやap01.reに相当する部分の目次が、pt01.reの部に含まれたような形になってしまい、catalog.ymlの構造と違ってしまっています。

2018-11-04 21 54 40

ちなみに、PDFに描画されているものも、第3章と付録Aが第1部の中ではないと言うことが(致命的ではないにせよ)はっきりしない気もしますが、これは単にデフォルトのスタイルがそうだということでしょうか、それとも上記PDFのしおりの構造と関係しているのでしょうか(すみません、まだその辺りがどう実現されているのか理解できていません)。

@kmuto
Copy link
Owner

kmuto commented Nov 4, 2018

TeXのほうは階層構造は何も持っておらず、単純にpartはPDFしおりレベル0、chapterはレベル1、で作るのでこうなりますね…。あとPDFのしおりの構造ツリーのほうもちと厄介な形になっています。

これを判定させるのはたぶん無理そうなので、TeXのhyperrefパッケージの命令を手動でembedタグで埋め込んでなんとか3章を新しいツリーレベルにしないといけないと思いますが、そういう妥当な命令があるのか、私も追えていません。
たまに私も困ることもあるので調べます(現時点ではAcrobatで後加工しちゃっています)。

@kmuto
Copy link
Owner

kmuto commented Nov 4, 2018

hyperrefの中でpartは-1、chapterは0というレベル分けになっているので、chapterがどうやってもpartの上に行くことはできないという問題があります。
自動での対応は無理なのですが、タッチアップするマクロを考えてみました。要するにhyperrefで使うtoclevelの値を1つインクリメントすることでhyperrefの挙動を騙し、終わったらしれっと戻します。

review-custom.sty

\def\downtoclevel{%部見出しの直前に入れる
\def\toclevel@part{0}
\def\toclevel@chapter{1}
\def\toclevel@section{2}
\def\toclevel@subsection{3}
\def\toclevel@subsubsection{4}
\def\toclevel@paragraph{5}
\def\toclevel@subparagraph{6}
}

\def\reverttoclevel{%部構成が終わったら次の見出しの直前に入れてデフォルトに戻す
\def\toclevel@part{-1}
\def\toclevel@chapter{0}
\def\toclevel@section{1}
\def\toclevel@subsection{2}
\def\toclevel@subsubsection{3}
\def\toclevel@paragraph{4}
\def\toclevel@subparagraph{5}
}

pt01.re

//embed[latex]{
\downtoclevel
//}

= これが第1部だ
〜

ch03.re

//embed[latex]{
\reverttoclevel
//}

= これが第3章だ
〜

普通の目次のほうには影響はないと思うのですが、何か悪いことは起きるかもしれません…。

@kmuto
Copy link
Owner

kmuto commented Nov 4, 2018

数字をあげてるからマクロ名はdownじゃなくてupか…

@doublemarket
Copy link
Author

doublemarket commented Nov 5, 2018

おお、マクロまでありがとうございます。どうやら手元でも上のマクロを使ってうまくいきました。

@kmuto
Copy link
Owner

kmuto commented Nov 5, 2018

はいー

@kmuto kmuto closed this as completed Nov 5, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants