abenori / jlreq

Other
125 stars 18 forks source link

縦書き時に tikz や pdfpages のサポート #65

Closed ghost closed 4 years ago

ghost commented 4 years ago

tate オプションや \tate 命令時に tikzpdfpages のサポートを検討してただければと思います。

環境

tikz

現状では縦書き時はエラーがでます。横書き時(\yoko)ではエラーは出ません。ltjtarticle.cls ではエラーは出ません。

\documentclass[a4paper, lualatex, tate]{jlreq}
% \documentclass{ltjtarticle}  % ltjtarticleではエラーにならない
\usepackage{tikz}

\begin{document}
% \yoko  % 横組みにするとエラーにならない
% \tate  % オプションの代わりにコマンドでもエラーになる
\begin{tikzpicture}
  \draw (0,0) -- (1,0) -- (1,1) -- cycle;
\end{tikzpicture}
\end{document}

pdfpages

縦書き時でも hyperref を読み込むとエラーがでません。横書き時は hyperref がなくてもエラーはでません。

\documentclass[a4paper, lualatex, tate]{jlreq}
\usepackage[unicode=true]{hyperref}  % コメントアウトするとエラー
\usepackage{pdfpages}

\begin{document}
初頁
\clearpage
\includepdf{sample.pdf}
終頁
\end{document}
abenori commented 4 years ago

とりあえず両方ともエラーになることを確認しました.後ほど調べてみます.

kmaed commented 4 years ago

tikz の方は,ltjtarticle.cls にある次のコードを jlreq.cls の最初の方に入れておくと回避できるようです(私は何も理解していない).

\AtEndOfPackageFile{everyshi}{%
  \def\@EveryShipout@Output{%
    \setbox8\vbox{%
      \yoko
      \@EveryShipout@Hook
      \@EveryShipout@AtNextHook
      \global\setbox\luatexoutputbox=\box\luatexoutputbox
    }%
    \gdef\@EveryShipout@AtNextHook{}%
    \@EveryShipout@Org@Shipout\box\luatexoutputbox
  }}

pdfpages の方は ltjtarticle でも同じエラーが出るので,luatexja の問題ではないかと思います.luatexja のチケットを作っておきました.

kmaed commented 4 years ago

\tate とパッケージの組み合わせでエラーが出るみたいなのは,個々の文書クラスで対応するよりは luatexja 本体側でなんとかするべきな気がしますね.

abenori commented 4 years ago

そんな気もしますね.上のコードをlltjp-everyshi.styに移してみました.しかしそうなっていなかったということは何かまずい点があるのかな.

h-kitagawa commented 4 years ago

上のコードをlltjp-everyshi.styに移してみました.しかしそうなっていなかったということは何かまずい点があるのかな.

どうもありがとうございます.たぶんそんな深い意味はなくて,ltjt{article,book,...} 以外の縦組クラスを気にしていなかっただけのような気がしています.

abenori commented 4 years ago

ありがとうございます.これでどちらの問題も次バージョンのLuaTeX-jaで解決されそうですね.

abenori commented 4 years ago

LuaTeX-jaの2020-08-02で解決済みです.

ghost commented 4 years ago

確認しました。 対応をありがとうございました。

ghost commented 3 years ago

縦書き figure 環境中で \yokotikz を併用するとエラーになりました。ltjtarticle.cls ではエラーはでません。 luatexja で報告すべきか判断できず、こちらに報告させていただきます。

\documentclass[lualatex, paper=a7, tate]{jlreq}
\usepackage{tikz}
\begin{document}
% \yoko  % ここだとエラーにならない
\begin{figure}
  \yoko  % ここだとエラーになる
  \tikz\draw[ultra thick] (0,0) rectangle (1,1);
\end{figure}
\end{document}

Error message

! Output loop---100 consecutive dead cycles.
\clearpage ...rite \m@ne {}\vbox {}\penalty -\@Mi 

Version

lualatex: LuaHBTeX, Version 1.12.0 (TeX Live 2020) jlreq.cls: 2020/12/29

kmaed commented 3 years ago

そもそも platex でも次で同じエラーが出るようです.

\documentclass{article}
\begin{document}
\tate
% \yoko  % ここだとエラーにならない
\begin{figure}
  \yoko  % ここだとエラーになる
  a
\end{figure}
\end{document}
kmaed commented 3 years ago

luatexja だとちょっと不思議.

\documentclass{article}
%% \documentclass{ltjarticle}   % こちらだとエラーにならない
\usepackage{luatexja}
\usepackage{tikz}               % 読まないとエラーにならない
\begin{document}
\tate
% \yoko  % ここだとエラーにならない
\begin{figure}
  \yoko  % ここだとエラーになる
  a
\end{figure}
\end{document}
aminophen commented 3 years ago

そもそも platex でも次で同じエラーが出るようです.

エラーの発端は \@testwrongwidth が誤判定していることのようです。組方向が食い違っているせいか \dp の取得が正しくならず,double column float -- wrong になっている?

abenori commented 3 years ago

(見落としていました……)

とりあえず https://github.com/texjporg/platex/issues/95 に転送しました.