texjporg / platex

pLaTeX community edition
BSD 3-Clause "New" or "Revised" License
49 stars 8 forks source link

トンボのカスタマイズ機能 #72

Closed aminophen closed 6 years ago

aminophen commented 6 years ago

「トンボの色」・「bleed 幅(現行の pLaTeX では 3mm 固定)」について,pLaTeX カーネルでサポートがあると何かと便利ではないか,という issue を立ててみます。

現状,トンボの色や bleed 幅を変えるためには,plcore.ltx からベースになるコードを取ってきて,パラメータを弄る必要があります(etoolbox の \patchcmd を使おうにも,弄るべき箇所が多いので,およそパッチとは言えない状態になります)。そういう機能が必要なクラスやパッケージを作りたい時,カーネル側でパラメータがマクロに分離されていれば,実現が容易になると思っています。

少なくとも,

「色のついたテキストの途中で改ページが起こる場合,そのページだけトンボにも色が付く」という現象

には,pLaTeX カーネルで対処してもいいんじゃないかと思います(特定パッケージ対策をカーネルでやることに疑問があるかもしれませんが,少なくとも LaTeX カーネルには各所に color 対策が仕込まれています)。

\documentclass[tombow]{jarticle}
\usepackage{color}
\begin{document}
a {\color{red}b \newpage c} d\newpage e
\end{document}

例えば,トンボの色を \pltx@tombowcolor なるマクロに分離すれば,問題が解決します。

\def\@outputtombow{%
  \iftombow
  \vbox to\z@{\kern-13mm\relax
    \boxmaxdepth\maxdimen%% Added (Apr 1, 2016)
    \moveleft3mm\vbox to\@@paperheight{%
    \color@begingroup %% add
      \pltx@tombowcolor %% add
      \hbox to\@@paperwidth{\hskip3mm\relax
         \copy\@TL\hfill\copy\@TC\hfill\copy\@TR\hskip3mm}%
      \kern-10mm
      \hbox to\@@paperwidth{\copy\@Tl\hfill\copy\@Tr}%
      \vfill
      \hbox to\@@paperwidth{\copy\@CL\hfill\copy\@CR}%
      \vfill
      \hbox to\@@paperwidth{\copy\@Bl\hfill\copy\@Br}%
      \kern-10mm
      \hbox to\@@paperwidth{\hskip3mm\relax
         \copy\@BL\hfill\copy\@BC\hfill\copy\@BR\hskip3mm}%
    \color@endgroup %% add
    }\vss
  }%
  \fi
}
\def\pltx@tombowcolor{\normalcolor}
abenori commented 6 years ago

例えば,トンボの色を \pltx@tombowcolor なるマクロに分離すれば,問題が解決します。

これはこの部分が\normalcolorでもよいわけで,マクロに分離することが本質的には思えませんが.そしてこの変更は入れれば良い,むしろ入れるべきと思います

もう少し一般論でもありますが.トンボの処理を局所化して一つ(以上)のマクロで切り出し,そのマクロはパッケージなどで変更してもよい,と明示されていると,想定されていない状況にも対処できて便利そうです.(現在の\@outputtombowはかなりそんな感じなのですが,\@outputpage内にある\iftombow...\fiが惜しい感じでしょうか.この部分を切り出すだけでもよいのかもしれません.) もちろん,それらのマクロのデフォルト設定内のいくつかのパラメータがマクロになっていると簡単なカスタマイズには便利かと思います.

aminophen commented 6 years ago

tombow ブランチを作り,三段階に分けてコミットしてみています。

という感じです。bleed 幅の分離はまだやっていません。

aminophen commented 6 years ago

以上,一通りやってみましたが,どこまでを pLaTeX に入れるかはまだ未定です。今回の拡張をクラスやパッケージで \def して実現していた場合にも,互換性の問題は起きないと期待しますが,どうでしょう?

aminophen commented 6 years ago

今回の機能拡張を,週末 5/20 にリリースしようと思っています。

aminophen commented 6 years ago

2018-05-20 を出しました。