Skip to content

Instantly share code, notes, and snippets.

@aminophen
Forked from zr-tex8r/pxeverysel.sty
Last active October 15, 2016 13:02
Embed
What would you like to do?
LaTeX: (u)pLaTeX で everysel できるかもしれないやつ、の改変版
@aminophen
Copy link
Author

aminophen commented May 1, 2016

サブブログで考察中の案件。tracefnt が読まれていても pxeverysel が正常に動作するように

  • tracefnt が読み込み済みなら (u)ptrace を強制読み込み
  • \pxys@patch@cmd のパッチ用パターンマッチを変更

としてみた。ただし、このパターンマッチを変更したことで \enc@update が一度に二回実行されるようになる気がする…が、問題ないように思えるので放置 (^^;)

また、tracefnt 使用時に Switching to \font@name が二重に出てしまうことに気づいた。これは pxeverysel がパッチで tracefnt 相当の機能を挿入したにもかかわらず、さらに everysel が明示的に \EverySelectfont で同じものを入れてくるからである。そこで、everysel をダマして \EverySelectfont を発行しないようにした。

@aminophen
Copy link
Author

中国語文書を作る CTeX が upLaTeX をサポートしていることに気づいた。

\documentclass{ctexart}
\begin{document}
C\TeX 宏集依赖的宏包和宏集已被最常见的\TeX 发行版\TeX\ Live和MiK\TeX 所收录。
\end{document}

CTeX について現在分かっていること:

  • LuaLaTeX (on LuaTeX-ja)、XeLaTeX、pdfLaTeX、upLaTeX、pLaTeX-ng (ApTeX) をサポート。
  • LaTeX3 の文法で書かれている。
  • everysel を規定で読み込んでいるが、ctex-engine-*.def でうまいことパッチしてある。

この CTeX (on upLaTeX) と pxeverysel を同時に使うと当然ながら

Package pxeverysel Warning: Failed in patching \selectfont.

が出るが、CTeX の \selectfont を壊すことはないので許容範囲とする。

@aminophen
Copy link
Author

CTeX の \selectfont を壊すことはないので許容範囲とする。

と思っていたのだが:

\documentclass{ctexart}
%\usepackage{pxeverysel}
\begin{document}

\noindent 早上好!

早上好!

{\tiny 早上好!}

{\Huge 早上好!}

\end{document}

これの処理結果でインデント量が pxeverysel の有無で変わることに気づいた。要調査。

@aminophen
Copy link
Author

なんかよくわからないが、expl3 で書かれたコマンドに外からパッチしようとしている時点でアレなので、「CTeX 系の何かが既に読まれている場合は、pxeverysel パッケージは何もしない」ということにしてみた。ただ、「CTeX かどうか」の判断法がよく分からない(ctex.sty を \usepackage する方法と、ctexart.cls などを \documentclass する方法があるらしい)ので、両方で定義されていそうな \CTEXoptions という命令の有無で判定することにした(少なくとも 2007 年以降の CTeX はこの命令を持っていることを確認済み)。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment