パッケージにおけるマクロ定義用マクロの使い分け

Re: パッケージにおけるマクロ定義用マクロの使い分け

- 和田 勇 の投稿
返信数: 0

誰も答えていないので、ここ数日考えていたことを、叩き台として投稿します。

Table of Contents

  1. new~系・provide~系・declare~系のどれを採用すべきか
    1. 例えば、\ruby のような名前であれば当然provide~系で定義すべきでしょうが …
    2. 例えば、\figref のような名前 …
    3. 初心者にエラーを出させたくない
    4. 被るということは、恐らく入れた他のパッケージで提供されているマクロの方を使用したいケース
  2. 標準のマクロ定義用マクロと、xparseの~DocumentCommandの使い分け

new~系・provide~系・declare~系のどれを採用すべきか

  • 懸念される問題を排除が目的であれば「同名」宣言時にエラーになる \new系だと考えています

  • それ以外の方法は、副作用を誘発する可能性があるということを承知の上で使用してもらう

    • あくまでも「使用禁止」と宣言しないこと!!副作用もあるけれど便利な面もあるので。

例えば、\ruby のような名前であれば当然provide~系で定義すべきでしょうが …

個人的には「しない」だろうな。エラー表示をさせないよう工夫させるより、 共同利用環境を整備し、どこで処理しても同じ結果が得られるようにしておく。

  • 昨今のハードウェアの進歩もあり texlive を full でインストール
  • 共同利用するスタイルファイルや TEXMFHOME TEXMFLOCAL 等で利用できるよう整備
  • バージョン管理ソフトを併用し、更新内容を利用者が容易に更新できるよう整備しておく
  • 共同利用するものは \input で取り込む方法などを検討

例えば、\figref のような名前 …

  • これは \label との関係だと思うので「fig:hoge:nantokakantoka」という ように\XXXXref で使いやすいようにキーワードなどを「:」で区切ったら良いと思います。

初心者にエラーを出させたくない

  • これは逆です。「体罰だと思われるかもしれませんが」 初心者のうちに「どう記述すればエラー」になることを経験させ、 対処方法を身につけさせるよう指導したら良いと思います。

被るということは、恐らく入れた他のパッケージで提供されているマクロの方を使用したいケース

  • マクロ名などのコンフリクト等の問題は、接頭辞として 「my」とか研究室、 プロジェクトなどの略語を使われたら良いと思います。

  • また調べる術を指導されたらいかがでしょうか

  • texdoc の使い方

  • kpsewhich の使い方
  • texlive 同梱ではないのですが ripgrep / ripgrep-all の併用

    • 対象ファイルのパスは、texdoc -l / kpsewhich / ログファイルから取得し 以下のようなコマンドの出力結果らめぼしいものを探し、詳しくは texdoc なので調べる ….

      rg ホゲホゲ 対象ファイルのパス
      rga ホゲホゲ 対象ファイルのパス
      

標準のマクロ定義用マクロと、xparseの~DocumentCommandの使い分け

  • 規定値とかの考慮がなければ「標準のマクロ定義用マクロ」をベースに
  • 規定値を考慮するなら
    • 「標準のマクロ定義用マクロ」では表現し辛いなら「xparseの~DocumentCommand」かしら