リスト区切り文字、カンマなし、セミコロンなし

リスト区切り文字、カンマなし、セミコロンなし

私は再び Liederbuch パッケージに取り組んでおり、ヘッダーとフッターでメタデータを使用するためのメタデータ システムを開発しました。

現在、::リスト区切り文字として を使用していますが、もっと良いオプションがないかどうかはわかりません。,および;はメタデータ内に表示されるため、使用できません (つまり、artist = Monty Burns, the evil-doer; Smithers)。

私は現在、の代わりに&または を使用する傾向があります。|::

主な質問は、この問題がすでにどこかで処理されているかどうかです。処理されている場合、そこではどのように処理されていますか。処理されていない場合、スタイル ルールに違反していませんか。

つまり

\begin{Lied}
[title = Als noch Arkadiens gold'ne Tage ::
lithographer = lilypond ::
artist = Test: Test]
{nt}{5}
\includegraphics[width=\linewidth,page=1]{CVLB5-AlsNochArkadiensGoldeneTage}
\notentext{\nspace*{11}Als \ns noch \ns Ar \ns* ka \ns* \ns di \ns* ens \ns gold \ns* ne \nspace{15}}
\end{Lied}

ヘッダーまたはフッターでは次の値を使用できます。

\LBHead{\textbf{\print{title}} \\ \print{artist} \hfill \print{lithographer}\par}

答え1

::を の区切り文字として使うこともできますexpl3が、いくつかのコツが必要です。 の下にあると仮定するとExplSyntaxOn、次のようにすることができます。

\tl_const:Nx \c_maestroglanz_doublecolon_tl { \tl_to_str:n {::} }

入力を二重コロンで分割する必要がある場合は、次のように記述します。

\cs_generate_variant:Nn \seq_set_split:Nnn { NV } % needed just once

\seq_set_split:NVn \l_maestroglanz_whatever_seq \c_maestroglanz_doublecolon_tl { #1 }

ここで、#1は分割する引数を表します。

\ExplSyntaxOnこれは、コロンの下に文字があるが、これを保存すると、\tl_to_str:n文書内にあるのと同じように「他の文字」に戻ってしまうためです。

ただし、区切り文字としてコンマが想定されているため、入力を に渡す必要がある場合は、この方法は機能しません\keys_set:nn

\comma{}この場合は、カンマを に、二重コロンをカンマに置き換えた方が良いでしょう。

コンセプトの証明。

\keys_define:nn { maestroglanz/lied }
 {
  title .tl_set:N = \l_maestroglanz_lied_title_tl,
  lithographer .tl_set:N = \l_maestroglanz_lied_lithographer_tl,
  artist .tl_set:N = \l_maestroglanz_lied_artist_tl,
 }

 \NewDocumentEnvironment{Lied}{O{}mm}
  {
   \tl_set:Nn \l_maestroglanz_lied_options_tl
   \tl_replace_all:Nnn \l_maestroglanz_lied_options_tl { , } { \comma{} }
   \tl_replace_all:NVn \l_maestroglanz_lied_options_tl \c_maestroglanz_doublecolon_tl { , }
   \keys_set:nV { maestroglanz/lied } \l_maestroglanz_lied_options_tl
  % other commands for the begin part
 }
 {
  % commands for the end part
 }

% the needed variants
\cs_generate_variant:Nn \tl_replace_all:Nnn { NV }
\cs_generate_variant:Nn \keys_set:nn { nV }

関連情報