Portál AbcLinuxu, 1. května 2025 14:02
.chord { display: inline-block; position: relative; top: -1em; width: 0px; }Ale z hlavy nevím, zda jde to samé udělat i v XSL-FO. Píšete, že výstupem je i HTML – pak mi připadá nejjednodušší použít headless režim Chrome, ve kterém jde tisknout do PDF – Chrome umí z příkazové řádky pořídit screenshot nebo PDF. Podpora CSS v prohlížečích se v posledních letech rapidně zlepšila a pro stránkování podle mne nepotřebujete nic moc extra, a základní podporu prohlížeče mají. Pokud si ale chcete pohrát s tím, aby výstup vypadal přesně tak, jak chcete, a má to být to podstatné na vaší aplikaci, je nejlepší si to vykreslovat sám, pak máte všechno v ruce. Ale samozřejmě je to pracnější.
I v HTML bych akordy dělal spíš pomocí textu, tam stačí jednoduchý stylNo, on by neměl mít nulovou šířku - v případě, že je širší než k němu vázaný text, měly by dohromady mít šířku akordu, aby se nepřekrýval s následujícím. Ale jinak ano, principielně souhlasim. Já ty tabulky použil jako rychlý hack, o kterém jsem věděl, že bude fungovat a dávat celkem správné výsledky, ale dobudoucna bych to mohl nahradit nečím pěknějším v CSS třeba....chord { display: inline-block; position: relative; top: -1em; width: 0px; }
Píšete, že výstupem je i HTML – pak mi připadá nejjednodušší použít headless režim Chrome, ve kterém jde tisknout do PDF – Chrome umí z příkazové řádky pořídit screenshot nebo PDF. Podpora CSS v prohlížečích se v posledních letech rapidně zlepšila a pro stránkování podle mne nepotřebujete nic moc extra, a základní podporu prohlížeče mají.Já se touhle možností zabýval, ale zkoušel jsem myslím jen Firefox, ve kterém ta podpora není nic až tak dobrá (viz třeba tady). Nelezly mi z toho dobrý výsledky. Nicméně v Chromu to vypadá lépe, alespoň podle toho, co píšou na internetech.
Pokud si ale chcete pohrát s tím, aby výstup vypadal přesně tak, jak chcete, a má to být to podstatné na vaší aplikaci, je nejlepší si to vykreslovat sám, pak máte všechno v ruce. Ale samozřejmě je to pracnější.Ono se to koneckonců nevylučuje a v zásadě by nebyl problém nechat uživatele vybrat, jestli chce jen HTML, které může s možností tisku počítat, nebo jestli chce i PDF + větší kontrolu. Dát do konfigurace možnost třeba spustit nad výstupním souborem nějaký příkaz nebude složité.
tam [G]písnič[C]ku někdo [G]pí[C]s[D]ká.
Ten akord C (předposlední na řádku) je textově širší než ten jeden znak, ke kterýmu se váže ("s"). Z toho důvodu přeteče do následujícího akordu (D) a překryje se s ním. Viz přiložené snímky, ten správný je pomocí tabulky, ten druhý s tím CSS výše. Kdyby ten C akord byl ještě navíc třeba Cmi7
nebo něco takového, bylo by to ještě horší.
Další věc je, že je potřeba za tím akordem zajistit nějakou minimální mezeru (třeba pár pixlíků), aby nebyly těsně na sebe. V tom 'správném' snímku je ta mezera skoro až moc velká.
Neříkám, že se to nedá pomocí CSS vyřešit, určitě jo, jen to není tak jednoduché.
{tam }{[G]písnič}{[C]ku někdo} {[G]pí}{[C]s}{[D]ká.}
nastavením minimálních šířek uděláš snadnoNastavením minimálních šířek na co? Ta šířka je pokáždé jiná. Další problém je, že když jsou takovéhle dva řádky pod sebou, tak akordy z toho spodního překrývají ten vrchní. Já bych na to šel asi přes flexbox, ale nechce se mi teď s tím dělat...
Nastavíš min-width spanu s textem na šířku akordu a akordy se ti nebudou překrývat.Šířku akordu neznám. To je právě to, co chci po tom layoutu - aby si ji spočítal a uplatnil sám.
line-height
, pokud chcete řádky zalamovat ručně, řešil by to i margin-top
.
Jak má být vlastně graficky správně vysázeno to, když jsou akordy delší než text? Pouze s mezerami, jak je to na obrázku nahoře, je to podle mne špatně – mohou tím vzniknout jiná slova, a když ne, stejně se to špatně čte. Podle mne by to mělo být spojené buď alespoň pomlčkou, nebo lépe vodorovnou čárou vyplňující celou tu mezeru. Je na to nějaký úzus, jak se to dělá správně? Použít by na to šel asi flexbox, ten by na rozdíl od tabulky uměl i to automatické zalamování řádků. Řadit horizontálně úseky „od akordu k akordu“ a ten úsek pak rozdělit na horní polovinu pro akord a dolní pro text. Pomocí pozadí by se tam asi dala udělat i ta horizontální čára spojující části slov.
Ale pokud si s tím chcete pohrát, aby to vypadalo hezky, asi opravdu pomůže jen naprogramovat si vlastní vykreslovač – pochybuju, že nějaký z obecných vykreslovačů půjde znásilnit k tomu, aby tohle vykresloval hezky i ve všech okrajových případech. A psaní takového vykreslovače je určitě zábava Jak má být vlastně graficky správně vysázeno to, když jsou akordy delší než text? (...) Je na to nějaký úzus, jak se to dělá správně?Popravdě úplně nevim. Asi na to obecný úzus není. Tady jsou tři [1, 2, 3] příklady, jak to řeší jinde. Ten první se mi nelíbí, ty ostatní jsou meh. Ten třetí je taky s mezerou a to samý dělá i ChordPro. Ta vodorovná čára by mi asi osobně vyvhovovala nejvíc, možná by mohla být např. světlejší barvou nebo dotted nebo tak něco. Jen nevim, jestli by to šlo udělat v HTML. Možná by to mohl být element s výškou 0.5em, vertikálně zarovnaný dole, ~100% šířkou a border-top.
Ale pokud si s tím chcete pohrát, aby to vypadalo hezky, asi opravdu pomůže jen naprogramovat si vlastní vykreslovač – pochybuju, že nějaký z obecných vykreslovačů půjde znásilnit k tomu, aby tohle vykresloval hezky i ve všech okrajových případech. A psaní takového vykreslovače je určitě zábavajj to každopádně, a s použitím Lua je na tom navíc fajn, že to není hardcoded...![]()
ruby
element, který je přesně pro anotace v textu určený, jenže jeho speciální styly podporuje jenom Firefox. Viz codepen.io/anon/pen/JxeNEL.
Ja na generovanie PDF momentálne používam z3c.rml. Nevyžaduje to cairo, X-ka, webkit ani nič podobné, je to čisté python riešenie bez nejakých hrozných závislostí. Zdrojové xml-ka nie sú až také škaredé.
Ale ted vážně, kde je zdroják?Ještě není. Měl by být (např. podle doporučení Pietera Hintjense, že ano), ale zkrátka ještě není...
convert.php -i file.html -o file.pdfa ten licencuje jako GPL2 (a z podstaty věci dodá i se zdrojáky), program který ten convert.php bude execovat klidně může být pod jinou licencí.
tex_deeply_nested_lists.include tex_external_link_symbol.include tex_fix_figure_position.include tex_header_settings.include tex_table_alternating_color.include tex_verbatim_bgcolor.includeTím lehce rozšiřuji či zužuji potřebnou funkcionalitu v závislosti na projektu. Pokud LaTeX backend, tak jedině na této hodně "vysoké úrovni" zapínání a vypínání takovýchto "modulů" (tzn. žádné "generování LaTeXu"). Jinak, a teď prosím no flame, LaTeX nemám vůbec v oblibě (i to psaní matematiky jde v mnohých jiných notacích lépe) a preferuji téměř jakýkoliv jiný nástroj (především grafické, nevyžadující psaní značek).
Myslím, že Lilipond uměl snad i transponovat či ty zápisy šly i přehrát přes MIDI atd.Transponovat umí určitě, ale třeba Nashville notaci AFAIK neumí (ačkoli by se to asi dalo dohackovat v Guile).
Pokud LaTeX backend, tak jedině na této hodně "vysoké úrovni" zapínání a vypínání takovýchto "modulů" (tzn. žádné "generování LaTeXu").Tomu asi nerozumím. Jak bych třeba použil Lilypond aniž bych generoval .ly tak nebo onak?
Tomu asi nerozumím. Jak bych třeba použil Lilypond aniž bych generoval .ly tak nebo onak?Vyjádřil jsem se nepřesně. Samozřejmě obsah samotný bude nutné generovat. Avšak parametrizaci obsahu bych rozhodně nechtěl generovat jako součást obsahu, nýbrž pouze jako zapínání či vypínání "modulů" (např. obdobně jako jsem uvedl v případě pandocu).
\obeylines \lineskip=10pt \font\chordfont=cmr7 \font\rm=cmr12 \catcode`[=13 \def[#1]#2{{\raise1em\if#2>\hbox{\chordfont #1\hss}\else\hbox to0pt{\chordfont #1\hss}#2\fi}} tam [G]písnič[C]ku někdo [G]pí[C]>s[D]ká tam [G]pí[C]sničku někdo [G]pí[Cmi7]>s[D]ká \bye
\nadpis{Pískající cikán} \interpret{Spirituál kvintet} [G]Dívka [Ami]loudá se [G]vin[Ami]icí, [G]Tam, kde [Ami]zídka je [Hmi]níz[Ami]ká [G]tam, kde [Ami]stráň končí [Hmi]voní[C]cí, si [G]písnič[C]ku někdo [G]pí[C]sk[D]á. \nadpis{Be happy!} [Cmi] [Dmi] [F] [C] [Cmi7]H[C]ere's a little song I wrote [Dmi]You might want to sing it note for note Don't [F]worry be [C]happy Dont worry be happy now |:Dont worry be happy:| 4xa vylezl mi z toho přiložený soubor. Myslím, že to nevypadá zle, v porovnání s tím, co jsem po krátkém hledání našel na internetu.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.