Ticket #42210

プリミティブの再定義の前にロードしたいパッケージ

Open Date: 2021-05-10 21:23 Last Update: 2021-05-17 12:14

Reporter:
Owner:
(None)
Status:
Closed
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
None
File:
None

Details

LuaTeX-jaでは複数のプリミティブを再定義しています。

一方、数式の自動改行を行う{breqn}パッケージではvadjustプリミティブを用いています。

LuaTeX-jaのロード、たとえばltjsarticleの後に\usepackage{breqn}と書くと、「プリミティブが……」とエラーになってしまいます。

今はltjsarticleのロード前に\RequirePackage{breqn}と書くことでエラーを回避できています。

(まったく悪影響がないかはまだわかっていません)

このように、「プリミティブの再定義の前にパッケージをロードしたい」場合に対応する、なんらかのインターフェイスを検討していただけないでしょうか。

Ticket History (3/3 Histories)

2021-05-10 21:23 Updated by: yuishin_kikuchi
  • New Ticket "プリミティブの再定義の前にロードしたいパッケージ" created
2021-05-11 05:52 Updated by: h7k
Comment

「プリミティブの再定義の前にパッケージをロードしたい」場合に対応する、なんらかのインターフェイス

まだコードはなんにも書いていませんが,例えばこんな感じのインターフェースが考えられるでしょうか.

  1. \makeatletter
  2. \def\ltj@stop@overwrite@primitive{\vadjust\unhbox\unvcopy}
  3. % \vadjust, \unhbox, \unvcopy の LuaTeX-ja での再定義を抑止する
  4. % LuaTeX-ja 版の定義は \ltj@@vadjust など「ltj@@」つき制御綴に保存
  5. \usepackage{luatexja}
  6. ...
  7. \ltj@overwrite@primitive{\vadjust\unhbox\/}
  8. % \vadjust, \unhbox, \/ を LuaTeX-ja 版の定義で置き換える
  9. % \AtBeginDocument{\ltj@overwrite@primitive{\ltj@stop@overwrite@primitive}}
  10. % みたいな使い方も許容したい

2021-05-17 12:14 Updated by: h7k
  • Status Update from Open to Closed
Comment

20210517.0 を出しましたので,完了とします.

  1. \makeatletter\def\ltj@stop@overwrite@primitive{\vadjust\insert}\makeatother
  2. % \vadjust, \insert の LuaTeX-ja での再定義を抑止する
  3. \documentclass{ltjsarticle}
  4. \usepackage{breqn}
  5. \makeatletter\ltj@overwrite@primitive{\vadjust\insert}\makeatother
  6. % \vadjust, \insert を LuaTeX-ja 版定義にする

のようにすればうまくいくはずです.

Attachment File List

No attachments

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login