Možnost vypnout sázení akordů (lokálně / globálně)
karel-brinda opened this issue · comments
Popis: Pokud bude definováno makro \NOCHORDS
, nebude mít \Ch
žádný efekt.
Způsob použití: Akordy bude možné vypnout pro celý zpěvník (přes options) nebo lokálně (lokálně nadefinované a oddefinované makro).
Využití: momentálně např. pro písně TP BANDU, které jsou v jeho zpěvníku bez akordů, ale všude jinde mají být s akordy (nebude tedy nutné vkládat podmínky před každý akord / řádek / sloku a rozdvojovat či komplikovat zdrojový kód písně). Př. situace, kterou to vyřeší: https://github.com/karel-brinda/tp-zpevnik/blob/6898d98dbaffa98961e452cfe2689d93ca1245bb/tp-songs/04_tp/Johnny____Dej_mi_n%C4%9Bjak%C3%BD_t%C3%B3ny.tex.
Pro mě ok - občas si ještě zaznamenáme progresi nahoře před slokou. Pujde tedy v pisni udelat neco takoveho?
\zp{Krasna neznama}{Pusinka}
\ifdefined\TPBAND
<A> ~ <D> ~ <C>
\define NOCHORDS
\fi
Tady <A>se uz akordy <D>nebudou tisknout <C>pokud TPBAND
Půjde použít přesně tohle.
Pár poznámek:
- Není moc intuitivní, jak makro oddefinovat (efekt ukončit). V TeXu je jedinou možností uzavřít definici do skupiny.
- Dát pozor na to, aby lokální definice udělaná v jednom souboru nepřetékala do všech následujících.
- Taky na to, aby to člověk nepsal přesně tak, jak v Pepově příkladu. Za definicí musí následovat obsah (např.
\def\NOCHORDS{}
). Tady by jím náhodou byl konec řádku, ale pokud by ho někdo odstranil, pak by se\NOCHORDS
zadefinovalo jako\fi
,\if
blok by nikdy neskončil a všechno by se rozhasilo poměrně spektakulárně. - Nepřehánět to se složitou implementací. Ekvivalentní efekt v současné verzi je něco jako
\def\Ch#1{}
(tohle konkrétně si nerozumí schords.py
, muselo by to být někde mimo jeho dosah), tak není třeba, aby výsledek byl o moc delší než tohle.
Jinak souhlasím, že jako řešení je to mnohem lepší než psát nadvakrát celé sloky.
Navrhoval bych malou úpravu: udělat globální a lokální řešení jiné. Stejně nejsou ekvivalentní – globální NOCHORDS
nejde lokálně vypnout.
Globálně by to byla option
, lokálně \if
. Díky tomu by se dalo dobře zapínat a vypínat za běhu bez nutnosti myslet na skupiny, a třeba \zs
by mohla automaticky vracet na \iftrue
. Na globální úrovni by to znamenalo zadefinovat \Ch
jako buď akord nebo prázdnou akci už v songbook.sty
a přeskočení transpozic (trochu rychlejší běh).
Další výhoda by byla možnost změny sázení v případě globální absence akordů: dalo by se kompletně vyhodit dvojí řádkování.
Mohli bychom nad tím ještě chvilku přemýšlet? Nemůžu se tomu věnovat naplno, dostanu se k tomu zase za pár dní. Přivedlo mě to totiž ještě na další myšlenku -- příkaz pro bezakordovou sloku, udělám na to samostatný ticket (pro prodiskutování).
Já teď taky neplánuji nic programovat.