Portál AbcLinuxu, 7. května 2025 12:44
Řešení dotazu:
< --- > binmode(STDIN, ":utf8"); > binmode(STDOUT, ":utf8"); > > 18,19c21 < my $hyp = new TeX::Hyphen; < --- > my $hyp = new TeX::Hyphen '/usr/share/texmf-dist/tex/csplain/base/czhyphen.tex', 'style' => 'czech',;
Groff umí dělit slova, dokonce má i slovník s českým dělení slov (ukradený z TeXu). Jen se mu musí říci, že jazyk je čeština parametrem -mcs
. Příklad manuálové stránky natažené na šířku terminálu včetně dělených slov:
(echo ".ll ${COLUMNS}\n"; bzcat /usr/share/man/cs/man1/shigofumi.1.bz2) | /usr/bin/preconv | groff -Tutf8 -mandoc -mcs
... řádek textu zadané šířky další řádek blbě vycházejícíTotiž můžeš zarovnat:
... řádek textu zadané šířky další řádek blbě vychá- zejícínebo:
... řádek textu zadané šířky další řádek blbě vycháze- jícícož není ani v jednom případě do bloku.
Těby dived ptyzruně. Měji šlucry tří chré lážlotist vumrou tiper v nic gláti úmýpech. Vlydi trou- di prýv k paská sro prytě fly- křu v kust. Oří o půcpa a vimoj opo trouchetrá utě děšležrokla a mlehřou. Puďni šru vonitědre crodra vremhrn niv, nit těpoma- bud zroum nědě hlysk srážlo věti v chévu břat z mřidis. Vrůštniž hrec z divluděře důd hrovu mru- fí hlů člymflů miť. Dě timan vé vřep dředi hlíboumrů otoučpa- bi vadigu skecru krel opiv ha- ti. Flůchlavrum o mrepré z glouš stomřá, cláni ratikřes sámřáč- lit šle a matěňáďsé. Z dělkác vostáčloř děť nip chlapréleň s myktý. Fi mlíďglůch v clů ně- chreť nichra kra zytý pepo zlo- famne leř. Třužláč klyť i vydě vo těž ďodlo hružlech drbětrévře tlezaz myv. Mežrůst šlévro nyd.A kdyby to někdo potřeboval, tady je kód:
#!/usr/bin/env python3 def monoblock(text,width=80,lang='czech',emergencystretch='2em'): content=r''' \documentclass[]{article} \usepackage{polyglossia} \setdefaultlanguage{%s} %%\usepackage{showhyphens} \usepackage{fontspec} \setmainfont{Latin Modern Mono} \pagestyle{empty} \usepackage{ragged2e} \lefthyphenmin=2 %% tune emergencystretch by hand until happy \emergencystretch=%s \parindent=0pt \begin{document} \begin{minipage}{%dex} \RaggedRight %s \end{minipage} \end{document} '''%(lang,emergencystretch,width,text) import tempfile, subprocess, os.path, webbrowser, time with tempfile.TemporaryDirectory() as tmpDir: tex,pdf=[tmpDir+'/main.'+ext for ext in ('tex','pdf')] print(tex) f=open(tex,'w') f.write(content) f.close() subprocess.call(['lualatex',tex],cwd=tmpDir) txt=subprocess.check_output(['pdftotext','-raw',pdf,'-']).decode('utf-8') webbrowser.open('file://'+os.path.abspath(pdf)) time.sleep(2) return expandToBlock(txt,width) def expandToBlock(txt,wd): import re, random ll=txt.split('\n') lens=[len(l) for l in ll] maxWd=max(lens) if maxWd>wd: print('WARN: max unexpanded text width %d is greater than required width %d. Increasing to %d.'%(maxWd,wd,maxWd)) wd=maxWd for i,l in enumerate(ll): # skip last paragraph line if i+1==len(ll) or (i+1<len(ll) and ll[i+1]==''): continue pats=[r'… \b',r'\. \b',r': \b',r', \b',r'\) \b',r'\b \(',r'\b \b'] patReps=['… ','. ',': ',', ',') ',' (',' '] for ex in range(1,5): # expand to multiple spaces for pat,prep in zip([p.replace(' ',ex*' ') for p in pats],patReps): matches=list(re.finditer(pat,l)) if not matches: continue #random.shuffle(matches) todo=min(len(matches),wd-len(l)) m2=random.sample(matches,todo) # print('use %d occurrences of "%s" (out of %d)'%(todo,pat,len(matches))) # replace from right to left to preserve indices for m in sorted(m2,key=lambda x: -x.span()[0]): l=l[:m.span()[0]]+prep.replace(' ',(ex+1)*' ')+l[m.span()[1]:] if len(l)==wd: break if len(l)==wd: break ll[i]=l return '\n'.join(ll) if __name__=='__main__': print('\n\n'+monoblock('Těby dived ptyzruně. Měji šlucry tří chré lážlotist vumrou tiper v nic gláti úmýpech. Vlydi troudi prýv k paská sro prytě flykřu v kust. Oří o půcpa a vimoj opo trouchetrá utě děšležrokla a mlehřou. Puďni šru vonitědre crodra vremhrn niv, nit těpomabud zroum nědě hlysk srážlo věti v chévu břat z mřidis. Vrůštniž hrec z divluděře důd hrovu mrufí hlů člymflů miť. Dě timan vé vřep dředi hlíboumrů otoučpabi vadigu skecru krel opiv hati. Flůchlavrum o mrepré z glouš stomřá, cláni ratikřes sámřáčlit šle a matěňáďsé. Z dělkác vostáčloř děť nip chlapréleň s myktý. Fi mlíďglůch v clů něchreť nichra kra zytý pepo zlofamne leř. Třužláč klyť i vydě vo těž ďodlo hružlech drbětrévře tlezaz myv. Mežrůst šlévro nyd.',width=40,emergencystretch='2em'))
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.