From 849dc2dfb572768b126f66f20254e4e8b9fb4ec0 Mon Sep 17 00:00:00 2001 From: anarsec <anarsec@riseup.net> Date: Tue, 11 Jul 2023 16:52:07 +0000 Subject: [PATCH] layout updates --- content/posts/linux/index.md | 1 + content/posts/tails-best/index.md | 1 + layout/anarsec_article.typ | 65 +++++++++++++++--------- layout/python/anarsec_article_to_pdf.py | 6 ++- static/images/destroy.png | Bin 0 -> 16591 bytes 5 files changed, 47 insertions(+), 26 deletions(-) create mode 100644 static/images/destroy.png diff --git a/content/posts/linux/index.md b/content/posts/linux/index.md index 42a9099..2427d7a 100644 --- a/content/posts/linux/index.md +++ b/content/posts/linux/index.md @@ -9,6 +9,7 @@ tags = ["intro", "linux", "tails", "qubes", "easy"] [extra] blogimage="/gifs/destroy.gif" +blogimagepng="/images/destroy.png" toc=true dateedit=2023-05-10 a4="linux-a4.pdf" diff --git a/content/posts/tails-best/index.md b/content/posts/tails-best/index.md index efb509f..bd8756e 100644 --- a/content/posts/tails-best/index.md +++ b/content/posts/tails-best/index.md @@ -335,6 +335,7 @@ Hacking is really a way of life. If you are truly committed to your cause, you s <br> +<hr> [^1]: This applies to the IPv4 Internet protocol standard. Caution: In some company networks, this no longer applies! diff --git a/layout/anarsec_article.typ b/layout/anarsec_article.typ index 94d8317..67dbe86 100644 --- a/layout/anarsec_article.typ +++ b/layout/anarsec_article.typ @@ -5,32 +5,9 @@ lastediteddate: none, description: none, subtitle: none, + category: none, content ) = { - // format links - show link: it => { - it.body - if type(it.dest) == "string" { - if it.dest.starts-with("https://") or it.dest.starts-with("http://") { - footnote[#it.dest.trim("https://", at: start).trim("http://", at: start)] - } - else if it.dest.starts-with("/glossary#") or it.dest.starts-with("/glossary/#") { - locate(location => { - let elements = query(label(it.dest.trim("/glossary#", at: start).trim("/glossary/#", at: start)), location) - text[#super[†]] - }) - } - else if it.dest.starts-with("/") { - footnote({text[anarsec.guide] + it.dest}) - } - } - else if type(it.dest) == "label" { - locate(location => { - let elements = query(it.dest, location) - text[ (#emph(elements.first().body))] - }) - } - } // format lists set list(marker: ([•], [--])) @@ -48,6 +25,11 @@ text(18pt, subtitle) } } + + #set align(center + bottom) + + #text(18pt)[Series: #category] + ] // inside cover @@ -64,6 +46,40 @@ #outline(indent: 20pt, depth: 3) ] + // format links + show link: it => { + it.body + if type(it.dest) == "string" { + if it.dest == "https://anarsec.guide/recommendations" or it.dest == "/recommendations" { + text[ (#emph()[Recommendations])] + } + else if it.dest.starts-with("/recommendations#") or it.dest.starts-with("/recommendations/#") { + locate(location => { + let elements = query(label(it.dest.trim("/recommendations#", at: start).trim("/recommendations/#", at: start)), location) + text[ (#emph()[Recommendations:] #emph(elements.first().body))] + }) + } + else if it.dest.starts-with("https://") or it.dest.starts-with("http://") { + footnote[#it.dest.trim("https://", at: start).trim("http://", at: start)] + } + else if it.dest.starts-with("/glossary#") or it.dest.starts-with("/glossary/#") { + locate(location => { + let elements = query(label(it.dest.trim("/glossary#", at: start).trim("/glossary/#", at: start)), location) + text[#super[†]] + }) + } + else if it.dest.starts-with("/") { + footnote({text[anarsec.guide] + it.dest}) + } + } + else if type(it.dest) == "label" { + locate(location => { + let elements = query(it.dest, location) + text[ (#emph(elements.first().body))] + }) + } + } + // content set page(numbering: "1") set align(left) @@ -116,3 +132,4 @@ ] ] ] + diff --git a/layout/python/anarsec_article_to_pdf.py b/layout/python/anarsec_article_to_pdf.py index 521c90e..cdacaac 100644 --- a/layout/python/anarsec_article_to_pdf.py +++ b/layout/python/anarsec_article_to_pdf.py @@ -101,8 +101,9 @@ class Converter: description = description_txt_path.open().read() # Copy the front image - front_image = pathlib.Path(workingDirectory) / ("front_image" + pathlib.Path(toml_front_matter['extra']['blogimage']).suffix) - shutil.copy(self.anarsec_root / "static" / toml_front_matter['extra']['blogimage'].removeprefix("/"), front_image) + blogimageid = "blogimagepng" if "blogimagepng" in toml_front_matter["extra"] else "blogimage" + front_image = pathlib.Path(workingDirectory) / ("front_image" + pathlib.Path(toml_front_matter['extra'][blogimageid]).suffix) + shutil.copy(self.anarsec_root / "static" / toml_front_matter['extra'][blogimageid].removeprefix("/"), front_image) # Copy the back image back_image = pathlib.Path(workingDirectory) / "back_image.png" @@ -160,6 +161,7 @@ class Converter: lastediteddate: "{toml_front_matter["extra"]["dateedit"]}", description: "{description}", subtitle: "{toml_front_matter.get("description")}", + category: "{toml_front_matter["taxonomies"]["categories"][0]}", content ) {typst_path.open().read()} diff --git a/static/images/destroy.png b/static/images/destroy.png new file mode 100644 index 0000000000000000000000000000000000000000..5b82d814080cae3677526dc2a1ecf211d94fdd7f GIT binary patch literal 16591 zcmeHvXHZjX7p@+Tpdx|=Q0hTYlqyOMO{vm5p`#)-6e*#Hs5BLUqckBjMTi6f(n1LY z0qLCpk=|<vJ%pCzZoirP@6Nq{?%cUQzA%%W*_nCw&f4o;<$0dPJ7Ys_mWx~$&zw2K zqVq(<^vs#RfzM~(p8pFtqaBmN3LF@p>uGD8q5t{IZ9pcSIrGmM9gWB4!I`9~pz!O? z^X)sXdVv*d%70(|G+??a{wjd`uOah|>ts)>{+Ti3jJvY?eGWU1w)V|`JUjcb;MPAw zZ}vIV)b6e+kA0fq-}~W-aZd8Qco@>S+wSr}F(i<ZK6ccnq{+^~Cjeah%%k&AJ<k7p zfIL?EbNuJZpPM@K<QK!A!_}QX@2@oefBb4ZRpQUhNl2@f*v+90>{Zq;`gmQ;p4~kA z=k&YaKktuj@%=gc`<Cg?L8$HygLqy+LEA`<cl}(9fI1_yKz4*n)4OZJnI(Cqg&C+9 zXU@z@eh7YL**l_8*=WO!+Ub=|tpl~Hl=f!}3JNMh*M*`6)&j)sInJEfCa5X>47p>% zDgUs*N3!vWfJT06<=vpIPxUZ~(iXscxhij&R^-~_h$<pgHu<RX&&o3$Apu{e9MP}_ z>h@j!$lan+n=m8upo$;i$w9f!%#3HwynOZ#U*^o|$oRcEohvr#-$vQcG8%`6jF5dJ z7atqz@OsTI|BrCQLES45*w!LkiD14~Q{R{C7h)U+k^NDpQpvnCtF}}S8<VHa7g3X& zJ3CxxrWm*(pPe!ikY6`@`}Xbpf^Qm{+UXw(D4gObf`5NrH_OZ07<(*+G+uX1e7A9} z<UkT@ltbl|H@d=_k$A$8ulx2Ty3{aVieRNH-u57_lRBE5_wt7p+*Si6r#B|=6uBVD z{JzM)3YK!taN%**b0{r=IWPQDXjOrOoc_zlTuO(xBAfn+vMOI}NmM=hmLKQOhmiJd z?)WGe&2~b$R!@Jg70(4FRVCR|$#^4G+x;dc2Rd@2@e%Q{lADf-2>B^pR{gJuz&#d7 zDeJyT7Pl*=!w#BTzDg-KQ@zfs=!|k}Qp1Q?k2ohV8*z(DeDKW0uZ13Lq-SOhH-rT_ zcUC0{Z|NJ&G{WIpT3T@&EN9M~TClO�=eC%@{~%;%dONzmYkn(M+h+yv>C518CDA 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 A7XSbN literal 0 HcmV?d00001 -- GitLab