나는 다시 Liederbuch-Package 작업을 하고 있으며 머리글과 바닥글에 메타데이터를 사용하는 메타데이터 시스템을 개발했습니다.
현재 ::
목록 구분 기호로 사용하고 있지만 더 나은 옵션이 없는지 잘 모르겠습니다. 메타데이터(예: ) 에 나타나기 때문에 불가능합니다 ,
.;
artist = Monty Burns, the evil-doer; Smithers
나는 현재 . 대신 &
or 를 사용하는 경향이 있습니다 .|
::
주요 질문은 이 문제가 이미 어디에서나 처리되었는가입니다. 그렇다면 그곳에서는 어떻게 이루어지나요? 그렇지 않다면 스타일 규칙을 위반하는 것입니까?
즉
\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 }