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

review-init bookで作った文章がビルドできない #1080

Closed
tnishinaga opened this issue Jul 14, 2018 · 9 comments
Closed

review-init bookで作った文章がビルドできない #1080

tnishinaga opened this issue Jul 14, 2018 · 9 comments

Comments

@tnishinaga
Copy link

問題

review-init book でテンプレートから文章を作成すると review-pdfmaker でのビルドが失敗します。

確認バージョン

2.5, 3.0

再現方法

https://gist.github.com/tnishinaga/a445177a05c0f125093faa900e520294

./setup.sh 実行後に ./build.sh を実行してください。

エラーログ

https://gist.githubusercontent.com/tnishinaga/a445177a05c0f125093faa900e520294/raw/c3eed4ce5214c2d219162ebe3a957bcd98520815/errorlog.txt

原因予想

review-pdfmaker が実行されると、Re:VIEWはTeXマクロの書かれた book.tex を生成します。

review-init book コマンドより作成した文章をそのままビルドすると、 book.tex に書かれた reviewchapterfiles マクロは次のようになります。

\def\reviewchapterfiles{\input{book.tex}
}

このマクロが \begin{document} 内で使われているため ! LaTeX Error: Can be used only in preamble. が発生しているものと予想します。

実際に review-init main で生成した文章をビルドした際の reviewchapterfiles マクロの中身は以下のようになっており、ビルドに成功します。

\def\reviewchapterfiles{\input{main.tex}
}
@kmuto
Copy link
Owner

kmuto commented Jul 18, 2018

ご報告ありがとうございます、なるほど… 原因はご推察どおりですが、解決方法は悩ましいですね。

  • 案1: 一時ファイルをbookではなくまず使われなそう・かつTeXやOSに安全な名前にする。普通に作っているようなドキュメントでは問題なさそうだが、フック処理などをしているもので障害が発生するかも。ただそういうのはフック側を直せという論もある。
  • 案2: review-initで「book」という名前のプロジェクトを禁止する。対応としては簡単だがダサめ。

@kmuto
Copy link
Owner

kmuto commented Jul 18, 2018

プロジェクト名にかぎらずreファイルがあるだけでダメだから案1で実装するしかないですね。__あたりを付けた名前で大丈夫だろうか…。

@takahashim
Copy link
Collaborator

出遅れました、これはプロジェクト名というより*.reファイルの衝突の問題かと思うのですが、catalog.ymlでファイル名は全部検出できるので、そこでバッティングしないようにする、みたいな感じでしょうか…。

@kmuto
Copy link
Owner

kmuto commented Jul 18, 2018

今はlayoutから生成したベースファイルがbook.texなので、reファイルに同じ名前のものがあるとサイクリックになっちゃうのです…

@kmuto
Copy link
Owner

kmuto commented Jul 18, 2018

なので、layoutから生成するときのは__REVIEW_BOOK__.texみたいな名前にしたほうがいいかなと。reファイルと競合しないほうがいいけれども、あまりランダムな名前にするとフックやmakeindexの処理のときにつらい。

@takahashim
Copy link
Collaborator

今はlayoutから生成したベースファイルがbook.texなので、reファイルに同じ名前のものがあるとサイクリックになっちゃうのです…

なので、catalog.ymlに同じ名前.reがないかどうかをチェックすればいいんでは、と思ったんですが、coverとかcolophonとかとかぶる可能性もありますね…。

基本的にはベースの名前(__book_0)みたいなのを決めて、Dir.glob()でファイルがかぶる可能性がないかを調べて、かぶりそうだったら__book_1にして…みたいなのを繰り返すことでファイル名を決める、というのが確実ではないでしょうか。

@kmuto
Copy link
Owner

kmuto commented Jul 19, 2018

とりあえず #1081 では__REVIEW_BOOK__という名前にしてみています。この名前に対してあえてぶつけてくるという可能性は相当レアで偏屈だと思いますので、これでいかがでしょうか。

@takahashim
Copy link
Collaborator

んー、ではいったん #1081 を取り込んでから、PR送りますね

@tnishinaga
Copy link
Author

bookやmainのようによく使いそうな名前を外していれば、私も問題ないと思います。
ありがとうございました

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

3 participants