Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za duben (YouTube).
Provozovatel čínské sociální sítě TikTok dostal v Evropské unii pokutu 530 milionů eur (13,2 miliardy Kč) za nedostatky při ochraně osobních údajů. Ve svém oznámení to dnes uvedla irská Komise pro ochranu údajů (DPC), která jedná jménem EU. Zároveň TikToku nařídila, že pokud správu dat neuvede do šesti měsíců do souladu s požadavky, musí přestat posílat data o unijních uživatelích do Číny. TikTok uvedl, že se proti rozhodnutí odvolá.
Společnost JetBrains uvolnila Mellum, tj. svůj velký jazykový model (LLM) pro vývojáře, jako open source. Mellum podporuje programovací jazyky Java, Kotlin, Python, Go, PHP, C, C++, C#, JavaScript, TypeScript, CSS, HTML, Rust a Ruby.
Vývojáři Kali Linuxu upozorňují na nový klíč pro podepisování balíčků. K původnímu klíči ztratili přístup.
V březnu loňského roku přestal být Redis svobodný. Společnost Redis Labs jej přelicencovala z licence BSD na nesvobodné licence Redis Source Available License (RSALv2) a Server Side Public License (SSPLv1). Hned o pár dní později vznikly svobodné forky Redisu s názvy Valkey a Redict. Dnes bylo oznámeno, že Redis je opět svobodný. S nejnovější verzí 8 je k dispozici také pod licencí AGPLv3.
Oficiální ceny Raspberry Pi Compute Modulů 4 klesly o 5 dolarů (4 GB varianty), respektive o 10 dolarů (8 GB varianty).
Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
\special
tiskovým ovladačům. Je to pravda jen částečně a dnes si
o tom řekneme více.\special
a \pdfliteral
\special
a \pdfliteral
Po expanzi maker klade TeX písmena sazby (která vnímá jako obdélníky-boxy) vedle
sebe do řádků, tyto řádky jsou zase boxy, které klade pod sebe do sloupců. To
jsou také boxy, které jsou seskupeny případně do dalších boxů až vzniká
kompletní sazba strany: box. Mezi boxy strká TeX podle maker a vnitřních
algoritmů mezery různých pružností. Dále je TeX schopen vytvořit černý box
s rozměry, které mohou souviset s rozměry okolní sazby (\hrule
a \vrule
). Takové obdélníky, jsou-li velmi tenké a dlouhé, se
používají jako linky, například v tabulkách. Je tedy zřejmé, že s tímto
přístupem je TeX schopen sestavovat pouze černobílou sazbu a svislé nebo
vodorovné linky. Složitější grafiku takto nevytvoříme.
Kromě boxů, linek a mezer je TeX schopen do sazby dávat tzv.
\special
, což je bezrozměrná neviditelná „tečka“ v sazbě, která
uvnitř DVI formátu nese textovou informaci. Tuto informaci může napsat přímo autor
dokumentu, ale častěji je tato informace výsledkem expanze maker. Informaci pak
přečte tiskový ovladač, a pokud ji rozumí, vykoná, co se po něm žádá. Například
tam je jazykem ovladače napsáno: „přepni barvu sazby na zelenou“.
Tento koncept umožňuje dodatečně pomocí \special
dosáhnout všeho, co
dokáže použité tiskové zařízení, protože v argumentu \special
s tímto zařízením hovoříme jeho vlastním jazykem. Zpočátku, při zrodu
TeXu, bylo mnoho různých jazyků tiskových zařízení, takže argumenty příkazů
\special
byly závislé na následné technologii tisku. Později se téměř vše
převádělo na jazyk PostScriptu, který vyvinula firma Adobe. Tento jazyk prodělal
několik verzí a stal se koncem devadesátých let de facto standardem
v počítačové typografii. Konverzi z DVI do PostScriptu obstará program
dvips
, který přečte argumenty \special
, ve kterých mohou být
přímo low-level příkazy PostScriptu, umožňující řešit jakýkoli grafický
požadavek.
Dnes se častěji setkáme s formátem PDF, který ideově vychází z jazyka
PostScriptu, ale není s ním kompatibilní. Je to také jazyk, kterým je
možno popsat jakýkoli grafický element v dokumentu. K formátu
PDF je možné dojít cestou přes DVI a následným použitím konvertoru
dvipdfm
. Argumenty příkazu \special
v takovém případě
mohou obsahovat jednoduché PostScriptové konstrukce nebo další speciální
vzkazy, kterým tento konvertor rozumí. To je dokumentováno
například zde.
Druhou možností je vygenerování PDF přímo pdfTeXem. Ten nabízí pro změnu příkaz
\pdfliteral
, který funguje analogicky, jako příkaz \special
.
Jeho argumentem může být jakýkoli kód z jazyka PDF a bude vložen na to
místo sazby, kde je \pdfliteral
použit.
V PostScriptu se na zelenou barvu přepneme pomocí 0 1 0 setrgbcolor
a zpět na černou pomocí 0 setgray
. Takže přechodná změna na zelenou
může v TeXovém zdrojovém souboru vypadat takto:
\special{ps: 0 1 0 setrgbcolor}Sazba v zeleném.\special{ps: 0 setgray}
Po vytvoření DVI z této ukázky je možné ověřit, že PostScriptovému \special
rozumí nejen konvertor dvips
, ale též
program xdvi
, který správně zobrazí barvy. Rovněž konvertory
dvipdf*
rozumí PostScriptovým specialům a zkonvertují je do
odpovídajícího PDF kódu.
Při přímém použití pdfTeXu vytiskneme zelený nápis pomocí PDF kódů na přepínání
barev: 0 1 0 rg
přepne na zelenou a 0 g
na černou:
\pdfliteral{0 1 0 rg}Sazba v zeleném.\pdfliteral{0 g}
Autor textu pochopitelně nepíše tyto \special
nebo
\pdfliteral
do textu přímo, ale použije již hotový balík maker (například
v LaTeXu xcolor
, v plainu třeba OPmac). Barvy lze pak přepínat poměrně
přirozeně, například pomocí \color{green}
.
PdfTeX dovede vložit obrázek do výstupního PDF přímo, zatímco při cestě sazby
přes DVI se interně používá \special
, jehož argument obsahuje odkaz na
obrázek a požadovanou velikost obrázku. O vložení obrázku se pak postará
DVI ovladač. V obou případech autor textu typicky použije nějaké hotové makro.
Například:
% v OPmac \picw=\hsize \inspic obraz.png % v LaTeXu \usepackage{graphicx} \includegraphics[width=\textwidth]{obraz.png}
PdfTeX umí vložit obrázky formátů png
, jpg
,
jbig2
, pdf
. V sazbě pro ně vynechá odpovídající místo,
jako při vložení velkého boxu.
Podle „druhu“ obrázku je třeba volit vhodný formát. Pro fotografie je možný
bitmapový formát se ztrátovou kompresí jpg
. Pokud nechceme ztrátu
kvality bitmapového obrázku, použijeme png
. Konečně pro čárovou grafiku
(například Jiránkovy kresby perem) je nepochybně nejvhodnější vektorová grafika,
tedy formát pdf
. Jiné formáty (např. tif
, eps
)
je třeba na některý z uvedených formátů překonvertovat.
TeXista je zvyklý „programovat sazbu“ bez toho, aby přímo viděl výsledek. Může ho tedy napadnout a připadá mu přirozené, že by mohl také „programovat obrázky“. Pochopitelně nebude programovat obrázky typu fotografie. Na druhé straně fraktály, grafy, matematické náčrtky atd. jsou dobrými adepty na to vytvářet je pomocí zdrojových kódů. K tomu ale je potřeba programovací jazyk.
První možností je přímo využít jazyk tiskového zařízení, tedy PostScript nebo
PDF. Kód v tomto jazyku stačí napsat do parametru příkazu \special
a máme obrázek naprogramován. Ovšem tyto jazyky jsou příliš nízkoúrovňové
a po světě se nepotuluje příliš mnoho lidí, kteří je plně ovládají.
Z toho důvodu vznikly další jazyky, které kombinují možnosti TeXových maker
a jazyků tiskových ovladačů, nabízejí uživateli „programátorské rozhraní“ na
obrázky a na pozadí pochopitelně vytvoří sadu příkazů \special
s odpovídajícími parametry, které realizují obrázek. Takovým jazykem na obrázky
je například pstricks, který předpokládá, že výstup
povede cestou DVI → PostScript. Dalším obdobným a velmi propracovaným jazykem
je PGF/TikZ. Ten umožňuje navázat nejen
na PostScript, ale podpoří i přímý výstup pdfTeXem do PDF.
Když si prohlédneme ukázky obrázků vytvořené v TikZ, tedy pomocí TeXových maker, těžko budeme nadále tvrdit, že TeX grafiku neřeší.
Pro úplnost uvedu ještě zastaralou možnost tvorby velmi jednoduchých obrázků
přímo v LaTeXu v prostředí picture
. Ta je nezávislá na použité
tiskové technologii, protože nabízí jen omezenou sadu grafických prvků, které jsou
obsaženy jako znaky ve speciálním LaTeXovém fontu. Sestavením těchto znaků TeXovými
prostředky vznikají jednoduché obrázky.
Plno TeXistů si také oblíbilo pro programování obrázků použití Metapostu, což je rozšířený jazyk Knuthova Metafontu (původně navrženého na programování znaků fontů) s možností výstupu do PostScriptu. Výstup z Metapostu je možné zpětně zakomponovat do sazby.
Člověk při potřebě vytvořit vektorový obrázek typicky nesedne k textovému
editoru a nezačne obrázek programovat výše popsaným způsobem. Místo toho
použije interaktivní editor na obrázky, například Inkscape, Geogebra nebo něco
podobného. Na tomto místě se sluší upozornit na to, že takové programy často
nabízejí možnost exportu do některého z výše zmíněných programovacích jazyků na
obrázky. Kromě toho si ukážeme jeden způsob, který umožní do TeXových marker či
dokumentu vložit přímo jednoduchou čárovou grafiku vytvořenou Inkscapem. Stačí
tento obrázek uložit jako EPS, sejmout z tohoto výstupu v textovém editoru
část uvozenou q
a ukončenou Q
a překopírovat ji do
parametru příkazu \pdfliteral
. Uvedený úsek je totiž napsaný přímo
v jazyku PDF. Uvedu příklad. V tomto
souboru je EPS výstup jednoduchého smajlíka vytvořený Inkscapem. Do TeXového
zdrojového dokumentu pak můžeme například napsat:
% Definice makra \smajlik: \def\smajlik{\hbox to1.6cm{\vbox to1cm{}\pdfliteral{ q .1 0 0 .1 0 0 cm 0 214.857 444 -215 re W n 0.701961 g 443.43 107.427 m 443.43 48.099 344.164 0.002 221.715 0.002 c 99.266 0.002 0 48.099 0 107.427 c 0 166.759 99.266 214.857 221.715 214.857 c 344.164 214.857 443.43 166.759 443.43 107.427 c h 443.43 107.427 m f 0 g 194.285 133.713 m 194.285 128.033 176.379 123.427 154.285 123.427 c 132.195 123.427 114.285 128.033 114.285 133.713 c 114.285 139.396 132.195 144.002 154.285 144.002 c 176.379 144.002 194.285 139.396 194.285 133.713 c h 194.285 133.713 m f 317.715 132.572 m 317.715 118.685 304.41 107.427 288 107.427 c 271.59 107.427 258.285 118.685 258.285 132.572 c 258.285 146.459 271.59 157.713 288 157.713 c 304.41 157.713 317.715 146.459 317.715 132.572 c h 317.715 132.572 m f 0.776471 0 0 RG 15.68 w 1 J 0 j [] 0.0 d 4 M q 1 0 0 -1 0 214.857132 cm 130.285 130.285 m 130.285 130.285 214.855 201.145 306.285 134.855 c S Q Q }\hfil}} % Použití makra \smajlik: Aha, tu je smajlík: \smajlik. To je vše.
Tento příklad ukazuje, že je možné vytvořit obrázek interaktivně. Například pro oči smajlíka jsem neprogramoval jejich souřadnice, ale prostě jsem oči umístil v Inkscape „od oka“. Přesto se obrázek stává součástí maker TeXu a není uložen ve speciálním grafickém souboru. Expanzí dodatečných maker navíc lze měnit parametry obrázku (velikost, barvu, prohnutí úsměvu atd.), stačí jen maličko umět jazyk PDF. Úvod do této problematiky je možné najít například v článku Jednoduchá grafika PDF primitivně.
Existují obrázky, které v sobě obsahují text, jehož font by měl korespondovat s fontem okolního textu. Například popisky os, vrcholů a dalších útvarů v učebnici geometrie. Když je sazba kolem v Computer Modern, měly by být tyto popisky také v Computer Modern. V okamžiku, kdy se rozhodneme změnit okolní sazbu třeba na Times, měly by být popisky v Times. Když obrázek dodatečně zmenšíme nebo zvětšíme, neměly by se zmenšovat/zvětšovat popisky, které mají mít stále velikost základního písma. V souvislosti s tím je třeba řešit následující problémy:
Je sice možné pomocí TeXových \hbox
, \vbox
atd. umístit
text prakticky kamkoli, ale v makru je potřeba TeXu sdělit rozměrové údaje, kam
přesně to má dát. Možnost pokus/omyl je jistým řešením, ale není to moc pohodlné.
Existují tedy i jiné cesty. Například v Metapostu je možno do obrázků
vkládat na poměrně logická místa kotvy, podle kterých se pak dodatečným procesem
TeX – Metapost – TeX k těm kotvám umístí popisky. Nebo v Inkscape je možno
kromě obrázku psát texty přímo v TeXové notaci (například matematické vzorečky)
a pak zvlášť do PDF uložit obrázek bez textů a zvlášť TeXová makra,
která umístí texty na požadovaná místa. Toto řešení je ukázáno například
zde.
Je také možné všelijak kombinovat grafické prvky s textem. Například dekorativní rámeček bude mít rozměry dané množstvím textu, který je tím rámečkem obklopen. Příklady takových interakcí sazba–grafika lze nalézt v již zmíněném článku Jednoduchá grafika PDF primitivně.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
% Signature fields \def\siglist{} \def\sigfield#1#2#3{\xdef\siglist{\siglist @#1 }\setbox0=\hbox{\special{pdf: bxobj @App#1 width #3bp height #2bp}\special{pdf: content .9 .92 1 rg 0 0 #3 #2 re f}\special{pdf: exobj}}\ht0=0pt\dp0=0pt\wd0=0pt\box0\special{pdf: ann @#1 width #3bp height #\ 2bp << /Type /Annot /Subtype /Widget /FT /Sig /T (#1) /F 4 /H /P /P @thispage /AP << /N @App#1 >> >>}\setbox0=\null\ht0=#2bp\wd0=#3bp\box0} \def\acroform{\special{pdf: obj @AcroForm << /Fields [ \siglist ] /SigFlags 1 >>}\special{pdf: put @catalog << /AcroForm @AcroForm >>}}
\special{pdf:put ...}
jinam než do infa nebo hlavního katalogu).
Nicméně přístup pdfTeXu za správný nemám. TeX je značkovací jazyk navržený od počátku s chybou, spočívající v tom, že nerespektuje zásadu, že makra, která neznám, tiše ignoruji. Proto není vhodné implementovat speciální vlastnosti jednoho formátu jako systém maker, ale něčím, co tuto zásadu respektuje, tzn. např. \special
s prefixem typu. Když někdo vytvoří Úplně Nový Formát UNF, budou se příkazy pro něj zapisovat jako \special{unf: ...}
, a programátoři svá makra rozšíří o podporu tohoto nového formátu tak, že novou definici zapíší za starou, pro PDF.
U pdfTeXu lze sice vytvářet převodní makra - šlo by to ostatně pro XeTeX -, za vážnou vadu návrhu ale pokládám, že tak zůstane zachován "na věky věkův", minimálně v názvu maker, "pdf", ač tento formát může být dávno nahrazen nějakým jiným.
pdfTeX mám tedy za nevhodně koncipován.
--shell=escape
a \write18
-- je tak možné třeba spustit gnuplot a vložit výsledek do dokumentu, umí toho využívat např. TikZ.
Obecně mi ovšem grafika přijde jako slabé místo TeXové sazby, a je to podle mě kombinace několika věcí. Jednak je neinteraktivní grafika sama o sobě složitá, zadruhé zrovna markojazyk pro ni není to nejpohodlnější (TikZ, který se to snaží obejít, má překvapivá zákoutí, kde něco nefunguje kvůli expanzi - jednou jsem narazil na mocninu záporného čísla, kde bylo třeba psát {\x}^2
protože x
mohlo být záporné a unární minus mělo po expanzi menší prioritu než mocnina; už to myslím opravili), a zatřetí TeX nebyl navržen na to, aby s těmi programy dokázal interagovat -- typu protokol na komunikaci "kotev" pro text, dotazování externího programu na rozměry sazby apod. -- to se řeší obezličkami; osobně jsem to většinou řešil použitím stejného OTF fontu např. v matplotlibu a TeXu, ale ani to ještě není "ono", je třeba mít kolem dokumentu skripty na přegenerování obrázků apod.
\special{ps: 0 1 0 setrgbcolor}Sazba v zeleném.\special{ps: 0 setgray}
v sazbě, a co čert nechtěl, slovo Sazba
bude na konci jedné stránky, zatímco zbytek barevného textu vyjde na další stránku. Pak se taková jednoduchá makra krásně rozbijí. Obarví nám patičku stránky, zatímco zbytek textu na nové stránce bude černý.
Bude třeba mnoho práce a mnoho přepisování základních maker, než vše začne fungovat tak, jak bychom chtěli.
A co více, takový žlutý text pomocí \special{ps: 1 1 0 setrgbcolor}
po vytištění vůbec nemusí vyjít čistě žlutý. Čistou žlutou tiskovou barvu nelze v prostoru sRGB (implicitně použitého mnoha tiskovými zařízeními) nijak vyjádřit. A co hůř, každá tiskárna se s tím popere trochu jinak.