separador de lista, sin coma, sin punto y coma

separador de lista, sin coma, sin punto y coma

Estoy trabajando nuevamente en mi Liederbuch-Package y he desarrollado un sistema de metadatos para usar metadatos en encabezados y pies de página.

Actualmente lo uso ::como separador de listas, pero no estoy seguro de si no hay una opción mejor. ,y ;son imposibles porque aparecen en metadatos (es decir artist = Monty Burns, the evil-doer; Smithers:).

Actualmente tiendo a usar &o |en lugar de ::.

La pregunta principal es: ¿Este problema ya se ha solucionado en alguna parte? En caso afirmativo, ¿cómo se hace allí? Si no, ¿violo alguna regla de estilo?

es decir

\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}

Puedo usar estos valores en el encabezado o pie de página:

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

Respuesta1

Puedes usarlo ::como separador con expl3, pero necesitas un par de trucos. Suponiendo que estemos bajo ExplSyntaxOn, puedes hacer

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

y cuando necesite dividir la entrada en los dos puntos dobles, puede decir algo como

\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 }

donde #1representa el argumento a dividir.

Esto se debe a que debajo de \ExplSyntaxOnlos dos puntos hay una letra, pero al guardarla \tl_to_str:nla convertimos nuevamente en un "otro carácter" como está en el documento.

Sin embargo, esto no funcionará si necesita pasar la entrada a \keys_set:nn, porque espera comas como delimitadores.

En este caso, probablemente sea mejor reemplazar las comas con \comma{}y los dos puntos dobles con una coma.

Prueba de concepto.

\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 }

información relacionada