l3doc は {function} の余白ボックスに不要なバックスラッシュを追加します

l3doc は {function} の余白ボックスに不要なバックスラッシュを追加します

いくつかのパッケージをドキュメント化するために使用していますl3doc(公式には安定していないことは承知していますが、気に入っています...)。項目の 1 つがバックスラッシュで始まるマクロである場合{function}{<list>}、すべての項目にバックスラッシュが追加されるという問題が発生しました。<list>

\documentclass{l3doc}

\begin{document}

\begin{function}{{environment}}
Description
\end{function}
\begin{function}{\command}
Description
\end{function}
\begin{variable}{counter}
Description
\end{variable}
\begin{function}{{environmentII}, counterII, \commandII}
Description for multiple items
\end{function}

\begin{macro}{{environment}}
Definition
\end{macro}
\begin{macro}{\command}
Definition
\end{macro}
\begin{macro}{counter}
Definition
\end{macro}
\begin{macro}{{environmentII}, counterII, \commandII}
Description for multiple items
\end{macro}

\end{document}

この例では、単一のアイテムを使用すると<list>期待どおりに動作しますが、リストにマクロを追加するとすぐにすべてのアイテムがバックスラッシュ.{macro}この動作は表示されません…

ここに画像の説明を入力してください

これを防ぐ方法はありますか?

答え1

環境の使い方を間違えているように思います。想定される引数は関数か関数のリストです。しかし、渡したリストの要素はどれもl3の意味での関数ではありません。(しかし、環境は5月ドキュメントレベルのコマンドも対象としている可能性があります(下記参照)。その場合、いくつかの渡しているものの中には関数がありますが、他のものは関数ではありません。

期待どおりに動作すると言っている場合でも、項目が一貫してフォーマットされているわけではないことに注意してください。たとえば、counterパーサーには変数として見えないため、タイプライターではなくセリフ フォントでフォーマットされます。 ( は\l_tobi_counter_intおそらくここで動作し、l3 と同等です。)

提供されるさまざまな環境を定義するコードドキュメント環境が文書化しようとしているものの種類に応じて、予想される構文に従って引数を処理します。

たとえば、環境は、コンマ区切りリスト内の各要素でfunctionを検索し、名前とその引数の指定を区別します。この情報は、自動的に処理され、標準的な方法でフォーマットされます。:

例えば、

\begin{function}{\Tobi_function_one:nn, \Tobi_function_one:Vn, \Tobi_function_one:VV}
Description for multiple items
\end{function}

同じ関数の 3 つのバリアント (つまり、基本関数のバリアントが通常の方法で生成されたケース) を扱っていることを検出します。次に、最初のバリアントを基本バリアントとしてフォーマットし、残りの 2 つをバリアントとしてフォーマットし、それらを組み合わせて、異なる引数指定子を区別します。

バリアント関数

カンマ区切りのリストは、リストされた項目がテーマの小さなバリエーションである場合、つまり、異なる引数の指定を持つ同じ関数や、ある種のバリアント形式である場合に使用します。ただし、環境、カウンター、マクロはこのような種類ではないため、このようにグループ化すべきではありません。

何に使うべきかよく分かりませんmacro。ドキュメントがあまり見つかりません。ドキュメントそして、l3 のドキュメントのソースからは、その区別が正確に何であるのか理解できませんでした。

macro最初は、ドキュメントレベルのコマンドを意図しているのではないかと思いましたが、上で述べたにもかかわらず、xparseのドキュメントfunctionでは、ドキュメントレベルのコマンドを文書化するために使用しています。これらのコマンドは機能まったく。これはドキュメント レベルのものと下位レベルの L3 のものを区別するアイデアの一部であり、「関数」は後者にのみ適用されると考えていました。しかし、これは明らかに間違っています。(そして、もちろん、macro関数は確かにマクロなので、必ずしも意味をなさないでしょう。)

私が試してみたサンプルコードは次のとおりです。

\documentclass{l3doc}
\begin{document}
\begin{function}{\Tobi_function_prior:n}
  Description
\end{function}
\begin{function}{\command:}
  Description
\end{function}
\begin{variable}{\l_Tobi_variable_tl}
  Description
\end{variable}
\begin{function}{\Tobi_function_one:nn, \Tobi_function_one:Vn, \Tobi_function_one:VV}
  Description for multiple items
\end{function}
\begin{function}{\TobiDocumentCommand}
  \begin{syntax}
    \cs{TobiDocumentCommand}\marg{mandatory argument}
  \end{syntax}
\end{function}
\end{document}

l3 ドキュメント実験

関連情報