Fedora je od 10. února dostupná v Sýrii. Sýrie vypadla ze seznamu embargovaných zemí a Fedora Infrastructure Team mohl odblokovat syrské IP adresy.
Ministerstvo zahraničí Spojených států amerických vyvíjí online portál Freedom.gov, který umožní nejenom uživatelům v Evropě přístup k obsahu blokovanému jejich vládami. Portál bude patrně obsahovat VPN funkci maskující uživatelský provoz tak, aby se jevil jako pocházející z USA. Projekt měl být původně představen již na letošní Mnichovské bezpečnostní konferenci, ale jeho spuštění bylo odloženo.
Byla vydána pro lidi zdarma ke stažení kniha The Book of Remind věnovaná sofistikovanému kalendáři a připomínači Remind.
Grafický editor dokumentů LyX, založený na TeXu, byl vydán ve verzi 2.5.0. Oznámení připomíná 30. výročí vzniku projektu. Novinky zahrnují mj. vylepšení referencí nebo použití barev napříč aplikací, od rozhraní editoru po výstupní dokument.
F-Droid bannerem na svých stránkách a také v aplikacích F-Droid a F-Droid Basic upozorňuje na iniciativu Keep Android Open. Od září 2026 bude Android vyžadovat, aby všechny aplikace byly registrovány ověřenými vývojáři, aby mohly být nainstalovány na certifikovaných zařízeních Android. To ohrožuje alternativní obchody s aplikacemi jako F-Droid a možnost instalace aplikací mimo oficiální obchod (sideloading).
Svobodná historická realtimová strategie 0 A.D. (Wikipedie) byla vydána ve verzi 28 (0.28.0). Její kódový název je Boiorix. Představení novinek v poznámkách k vydání. Ke stažení také na Flathubu a Snapcraftu.
Multimediální server a user space API PipeWire (Wikipedie) poskytující PulseAudio, JACK, ALSA a GStreamer rozhraní byl vydán ve verzi 1.6.0 (Bluesky). Přehled novinek na GitLabu.
UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch 24.04-1.2 a 20.04 OTA-12.
Byla vydána (Mastodon, 𝕏) nová stabilní verze 2.0 otevřeného operačního systému pro chytré hodinky AsteroidOS (Wikipedie). Přehled novinek v oznámení o vydání a na YouTube.
WoWee je open-source klient pro MMORPG hru World of Warcraft, kompatibilní se základní verzí a rozšířeními The Burning Crusade a Wrath of the Lich King. Klient je napsaný v C++ a využívá vlastní OpenGL renderer, pro provoz vyžaduje modely, grafiku, hudbu, zvuky a další assety z originální kopie hry od Blizzardu. Zdrojový kód je na GitHubu, dostupný pod licencí MIT.
file=open('../soubor.lyx','a')
#for nazev_souboru in ../nejake_pdf_documenty/*.[pP][dD][fF]; do
#nazev_souboru_bez_pripony=${nazev_souboru:25:-4}
text=r"""\begin_layout Standard
\begin_inset CommandInset label
LatexCommand label
name "${nazev_souboru_bez_pripony}"
\end_inset
\end_layout
\begin_layout Standard
\begin_inset External
template PDFPages
filename ${nazev_souboru:1}
extra LaTeX "pages=-, pagecommand={\thispagestyle{fancy}}, addtotoc={1,section,1,${nazev_souboru_bez_pripony},${nazev_souboru_bez_pripony}}"
scale 80
\end_inset
\end_layout
"""
file.write(text)
logging.debug('text: '+text)
#done
file.close()
del file
del text
Řešení dotazu:
import glob
import os
from jinja2 import Environment
# Načtení šablony do prom. tmp
env = Environment()
with open('cesta/k/templatu.lyx', 'r', encoding='utf8') as fread:
tmp = env.from_string(fread.read())
# dict s hodnotami
content = {}
# Pak tady budeš všechno možné, třeba to prolezení PDF souborů
# Dejme tomu, že magicka_funkce vrací list s názvy PDF
def magicka_funkce(path):
files = glob.glob(path + '*.pdf')
out = []
# Ošklivé, ale takhle nějak
for fl in files:
out.append({'cesta': fl,
'nazev_souboru': os.path.basename(fl),
'nazev_souboru_bez_pripony': os.path.splitext(os.path.basename(fl))[0]})
return out
seznam_souboru = magicka_funkce('cesta/')
content['seznam_souboru'] = seznam_souboru
# Nakonec ten seznam pošleš šabloně
vygenerovany_dokument_jako_string = tmp.render(content)
with open('vysledny_soubor.lyx', 'r', encoding='utf8') as fwrite:
fwrite.write(vygenerovany_dokument_jako_string)
No a v té šabloně budeš mít už syntaxi Jinja:
{% for pdf in seznam_souboru %}
\begin_layout Standard
\begin_inset CommandInset label
LatexCommand label
name "{{ pdf.nazev_souboru_bez_pripony }}"
\end_inset
\end_layout
\begin_layout Standard
\begin_inset External
template PDFPages
filename {pdf.nazev_souboru:1}
extra LaTeX "pages=-, pagecommand={\thispagestyle{fancy}}, addtotoc={1,section,1,{{ pdf.nazev_souboru_bez_pripony }}},{{ pdf.nazev_souboru_bez_pripony }}}"
scale 80
\end_inset
\end_layout
{% endfor %}
Jakmile generuju soubory, tak takhle. Než jsem se dostal k Jinja2, tak jsem to dělal stejně, jako to máš v otázce, tj. postupně zapisovat do souboru po kouskách. Ale tohle je o poznání jednodušší a čistší. Hlavně to podporuje cykly i podmínky (viz první řádek templatu).
Kromě Jinja2 má python ve standardní knihovně string.Template. Což je něco podobného, ale spíš jen formou search & replace.
nejake_pdf_dokumenty=glob.glob('../nejake_pdf_dokumenty/*.[pP][dD][fF]')
nejake_pdf_dokumenty.sort()
logging.debug('nejake_pdf_dokumenty: '+str(nejake_pdf_dokumenty))
for nazev_souboru in nejake_pdf_dokumenty:
logging.debug('nazev_souboru: '+nazev_souboru)
nazev_souboru_bez_pripony=nazev_souboru[25:-4]
logging.debug('nazev_souboru_bez_pripony: '+nazev_souboru_bez_pripony)
Tim bash skriptem jsem doposud vyplnoval pdf formulare a sadu lyx dokumentu ktere jsem jeste pak dodatecne rucne editoval (jejich obsah, ne kod) a nakonec vse zahrnul do jedineho lyx svazku a ten nakonec opet exportoval do pdf fasciklu pro konecne pouziti. Jak ten skript rostl tak vyslo najevo ze bash uz nevyhovuje a je treba prepsat do jineho jazyka, oddelit sablony od kodu (uz ted mi dochazi ke konfliktum syntaxi lyxu a pythonu, jako treba uvozovky) a pokud jde o kod samotny tak ten je potreba take restrukturalizovat, napsat funkce a rozdelit do vhodnych modulu. Navic bude asi potreba skript distribuovat takze je treba doresit i instalatory na jine OS. Diky za tip na reseni, toto vyuziju.
nazev_souboru[25:-4]. Teď to třeba na 3 písmenné přípony funguje, ale projet složku s jpg/jpeg a už to fungovat nebude. Proto existuje funkce splitext. A jestli bude potřeba skript i na Win, tak v modulu os jsou fce na práci s cestami, které chápou / a \, není pak nutné ve skriptu detekovat os a ručně uplácávat cesty.
Tiskni
Sdílej: