karel-brinda / tp-zpevnik

Zpěvník Technické přestávky. Výsledné (automaticky generované) zpěvníky se nachází na http://karel-brinda.github.io/tp-zpevnik/.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

@vasekp, @jhajas, @pedrosow: Souhlasíte s tím, jak to je navržené?

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:

  1. Není moc intuitivní, jak makro oddefinovat (efekt ukončit). V TeXu je jedinou možností uzavřít definici do skupiny.
  2. Dát pozor na to, aby lokální definice udělaná v jednom souboru nepřetékala do všech následujících.
  3. 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, \ifblok by nikdy neskončil a všechno by se rozhasilo poměrně spektakulárně.
  4. 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í s chords.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.