曲パッケージ: gtab 定義を外部ファイルに保存するにはどうすればいいですか?

曲パッケージ: gtab 定義を外部ファイルに保存するにはどうすればいいですか?

私はラテックス パッケージ。現在、各曲のコードのギター フレット ダイアグラムを定義していますが、外部ファイルで定義して各曲に含めたいと思います (繰り返しを避けるため)。

これどうやってするの?

図とコマンド \gtab については、ここで説明します。 http://songs.sourceforge.net/songsdoc/songs.html#sec6

しかし、役に立つ情報は見つかりませんでした。

答え1

タブ図の「データベース」を作成したいとお考えだと理解しています。

2 つの列を持つデータベースを作成できます。最初の列はコード名用、2 番目の列はタブの説明用です (これらは\gtabコマンドの最初の引数と 2 番目の引数になります)。

\begin{filecontents*}{tabs.txt}
A,X02220:001230
C#sus4,4:XX3341
B&,X13331
\end{filecontents*}

\documentclass{book}
\usepackage{xparse}
\usepackage{songs}
\ExplSyntaxOn
\ior_new:N \g_fedelibre_get_tabs_ior
\prop_new:N \g_fedelibre_tabs_prop

\cs_new_protected:Npn \fedelibre_add_to_prop:w #1,#2!!
 {
  \prop_gput:Nnn \g_fedelibre_tabs_prop {#1} {#2}
 }
\ior_open:Nn \g_fedelibre_get_tabs_ior {tabs.txt} 
\ior_str_map_inline:Nn \g_fedelibre_get_tabs_ior
 {
  \fedelibre_add_to_prop:w #1!!
 } 
\DeclareDocumentCommand{ \fedetab }{ v }
 {
  \prop_get:NnNTF \g_fedelibre_tabs_prop {#1} \l_tmpa_tl
   {
    \fedelibre_gtab:nV {#1} \l_tmpa_tl
   }
   {
    \msg_term:n {Maybe~ you~ have~ mispelled~ your~ tab!}
   }
 }
\cs_set_eq:NN \fedelibre_gtab:nn \gtab
\cs_generate_variant:Nn \fedelibre_gtab:nn { nV }
\ExplSyntaxOff
\begin{document}
\begin{songs}{}
\beginsong{Song}
\beginverse
\fedetab{A}  \fedetab{C#sus4} \fedetab{B&}
 \[C]  \[D]  \[C] 
\endverse
\endsong
\end{songs}
\end{document}

このコードはデータベースを読み取り、エントリをプロパティ リストに保存します。\fedetab{something}コマンドを使用して、コードのタブを印刷しますsomething。 そのコード名が存在しない場合は、メッセージが表示されます。

感謝エグレッグコードを役に立たなくしていた拡張問題を解決したため。

関連情報