From 6c65ef124f0bb8abe2589e7a7e25260c4082c3ba Mon Sep 17 00:00:00 2001 From: Jeff LANCE Date: Sun, 31 Aug 2025 16:49:05 +0200 Subject: [PATCH] up --- _extensions/cours/_extension.yml | 8 +- .../_extensions/GeorgRamer/si/_extension.yml | 8 + .../cours/_extensions/GeorgRamer/si/si.lua | 169 ++++++++++++++++++ .../latex-environment/_extension.yml | 9 + .../latex-environment/latex-environment.lua | 150 ++++++++++++++++ _extensions/cours/after-header-includes.latex | 53 ++++++ _extensions/cours/before-body.tex | 0 _extensions/cours/before-title.tex | 82 ++------- _extensions/cours/header-setup.tex | 11 ++ _extensions/cours/header.tex | 12 +- _extensions/cours/title.tex | 2 +- template.pdf | Bin 20398 -> 28434 bytes template.qmd | 29 ++- 13 files changed, 452 insertions(+), 81 deletions(-) create mode 100644 _extensions/cours/_extensions/GeorgRamer/si/_extension.yml create mode 100644 _extensions/cours/_extensions/GeorgRamer/si/si.lua create mode 100644 _extensions/cours/_extensions/quarto-ext/latex-environment/_extension.yml create mode 100644 _extensions/cours/_extensions/quarto-ext/latex-environment/latex-environment.lua create mode 100644 _extensions/cours/after-header-includes.latex create mode 100644 _extensions/cours/before-body.tex create mode 100644 _extensions/cours/header-setup.tex diff --git a/_extensions/cours/_extension.yml b/_extensions/cours/_extension.yml index 17b0495..bf7f086 100644 --- a/_extensions/cours/_extension.yml +++ b/_extensions/cours/_extension.yml @@ -8,9 +8,10 @@ contributes: pdf-engine: lualatex documentclass: scrartcl template-partials: + - before-title.tex - title.tex + - after-header-includes.latex include-in-header: header.tex - include-before-title: before-title.tex include-before-body: before-body.tex papersize: a4paper geometry: @@ -20,4 +21,9 @@ contributes: - head=14.5pt number-sections: true toc: true + metadata: + type-document: + cours: false + exercice: false + actvite: false diff --git a/_extensions/cours/_extensions/GeorgRamer/si/_extension.yml b/_extensions/cours/_extensions/GeorgRamer/si/_extension.yml new file mode 100644 index 0000000..c93df26 --- /dev/null +++ b/_extensions/cours/_extensions/GeorgRamer/si/_extension.yml @@ -0,0 +1,8 @@ +title: Si +author: Georg Ramer +version: 0.3.0 +quarto-required: ">=1.5.0" +contributes: + shortcodes: + - si.lua + diff --git a/_extensions/cours/_extensions/GeorgRamer/si/si.lua b/_extensions/cours/_extensions/GeorgRamer/si/si.lua new file mode 100644 index 0000000..e6a773a --- /dev/null +++ b/_extensions/cours/_extensions/GeorgRamer/si/si.lua @@ -0,0 +1,169 @@ +si_prefix = {Q = "Q", R = "R", Y = "Y", Z="Z", E = "E", P="P", T="T", G="G", M="M", k="k", h="h", d="d", c="c", m="m", u="\u{03BC}", n="n", p="p", f="f", a="a", z="z", y="y", r="r", q="q"} + +si_units = {m="m", l="l", L="L", g="g", V="V", A="A", ohm="\u{03A9}", ang="\u{212B}"} + +SPACE = "\u{202F}" +TIMES = "\u{00D7}" +DOT = "\u{00B7}" + + +local function concatenateTables(t1, t2) + for i = 1, #t2 do + t1[#t1 + 1] = t2[i] + end + return t1 +end + +function identify_block(arg) + if arg == "." then + return "DOT" + end + + if arg == "x" then + return "TIMES" + end + + + if arg == "/" then + return "SLASH" + end + + if string.match(arg, "^[a-zA-Z_°]+[-0-9]-$") then + + return "UNIT" + end + + num_start = string.match(arg, "^[%d.,Eeij()+-°]+$") + + if num_start then + return "NUMERIC" + end + + + + return nil +end + + +parsers = {} + + + +function parse_numeric(arg) + arg = string.gsub(arg, "%+%-", "\u{00B1}") + -- add exponents + outtab = {} + while string.find(arg, "[eE][+-]?%d+") do + idx_start, idx_stop = string.find(arg, "[eE][+-]?%d+") + before_substr = string.sub(arg, 1, idx_start-1)..TIMES.."10" + table.insert(outtab, before_substr) + table.insert(outtab, pandoc.Superscript(string.sub(arg,idx_start+1,idx_stop))) + arg = string.sub(arg, idx_stop+1) + end + if string.len(arg)>0 then + table.insert(outtab, arg) + end + return outtab +end + +parsers["NUMERIC"] = parse_numeric + +function parse_dot(arg) + + return {DOT} + +end +parsers["DOT"] = parse_dot + +function parse_slash(arg) + + return {"/"} + +end + + +parsers["SLASH"] = parse_slash + + +function parse_times(arg) + return {TIMES} +end + +parsers["TIMES"] = parse_times + + +function parse_unit(arg) + + -- check for exponent and remove + + exponent_start = string.find(arg, "%-?%d+$") + exponent = nil + if exponent_start then + exponent = pandoc.Superscript(string.sub(arg, exponent_start)) + arg = string.sub(arg, 0, exponent_start-1) + end + + -- there may be a subscript in the unit, check and remove + subscript_start = string.find(arg, "_[a-zA-Z%d]+") + + subscript = nil + if subscript_start then + subscript = pandoc.Subscript(string.sub(arg, subscript_start+1)) + arg = string.sub(arg, 0, subscript_start-1) + end + + -- if the remaining part is longer than one character, the first character may be a prefix + prefix=nil + if string.len(arg)>1 then + + if si_prefix[string.sub(arg,0,1)] ~=nil and si_units[arg] == nil then + prefix = si_prefix[string.sub(arg,0,1) ] + arg = string.sub(arg,2) + end + end + -- check whether the remaining part is a shortcut unit and replace + if si_units[arg] ~= nil then + arg = si_units[arg] + end + + -- assemble + outtab = {} + + if prefix then + table.insert(outtab, prefix) + end + table.insert(outtab, arg) + if subscript then + table.insert(outtab, subscript) + end + if exponent then + table.insert(outtab, exponent) + + end + return outtab +end + +parsers["UNIT"] = parse_unit + + +return { + ['si'] = function(args, kwargs, meta) + outtab = {} + for idx, arg in ipairs(args) do + block_type = identify_block(arg) + + if idx>1 then + table.insert(outtab, SPACE) + end + if block_type then + + outtab=concatenateTables(outtab, parsers[block_type](arg)) + else + table.insert(outtab, arg) + end + + end + + return outtab + end +} diff --git a/_extensions/cours/_extensions/quarto-ext/latex-environment/_extension.yml b/_extensions/cours/_extensions/quarto-ext/latex-environment/_extension.yml new file mode 100644 index 0000000..2f55b2f --- /dev/null +++ b/_extensions/cours/_extensions/quarto-ext/latex-environment/_extension.yml @@ -0,0 +1,9 @@ +title: LaTeX Environment +author: Posit Software, PBC +version: 1.2.1 +quarto-required: ">=1.3" +contributes: + filters: + - latex-environment.lua + format: + pdf: default diff --git a/_extensions/cours/_extensions/quarto-ext/latex-environment/latex-environment.lua b/_extensions/cours/_extensions/quarto-ext/latex-environment/latex-environment.lua new file mode 100644 index 0000000..389a25f --- /dev/null +++ b/_extensions/cours/_extensions/quarto-ext/latex-environment/latex-environment.lua @@ -0,0 +1,150 @@ +-- environment.lua +-- Copyright (C) 2020 by RStudio, PBC + +local classEnvironments = pandoc.MetaMap({}) +local classCommands = pandoc.MetaMap({}) + +-- helper that identifies arrays +local function tisarray(t) + local i = 0 + for _ in pairs(t) do + i = i + 1 + if t[i] == nil then return false end + end + return true +end + +-- reads the environments +local function readEnvironments(meta) + local env = meta['environments'] + if env ~= nil then + if tisarray(env) then + -- read an array of strings + for i, v in ipairs(env) do + local value = pandoc.utils.stringify(v) + classEnvironments[value] = value + end + else + -- read key value pairs + for k, v in pairs(env) do + local key = pandoc.utils.stringify(k) + local value = pandoc.utils.stringify(v) + classEnvironments[key] = value + end + end + end +end + +local function readCommands(meta) + local env = meta['commands'] + if env ~= nil then + if tisarray(env) then + -- read an array of strings + for i, v in ipairs(env) do + local value = pandoc.utils.stringify(v) + classCommands[value] = value + end + else + -- read key value pairs + for k, v in pairs(env) do + local key = pandoc.utils.stringify(k) + local value = pandoc.utils.stringify(v) + classCommands[key] = value + end + end + end +end + +local function readEnvsAndCommands(meta) + readEnvironments(meta) + readCommands(meta) +end + +-- use the environments from metadata to +-- emit a custom environment for latex +local function writeEnvironments(divEl) + if quarto.doc.is_format("latex") then + for k, v in pairs(classEnvironments) do + if divEl.attr.classes:includes(k) then + -- process this into a latex environment + local beginEnv = '\\begin' .. '{' .. v .. '}' + local endEnv = '\n\\end{' .. v .. '}' + + -- check if custom options or arguments are present + -- and add them to the environment accordingly + local opts = divEl.attr.attributes['options'] + if opts then + beginEnv = beginEnv .. '[' .. opts .. ']' + end + + local args = divEl.attr.attributes['arguments'] + if args then + beginEnv = beginEnv .. '{' .. args .. '}' + end + + -- if the first and last div blocks are paragraphs then we can + -- bring the environment begin/end closer to the content + if #divEl.content > 0 and divEl.content[1].t == "Para" and divEl.content[#divEl.content].t == "Para" then + table.insert(divEl.content[1].content, 1, pandoc.RawInline('tex', beginEnv .. "\n")) + table.insert(divEl.content[#divEl.content].content, pandoc.RawInline('tex', "\n" .. endEnv)) + else + table.insert(divEl.content, 1, pandoc.RawBlock('tex', beginEnv)) + table.insert(divEl.content, pandoc.RawBlock('tex', endEnv)) + end + return divEl + end + end + end +end + +local function buildCommandArgs(opts, format) + local function wrap(o) + return string.format(format, o) + end + local t = pandoc.List() + for str in string.gmatch(opts, "([^"..",".."]+)") do + t:insert(str) + end + return table.concat(t:map(wrap), "") +end + +-- use the environments from metadata to +-- emit a custom environment for latex +local function writeCommands(spanEl) + if quarto.doc.is_format("latex") then + for k, v in pairs(classCommands) do + if spanEl.attr.classes:includes(k) then + + -- resolve the begin command + local beginCommand = '\\' .. pandoc.utils.stringify(v) + local opts = spanEl.attr.attributes['options'] + local args = spanEl.attr.attributes['arguments'] + if opts then + beginCommand = beginCommand .. buildCommandArgs(opts, "[%s]") + end + if args then + beginCommand = beginCommand .. buildCommandArgs(args, "{%s}") + end + + local beginCommandRaw = pandoc.RawInline('latex', beginCommand .. '{') + + -- the end command + local endCommandRaw = pandoc.RawInline('latex', '}') + + -- attach the raw inlines to the span contents + local result = spanEl.content + table.insert(result, 1, beginCommandRaw) + table.insert(result, endCommandRaw) + + return result + end + end + end +end + +-- Run in two passes so we process metadata +-- and then process the divs +return { + { Meta = readEnvsAndCommands }, + { Div = writeEnvironments, Span = writeCommands } +} diff --git a/_extensions/cours/after-header-includes.latex b/_extensions/cours/after-header-includes.latex new file mode 100644 index 0000000..122d71f --- /dev/null +++ b/_extensions/cours/after-header-includes.latex @@ -0,0 +1,53 @@ +%% HEADER AND FOOTER + +\newcommand*\circled[1]{ + \tikz[baseline=(char.base)]{ + \node[shape=circle,draw,inner sep=2pt] (char) {#1}; + } +} + +\ohead{} + +% define the page numbering style +\pagenumbering{arabic} +% clear the defauls page header and footer, so the standard page numbering +% \clearpairofpagestyles + +% set my own numbering form for the footer +\cfoot*{\thepage\ /\ \pageref{LastPage}} + +\pagestyle{scrheadings} +\setkomafont{pagehead}{\normalfont\bfseries} +\setkomafont{pagefoot}{\normalfont} + +\RedeclareSectionCommand[ + beforeskip=1.0\baselineskip, + afterskip=0.5\baselineskip, + font=\sffamily\bfseries\Large +]{section} +\renewcommand \thesection{\Roman{section}} +\renewcommand*{\sectionformat}{\thesection.\enskip} + +\RedeclareSectionCommand[ + beforeskip=1.0\baselineskip, + afterskip=0.5\baselineskip, + font=\sffamily\bfseries\large, + indent=2em +]{subsection} +\renewcommand \thesubsection{\arabic{subsection}} +\renewcommand*{\subsectionformat}{\thesubsection)\enskip} + +\RedeclareSectionCommand[ + beforeskip=1.0\baselineskip, + afterskip=0.5\baselineskip, + font=\sffamily\bfseries\large, + indent=4em +]{subsubsection} +\renewcommand \thesubsubsection{\alph{subsubsection}} +\renewcommand*{\subsubsectionformat}{\circled{\thesubsubsection}\enskip} + + + +%% GRAPHICS +\graphicspath{{images/}} + diff --git a/_extensions/cours/before-body.tex b/_extensions/cours/before-body.tex new file mode 100644 index 0000000..e69de29 diff --git a/_extensions/cours/before-title.tex b/_extensions/cours/before-title.tex index 2d3e831..e23e053 100644 --- a/_extensions/cours/before-title.tex +++ b/_extensions/cours/before-title.tex @@ -1,73 +1,11 @@ -%% CAPTION - -\usepackage{caption} -\captionsetup{font=small} -\captionsetup[figure]{labelfont=bf, textfont=it, name=Document} -\captionsetup[table]{labelfont=bf, textfont=it, name=Document} - - - -%% TASKS - -\usepackage{tasks} -\settasks{ - label-format = {\bfseries} -} - - - -%% SIUNITX - -\usepackage[]{siunitx} -\sisetup{ - locale=FR, - output-decimal-marker={,}, - inter-unit-product={\ensuremath{ { } \cdot { } }}, - math-micro=\text{µ}, - text-micro=µ, -} - - - -%% HEADER AND FOOTER - -\usepackage{pageslts} -\usepackage[footsepline, plainfootsepline]{scrlayer-scrpage} -\pagestyle{scrheadings} -\setkomafont{pagehead}{\normalfont\bfseries} -\setkomafont{pagefoot}{\normalfont} - -\ohead{} - -\pagenumbering{arabic} -% clear the defauls page header and footer, so the standard page numbering -% \clearpairofpagestyles - -% set my own numbering form for the footer -\cfoot*{\thepage\ /\ \pageref{LastPage}} - - - -%% SECTIONS TITLES - -\usepackage{titlesec} -\titleformat{\section}[block] - {\sffamily\bfseries\Large} - {\thesection.}{.5em}{}[] -\titleformat{\subsection}[block] - {\sffamily\bfseries\large\hspace{2em}} - {\thesubsection)}{.5em}{}[] -\titleformat{\subsubsection}[block] - {\sffamily\bfseries\large\hspace{2em}} - {\circled{\thesubsubsection}}{.5em}{}[] -\renewcommand \thesection{\Roman{section}} -\renewcommand \thesubsection{\arabic{subsection}} -\renewcommand \thesubsubsection{\alph{subsubsection}} - - - -%% GRAPHICS -\graphicspath{{images/}} - - +%% DYNAMIC TITLE +$if(type-document.cours)$ +\rohead*[Cours]{Cours - $subtitle$} +$elseif(type-document.exercice)$ +\rohead*[Exercices]{Exercices - $subtitle$} +$elseif(type-document.activite)$ +\rohead*[Activité]{Activité - $subtitle$} +$else$ +\rohead*{$subtitle$} +$endif$ \ No newline at end of file diff --git a/_extensions/cours/header-setup.tex b/_extensions/cours/header-setup.tex new file mode 100644 index 0000000..a3320a6 --- /dev/null +++ b/_extensions/cours/header-setup.tex @@ -0,0 +1,11 @@ +%% DYNAMIC TITLE + +$if(type.cours)$ +\lohead*{Cours - \@subtitle} +$elseif(type.exercice)$ +\lohead*{Exercices - $subtitle$} +$elseif(type.activite)$ +\lohead*{Activité - $subtitle$} +$else$ +\lohead*{$subtitle$} +$endif$ \ No newline at end of file diff --git a/_extensions/cours/header.tex b/_extensions/cours/header.tex index bea29cc..9ad2871 100644 --- a/_extensions/cours/header.tex +++ b/_extensions/cours/header.tex @@ -1,4 +1,5 @@ -% TODO: Add custom LaTeX header directives here +%% PACKAGES TO LOAD IN THE HEADER OF THE DOCUMENT + \usepackage{polyglossia} \setdefaultlanguage{french} \usepackage{luatextra} @@ -11,6 +12,9 @@ \usepackage{asymptote} \usepackage{mathrsfs} +\usepackage{tkz-base} +\usepackage{tkz-euclide} +\usetikzlibrary{arrows, calc, patterns, positioning, shapes.geometric, shadows, snakes, tikzmark} \usepackage{array} \usepackage{tabularray} @@ -44,6 +48,12 @@ \usepackage[]{hyperref} \usepackage{chngcntr} +\usepackage{pageslts} +\usepackage[footsepline, plainfootsepline]{scrlayer-scrpage} + +\usepackage{tabularray} + \usepackage{lipsum} + diff --git a/_extensions/cours/title.tex b/_extensions/cours/title.tex index 88faa62..2f365bd 100644 --- a/_extensions/cours/title.tex +++ b/_extensions/cours/title.tex @@ -1,6 +1,5 @@ %% TITLE -%\usepackage{titling} $if(title)$ \title{$title$} $endif$ @@ -16,3 +15,4 @@ $endif$ $if(date)$ \date{$date$} $endif$ + diff --git a/template.pdf b/template.pdf index e0d5be4bea1fcd79dbf28645e1bc0dffaf20a876..57c0a462b8bb7c0da5da6b0052c8e500a3ec0a73 100644 GIT binary patch delta 24024 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 Ix;*B80ZGvGxc~qF delta 16405 zcmaiaQ*dtG)^u#!cCusd*iLqA+jjEAwr$(CZQI$gt^a*beRt2U7P3?K|WYapZ3zsJf*>Ag&LL zql~QkpH=(H;Oztx^421zTM66vs;lKn!*S0yr};?+yZ6l6)Y(=-jvLH58nD|s@9#U) z2})0#U1ygJ?mB~U$jV~CCXt5C+gbOYxvDy`Az{!GTLO_yQq zy&Fqx)xBE3n`(TwEzWN&VUG9OUabL1<8(yXEK!UCysT`COmM@J><4!CXYyMc+sg1m zFTg!eGU5L8Ki3whO$#|&sxlt4x@vCFTx@vcw>R+6_7@J76Z%sfiisdpqoH};a&BPT zN^YIF%}qUc1GnvYDf=7E#<41#E>yiGJ9Pd0_a*H&vY9G(YX^}%;N~bid@g`m9QZnw zwT=8+dQ1Y`yPU2{n39Li)pz%oU3WLaj6c|?EqNOPPLTrHNwn@eM0KW90(pZ{dE_um z+crn?+r^6u82;>i$n8JqAgy`t1xq|tUNv~8)rrX^us^NIC&bi+`nXd4@C~R9Yi7pj zpw)WznF}zumx~i~Gej7A$EN^iAzA*_NN!V<$%pGtgflW+7O7EKn10G->}3`k;fJw_ z$%vz8Z&naPSn0tN|K9=;A1ek=$cvh}sIBsiwvro}JdxTRS}qnlQ^_qJGD< z<@hJ&X!{@S(rhi@hRxt*5Aj%+vNV2dalRqZ``JZjT zyB(+CP!LT{bpA*wd0wkYPd{#sS%h+gXztfdhGH>u-Yq_dQ)=CmMzm&U(g zzYpbHA;UcPrEv3GSa$(HLE%(dewG@|%`M5YA%{^{x$ZEUtvxrx@^K_y-k)ugNP+0n z2Ez}fxKks1B*!jYtM^?rgw0N%$k7}Sf3y~wG?HGKH72*_9%-7bT}cwu$mHBkgK7ZV zs4n7^Mh&$UTdSYRMY~&l=iVVhNO`HOhL#O)BriU@u-8kqk7WSB;P0kJ97kn2E#-_n zZ8E_Ef)oH)T>2?T+p8N z-zE6fkbK6lihQAbm49y?e@2c?b!(Q*mVelo@r+1ss`KVxW50+hR(42h9O8%N5~7!4 z>-bAIYZUW`GTD%|&yMDg^L7};M(kx&RG)8c`0sj#u`oc>9l<6WN<_Pe6s0!oY`Euc zi6?5Xz{G^u`OO8JQ*O)95UryQXT1&^M0Pdk0^B_bBj`&b1;vU8nNe~T-_(@>9CP`L z26nFy2hvkclY`m_mqE9WVd+L_%jLoDN{=f4m=aE7nz7h(1+K@5ekK03T`3G%VAwCM zzrRl5-iQG8a@OF-_Nj3pywR_0pc}H&8e0CP2GRmvxuvj| z8PO%+n!S!0&Od#AFrG63Wc=%0gEb-(u*4iWu89CFTW#tjcCA}51*E{PP3N65;qO!P z(OQr?k|r^~q8c8Dyd}HPlnaB0;G&m55)&|#=9s1E%*E8>@2yCLZc^|()^#5Q*pXz6 zGWWeIM1D$`FB9x-*UdHtoayO zFRx40Q3771nMkR$R~WMAOJ()qs_i+3G&Pq76X5Gr>;0F`sp_Im(*AiADl$iF8INI` z9p4-$i}CetV#xa4%<*;gPT28JIVGZtiHt`LeOYBO@FK8B%tjJ4tjY{u1O-Rv|gkC?}dDZyC}U zi=jn}p!%oC93w0TIMN;*F)UP-xf3igyuq;5P-L;+#k~JiMp#VyBv!|4c#UC37_9Y~ zqC*NbXV3hl0q9Zd{u{;li`En%2B{<%OY zL0Q;16X!+I0XB)hZ3h|QLfmqNFzbXAAKK$GO49+_>-0<>yg0%&=L-Q z;tK?M(aJu6LVa{Y7Z0+8mJ*$?mfn98c?sl`EbxJ$2h6i;HuEjNVE4@e(NE-vLH1#M z^kc|C48sD2ESP&EA>Ma1kYAG0o%X@zQt~CflF@%v0dny#n~0SBbNm45QlK{aXjL#P zRzYih0n+nX(#!za!sq}2l?hX6v@)tNbRgH9_MIA0w927)Nz&mQ?Xk?vlNosuDmKXg z>qwVBSA$!1WD|7a*k&dw&Tx7y2c1Ai=}-aEFO0Y zT|Y0r0ULlwIWOi>$he^PcM9=@7&pC?OjsdWno)!FlAY)Fp#?>2#k!;Mm)(@XX#Xg0 zJT2jkc6fSglG?-7#7zlDhMk_A_E?OV>hM&2rz4+pbk}|I8G=q2pjXiQYY~hmkpS$ zksdD=41|sK-`+Kz5aj{`v;9jci`rzqgO& zb}B3D;n&TJ?+pjY)HXgU6xd+^doTL!N(rV~wQg+~B0xUvjKip#PK*>$jhm4El)@g> zpK>~Sw9O10?`nieNbWp_!V3n`vjg$9Q25Yc5HyHC(jXwB^tBR~Jp(ic_3dXw)m_eU z=Y%JBlxK?(m>r?8esirCJV?K&PmAcS(#Y)X^=(?CKte{vHZojA+U)IZI_J7;CiVS8 zViztp3ZPU}cF-a@h+0r&_b#FKA+buO_}aNyq=W{&0HtBw#-mvgmI5)(F3Codu1FsJ zhlVx0qMUCbZ_S3rB0>n8^7x0w#8IP73WI!^Ok_Ms(WOe}UCdrT&bggL@Rv^WFU6F+ z1WB{0I4Kq8bXL`BIq%_Bwd(M@KU7BEg>P&$dVse*lH}S4FP0R@D(H-Q%i{zSE0EN; zGPkngd6;5WsS<=;3bi+${i8x$E3}DM`?mus(I9J+Bs#%v+3birLKxgw-cZ>=-JudA z7DmD;%*^oV0o{QUgIdE{qsY49H2xMet(b2A>b{+!odH#Y%6gYIPdX&n0d@neIz~E> zNWe&ofkPTzW45je#DZF6$L!>adeC#&r)vC$l zA;}D=>2_+qY5*MB z3bo6|RlE4T1(uMre@vQd2dSmgFoxy#eO&S#+i(166}Fg#td!pLw3U#<71Q(A^fC<@ z)_TcanO>S5qj~n@5e4XSpW~E!#o775?Pb<8!t_<79oc2wwGZ?_U0!Mm*~L`r&39Lk zi}05Y+rBsOCQLUetIj#_*>!#ARDhe_>;&$dci`noMV>a?c)44gxq-UGIX#ZANS>so zww$+e(ic0+ZDY21XISNACp$o@AGvoY#PGx z1qDk`88opufN%Rw_Ybd2(Jx8WSxyqV3sN%OuX&sn00b?kPpA(h=wWXn=qKToF`)+V@)r~HJdJ5Jd;ZhbHCjj~STl-t_YOQd< z^Z6{Kb*~?~K*!6gPMWXUS}*br+Tc@I0L%QvqhDs1uJd$Nv;o9>rIRtAD@%%RtiKkCeWvl#AeJ{^yF!KWp*LjTG;cOI zWO=K|R8^*`0{{oZB4Cy3jvMu(=?jiz*Vn9U>r>y; zmN1=Xe4hnAWQ&F-UtsRC8AAV_XoFVNqxZACs$~BW-2*~$MBd!g_AgOSdOD3E9_j|@Jg-^#U1$TqkJ7>OUqA}{r0xczzt|ASn~QVwS_L?* zyJH{;tZyCeUqohW=K3{#8>2llg`on2xxm-&wfeyn$2c81v!jv{TJrOVq>z&P49^_f zN2&sZ8h)>$ngWD?jwo(B&JUKppD1KYNukMNN2Q@;?CC$$`5j^Q86q1gxAu`C_ZmH) z%?g=QIe@968@X))+W6G*H8gI0Gi~)EmJl8AQAm&s+dMA! z_lc!31m^tK`TzXQ)320`JiAZ=gM*)MnA6#ZA`FjraE#VbDLeaW>g_ z&Tv`kn)6H3i9+5%jc+9|+nf+*8vQl5z3!!I-j57XL*m=*`F>Asb?b>!%-aI-641@K zR|V*UsSK)vh6tN2sBj6w{9Hx)6V*!{)NQm*X6T`7}XfB`}2r+3krr$pQRD z6WpG>C6Rs3j8ofJj`~sFgPim73{^8_Euyl@*i+0G$*C={y&5c7fj#!KGKjQ(cw9hW zoxPGeK8B88Zmm!|K$OUTyPjOz^NrHED<#g)4JiT5C<#cxa9D+b=x1ho=XPEjwwyLw z@I=xTpF~RZ3Kr~$UqX5T^0m~Fxd5Vshma&?Wx+L{%cw_`Khqy7Bx*bEXq>>*m&BX- zi&m+!TfNZt6Sk_LDgJmw&#TWYoym^iC-|TDLTQu7=Nd7eoVA^Sw&sje zv17xQcjwh*?8l(O=Y8<;jtR#Ohg-i}p?IRD(Eb>yXM9hX=$>zI@vF6Nxe1RA_g@)u zo&@u;qD1F}fbm2P_x3=A_Q${23McrsOW=V9u;o9h%9;0p^4U%QA$BMMH*TlS z2b)Sg;L^IDHIl2?6;qAD7g0R(7!4b9;7KTXEJZTr^w` zQG52Z+m=R_Jb1b++ryE13)h<-+PVV>E=vg)`Od&C%#ct^#lHjx2BdA8Ww0g?hJ?eb z+aP!R4RwB06t2f^;DB$5s8~_b)M+g|>dG^jA`fWWig*EZK|l=Gx^veV+0%INI+PpJ zYn%-4Q<2m$m*d!g1%0x%gXq|DA^bt8v4fcK*yruYW0-WU;+W9^D=S8H4;!|p_mW51 z_(&cHK_gn~Aj7ajIZSkfoOG--T>j_k){*F3Sgfu0yUA)6yf@31K4%9UwZyR*sPw05L+z7KSJ&*S_fT@F2v(m|@Y)L{2JMP_}JT*^tWqAUCg> z*`AT9aJB6SCx)j)NU9eCY9IBg{Mi$w=;`I8{Kq|BJkLdRT|=_6uo1K4cs421LMa6u zND_Oj*7UmlBnl67OrrFuJzb;SGgeFkY)zJ!VLhU64FDq=7-Au3x#W{|BIs*4`Q^Ea zGG4Ma7W`m1?i% zK?$B)@7jEKZc=Iuy86$pG70D$^~`;}dbZmWzX!&I`+AE> zLe0g`Xx}uFf0oM2pM&|c>x1_$`2N}HMy|m60FXWkz8&sq1d#`lHnFlOC0$1D90iK< zeE;fj+niP8C-5}k6YlvrKLHo4v_K1LIn?~cSVo3NO!DQiuvE7t+Tx{fG~4Tu>m!mi z_+&mrdLZHk&FZjGxhOnm|65z$sgTf>RCk{41U=e%UO^m>?jRm41Be%?mzvD?6+42) z0w4`f#Yg3zi}Y)6%*WGwifd#*I2O8;ETH`VNk4O9V&0G=X zXA048$Xs9G$3`sHXmzO1y~o8+Tn6@embdayhMEN9nN)OTCkr9^+{_^_V+BgAr*Q`Hq)AfqWEe`k@EBBegswgV7!t*j*Ed zlN`26ikkKS$4u!y=CDh0sHe=~D|9BmY+p)aK*jg)z;|E&11q$cuKMp;E0zsKR5EV; zG0D;|g*&wGwk^d%F1>|0V9VFToW;XC=)lruHLL~cH1BM-9{W-4q=zYI^}y345P;Lp zU~`v64X=FC`Joi{-)P^_#rt1g?u}F6UJvPBbyvA%_^T)Fwi?v*JED@&L}8f|5#Kj)3L^myC&+MN z5IxM>YbYT^v}B=BUg&tc_+SuilvIBZOv->RIwa$F%z0Bgznpe z0TQe7pd0tCto~NIN^2pk{-=o9%9tQt?`g%x)}lN=_Vj5Apec*?1VGy*d8O(iHg;d0 zTen^P&MO{5X?K=gj<`e8>5&-|T;_#$>efkhy@NE3K|pgKMZqpy!iOgUXb$PxzM9yY zjOl4euxaCQKxt|BqM|;1ojTncxJM4@4`_yOlGJ~@Pwb5UF}y5cczB2y#4N0x6YU|e z{&BHpMX>-$(sl=oXu&UU=sDnuoe~ZNYc|1g?xI53DKK+ojd0_^;UZaM(6HZMYkVci z6@r0a3#neUvv=Xsd!rxhSt-*w14sUi@GjFDm}oP45A0ZQ7_tsEl23LbthLGx+^No2?{14xG0E?i_1u6zB#*W75yJ4vTYbQJ$^2 zJMRgXv8%P3bNP}l{_Lrw^=f7(*e{Z8m1s}XdC=1>9`y>xoh8>q9mYqo^;^p?g>pr& zR%^R%$UjpP6@Pi#cMI4p*7vW9FUobxg;AqMt<94vYgRE&Klrd}TqHXb#RoZLGD@!6 zZR7#Q@Js|U6jeom8kjjiZeDOMMR&o~`-ME?M_<;Iw zfB7{|mRw1JiceK}@R8@x1Nj;oFIJYTtkU_R`K@@MVQ4A{+4*!oMoJz7`t$&dm?>d# z>8av8IHx=^AseuWKM!OIs6^ozl(qDNzS974aq7@_kR$XQ0o{Hjn1Bm3PeX_R-3Z>I z*fNiMNq6v@VblbPR3b8B0aABlY$#n6V_u;ZQiK4OGwAbrJ#bGHCy>r$cX1FasV;PX z{NXv4OjkBChB~Q((>>3iBXDi$xJMWXT~BZ_hHiN>JBTeB2{j>|0Or5H@I}+Bhj~Oj z9YdFL#k{nywm-TEhBd65IJUrDPIq%YrRGoZZ8KNo+G{&MSAR&PFX&!jfio3-|HtwA zk2RWj%7sgbq_03_o;H@>*QehX2Lyy12V(g@_-y|%Lz$WW&kS`*fmKFT!||gGGPaMN zH_1?CaW!?eX(mDxte$N~K^GJOuac_9Ar`Pq^OqsYBVq6-~aw$EQR@@h?ynZNvQd zW0x5P z^u7?npaX=5d8Z+Ys-RK&2I z$-bqv#;YT-Lr39qdwh7RHvHhaXptNzW&Vn8dEbEaHye*6N_=i6StGA4wIP_ON-w%gSXiFlP+7%xiu=Z?@J9M9_2-{%(Z#9 zNoGU3tn(sm67*{6TLeVz zOQ6%l4@$BjzPOJ8R129re^*brL^5O2xq-Vr9k~dqsp%pbASLd>En7|RukR{!U*q!f zml1lqQ&cGBzg)(HtW!vT;gxB%Kri6kJUV%eQ;7xJeJEsOSRbQ+r@1j1b# zR#Gd2sE7tas71Y6_i;{Y>7aV;0LR{T;Vu{LsKDHcy}5LTQHm-y$8|KB{%~UT{(J`O zX0jxm-qy;AbGkxkemG^n1egf<&!GfalyCK^^O6jn4E2?+<^>SH4zwhj0>B@J9K?z9 zELX2>go;V0p=D_TJLw&D;TyST%8MoLxW4NAuoIUvuJVy)W0}i++_$D>4I8I~&h6iP zFGp-x4~^1_rMl1Us?Yb>Wai`@Fsa#bO9R=8e*-3!Dd%R6+fbN@US@WOg#_=fq_MoU zXlnivR-)Kf{sC3LZyfK77X>ta+=?d$pFQ?z@)$lX9Jfnb$(bo$9bb8IFW1O=J(XMr zG|(oRYXjQ2twr>7HRT04ezJ34s&$vEXjck;*wvex=80Zu~szN7^3iPYTF1y))BilSUlc z`%CFiYi$-jog-X;r0Q$Vuy$SoiEu!t&O4u4V>9Y==IPDYPZ>Z8@~h>5t+=nFTR|D| zF`918pw))7^>+oHt7caK?A{oQ6g1c!?S6m;NIR_})1ytlpSb2Zx5XXZ4$P$~O{88j zdyMhjite0i0>N5fsTKf+lp2)Qt?dVbdo1R(@BG=|^RH+F?u>K4flpqn8@TRur0>Gc z>PJwVfo|4m8NqBfL06_{-OEz6*7@e5JY;k(E}_1-|GfiV$8}t?wmwMF8d{4m93*r=_*o}x88GyO_ ziGfa*aqZi&AD8>UJw9%8=x!anBTW2{f)p|wXei&MmndyN+v}tf6)H$9-`6*Rdxm4| z+PSD#3P(^%bg|@cCWurEg`W({uar)$SzU7{aHQV8@Hj4)%VL~^{oO(!G$dYwi3wYU z^)1!j-Ne+R{z}7caW6=dgRXg>Q=RwH1 z?pyX_=2G`lMvAfHI*+R+&h#)kgIF53xt8)NkL651?I+W{;7$D^$o52li3O8m~fvIA%65M{UJTKrj1edPmd8rVk)=475~M3Fj;uT3@wEv;1zv zB@AeD%HM8g@MR|OA=VDH;5GJJK*db#qXJEb&#tIvO3v9dzJClbjD@q`xUTgVp{E3D z=w1CD5B$p5i=oc5i|!W# zzr3d5cTa^HmF89_-tvr8XkkT%6qC%>z3R{JiXUtsS5`31{~=S@|1+&;W#;;4T8{xp zkheNyL>j*NMr#Ze@U;K68U7KfFOeOB(;_L^U{V{yIu2tvKK4w!+mkS2kZE8Qqum! zqF7_sB=<8s#*`#$@(OuRVl|@9N}+YQhFS-jGs4UdzYEeBK(yAm?F4cH6MJyP{XA@x z9A~tiwhVSCL*h@FBCTheY^FE9_@Ihdk1;1toY!jnl3CZIm2XlerBU8=30xOr<}Lfobll3FOOd0DC_) zhevmb$t>*QPU7QPR8L7GB1#2AO6&^f)ZLUFlm#0>9#R-0MOjnf*I_UP0e{yQlUyan zrNwj=?-SzXtp?_|L6J#GOi~2f_hWgpX2JJtA6V>naE%t9)vi%pG^B!aYYXP1FYX8V zOD8W}n{*)v!zsSX|GS$U|ArSS6EDT_$rzQ5-RsB=`U8K%17Qw;|Nb9jrhgSGC^IKZ zqP+wr09qN<4JQ{XAw0v7xMUe_My3+I3Py@o!Ah;%eNPm;bI%_FiVO@zf(Thek~8sB zSR!D*CwUMQR8_~{@=s-R<&#F^ETl~mZ+7c&xLt0*0QpMA*@zUR!aeQNdkx9;nVJsx1l*stQPSV(3C>AE!6K88 z9BCav-zN>5%6{452nS;R(!4KWCKV@_jyH|ZkHqM1>GRPO41r9HKM-kGtW24ds3!>r zM8Q$CLL_b`X_~5vK~SR`2Z+$fNmC?`8%L3)OsPsMTQZ9lPt7RI!crI&F|(DcR2-2# zC`&Go88(xJPpOhgDjTOL3)!w=;|tfQ(KL+xY7hw*`bCUMPbS$cA|%z=z^ob)WNcCj zMyoB9Y;i$UWp^yZ?T*X^3G9SbsDfYWW+sR|TqJ+@L5*A=xn0!0K`f2AK=L zLP3p6mYF~nL8qaLFrW=QW__e$%!d*XL^2uAHl|62w;m=!k{Mq;rZt8@hOr)eDLy0t zLLzD$h9@b!5D&*5Sbl2lhpR()#CY$P68|(wwq8`bZrBpOeL;E){qjaDKGQx9csi77 zNB=un7H~RxvB#T($Nx4;omtu>o4-%3S0Q>D!0$c84Xfu@sSlK?_y}vj0wa6|e$vM4 zP&^UcR+2ZAhl;+w!;E<_Y-$yb->8`u*=GN3I2pQj+_6L@6d`q{Ns5o<;Bu9!^MdF0 z4)u$sm5?XW&B+UIxfGgvk8ofQ0NzJ5WB=@p2<;V${Zd@Rlp(Ios5RLE47!KVdQai5 zu!gvYz-=kIrRxKXfS6Aid5&^xY%A46pN{1fR-%03c6eid5gW*2N>cNJQZ|?e*OwL< zg^+0fOI_e2Ol8#4nX^i?vLd$i*^u8ajxFfMyy==r$2JzMnx=vww=+?M=XF(JTpLiJnGmSTbiPp!IuRP?wV-F@=fSsYAk7B(ht zw@3}4*8gFXpV4ibg4=T1H1zMT!pqHbf!u5m3wW@@i9RwranFkkkS zr!4HgvJKy(tKjoX+%Kqtr8-Th;LXr8kG4K31`i*mZa)OCHW>PAk6q7m z(t_dz+j5k3`0NrGz^6$0xVB&W{2X%qpUudlG=13Val&>BqCF63fH5SCP?>x86TD(SUI0=9G$S8XIKC369S zmXMRvg<6zKg=n;*B4>Y$fNvahG!Mm^Oxm@-cj(MYOkZ0x07`pqB>_HUSdA_A+nMS_ zS#Zb9UtI8ciOhcgK8%<`>L)bn89h#1@(E=qOd z(i$k--0){Gz#C9S9RcU81fQ7|=XLTW`w>LexGU@@FF6GkGyUAls`0GrPwjrwwmnX< z-y&FjuiV?$nq!TWiOd-JU+l*`3U;m{1@6V6U-lF{3vhFb``OrLPRB%$u!k@ilwp|a zo9zK|u`m@QQK}<)dF$eZM6uWD^}YL4e+N2Z0v_PO09gojzhiVmfS+5^PwH`MLLD|n zWpRVy#2B_sefo^wEN|>Q*USk6=N%qPea!SUFcUkd!GEszm?N=%6G4>UiD;&%>L!h{ z=p1=kr$%>PK14Zn?azwzcFaH60*X&;vaVkNsc8*XD}BV6_HUh69{3PY?1~VvzXD)w zt#o640Ky{%pMVNq`>RW@ub3+JR`1x>-tikFEaRbJ?tY2XPK_cAQ&@ww3Ik8B?(=8` zPwH-OPCWXMNWwOKEICMJXg$bC2^?TOA8shI909PdmW=!(zP$oJ+Vgk(YJTNDjQ~NK zZE9xwOF{QRS-=f^K@kd~EJkPFE!FG}$pYo@FLzGKx^ zKtKwN(fU3F$vqz=48)avu(Zf56Kt#B`h4bHT4$D&5A~ekW?N{3V9K?zcVI+a(o!Wn ziT#|qlsIUc)sZw1ssU>hu(J>qC{(N@$&9camjW8`rEsPnuQ+y1X*_S+Sqg{tefT~O z0|Hh!-{;X(?&KYW6Slcg8m6f*#_~HVfOHBGLx7)s8TJJ#Uw-YYPu1HOmU6SB`N?M< zQ!mLyr`z5ArPEzEdtEtZy(&c$_Roi(k}B{7T>(s@hDvm^LvdzA_bK*K!F}dP01IEa zdK`!8tH}{|xSsbb8>|82c`1s>o{q_LU$9g@LnShANq4p{XF2?wzeyWI=v`RihQrwN z>q_Wmw!c-@ZQ6G3a(T@aE6W~iO>UP{Ehmx zoo;q`$FQ_rm(1*Y;5|s&K4{K+_O-z*Cs}<-NvOeIa9J^hdAWD=5**5B0W!3neu7R>yuL`IWYYxn;gS1I`4Xqg(|}p1dzVZ&34br0Ul`JCxu+b z4|#S(Hrt%CKW^~eP|Lg!Yg=`#%+cB-&!A1bE)h$Gm=P1s;?S_l0(=e7H6d}>#Bc9O zxDq3AW$-+)F=zaI@%kT{mw72It=vJ*k|)(5#6;#^*uv)g7x2j?JMRJtx~aKv8EkX@ zm^UVE)RUS#)4&pkbu2Eq0In%07~!(DTWuPR51*&Ol!!mLJb4*UB4E1p`)+a^3fR2d zog*@9K!M?c98DJ;t|=SA$4u(V=kltdPKSQ)O~z zz^MGRv39^0c^RBI%D^>OI6LckkDi?a6f|RP6Ry=Ub+lRh26xP)0Xuxl(Fv;y0NY;J zp1*@ElwDl!iV*U(M$Lcbt!c7hFkQ<82x|5tTs$T~NWywhz-sL?A|o_ijVx_*V5s2x z%y~un%8l@1+D^dC`@RQkIDu!D8I{mNjjA0|<7+=YPCQ@^XHEDN<4mTmxcGlAF=%=S zCb;QL=?SnCF$QwsIA4`?l=SuZCcG`Ye&KH$;B)c5BQ+mwGN^ESK^H0X?%{5RH85q8jW%T?gIb@kekKb{^i=dG2q zJK2q9J%ku@?YYaZVRy3xtMM7sP^*=zBJ`}FPpSITxHkf}@1RaShF-PJTa(Qu$1saF zMKc0Ltp?1)^`dXe$TXyObP~Be&_|*qZ?Zey;-$|!I*(%R&BPgHEI_8qNr<(B6Sml2 zOAqCKN6CV0XoSKZ&R#dc#}Y1cVtHfV$vjE(k{3|WAIZPCd^^iq z6`6@+Tb|&OEy>gu!m**|hG$@pI6AB9w{le&uj$3m1XC)H*J&B84)f$UE>-UNn7X5K zz0<|P0Cca#4$bsKjXAEIh}Vjm*CASCY|mYHga%GWo-0~au1QZ-zuucQJU799fcECm zX8uQ~ITM-mjF^PA85tSv{sotR!SP>k`WLhrS^rs#j0XRL>%U;~FBm1Z>8*paurRZ7 zC8p>T{9o0sZwAbqNNj)$&&K)hw93)RnTVBzD>2@N5R{RX=|A!5ZjDXHO->Y_7qz|l z9qRbDz%?n^WQL1yO4qFB!|ibzUwyI>gK8N|QA?})7cZQyzqVF9Gkj2FePV8f4)1#; z{hUfN)D-Bb+y)uYX6Xh}5~k@ZDO{!~qe1#|2gK=40nmde1_(h$;de5QCtR#hC&V}D zFIke4U@r;OF?>7#189N;#xny^bBaH$+KkX%s+*wRC@ZjO!9Is$#QXZH`@ho_6jI6D z2f*cB{@&@bz)Ry@X%6rtS(K#=5SphYEMf0h6sCfmr=QkhKf+yt|E?hdm=j*}OuNNGQ?`P^Nf)p$ z3bM37%o*;zHU;OPOB2Z&4_f%#o5sc1ZFo(+HyS@+ zVIRVCbR9f+=rVn|Jk1U48@*YK8YWzTOe!_`V^@E_q!P3 zX|n5;BT{~1oih`DoUu1{cLek9Od$xygS%os2`ye0i9S&zrzAI0LQ7zo;!l7@du%MW z7VM-!aE*tC$N>~WO~|qQN4|4V_`_|8kz#WU>#DpLfLL!HHdzFZh$BH9+EJ;mM+%5} znDol+jp=8h^S*-kENdS@PJ;806lfI+li1_s)`Xl<+Wh-!u~(?g{~Zi8d91{cFP#pl zhn_aDN}3VdlV4-fhfF~AW6Y9)1o8ETG;%!b(zgJ`p@FDOW!;I)I&7mInsuRw!(H<4 zvksCOpyh^HLE`}d3u>2wyunp9#+D_c_;qldtAzXGiz_0|Hk+jAO$jgmHGmX{p?Fsm zZgVe$Ehrp(tIm(8CC%)YKZl_rdOvy``Ih8AX(S>9teDu{E@-iXL%+6H_MXo6yxslQ zjvQ4$^x@CcqK1yx@g*@qY9S5%>65cAVoypVV6>^`;OzBcPg?W1kmg;LUoM6*p}M>= z^Z{S2I2J|oDk&O?FDh7E9qqfe1{JUP3$(n2&fbiJiBGD3Vz0AeECUXb}^fIH`Q#@Pl`P!Qtw{ z;n^_uzM5N{F7C#HkW}>CXRD!d%)Mo>RKek0O+x_p*?bqLO`+|~SyhUHu zd-8wjZzAwKSxOSk@ck#37Ty~}kDIv`uDEaIH_TrIUv-I%F^5-~i+J8oRCqsT00^<8 z$ElZL!>b|@tk;9KTjEEH&fMb!7C7#m?}!d!eKVG0<^UIY^w@{yKht3qO@J4KOu!)(lfssx^=p0V9|${GPV%j5vBbU+E69u`IaciE z018q)SlL;40IKqcb-=`5%)s+?z-#SH7BYSd+z;}arTW+$cAP01qa|b$=n-ik}|^$Ae0J-D2Qa$W*YRET9{IS1t)p40R!4gPD!A_l$nA3 zN>Y~`xrM)ITd-on1aX@0Y^OPMG94K)x=kIomg698mpSf{y22Co>z!g|0Evy#kK5~w z=U}cm<62p$?UBG8n@s}aK{tyrN8Bj=LI?BSs?XQ6?WfLN?h52jF2~UwWY+1k4WhVC zEpoRPwDt$gqC!2{(WB-ChnF@E)cJ^Mk*3e#@K=$sRmHg{YIA@#49)f_o|}*FK2>de z;s&aAG`y9z1Pw@G0+`|^U{CeWN|1>Vl1TPdGDX7;g?nj1weJ?tMQk83H_ zCu(gM3qbs{k`nJ~@ap{Q@V7}1-D!mk=^cTVkMZ*G7f}p4@wo(~*GZrSCZr|zhNMt9 zzcnT6eC9Ht_m)gS0Gw|JU~9-1Y_}f-pW_#SfG5*3LuU@wQY(Cn-pNrFK;-fcWYso> z&g_MxZl0ER&TK`-bwgliDzystgeAHw?*q<5b*B|+$10-Tm5<`;#UR}W!*(*mDEp&w z&qevxO3uxht6=0WUYlK|+DB*4^^(i$)xofYVq}YYo`U`jKwQ%Ka%A;+piyBLw7tYqoSruOazpliAeFSuVCMa>rIp^r)NbxnsA%oyZRZ}oU>xKxg$7Yi&2k~%< zYr-o27Q@46m#&+$u&+a4l1iMbDGQ675}D82Tz_>Z@1_6JC=J-iI(-}>b~f!nCykc= zwPyzUv<~(KuGt45E)@Ufe<%^I#B*z604F1n4iSTrg{KM8KP7`2krojX5%WLmpSOy3 zcFsf`9RDO@6p0ulZB6ZnI5_|BLF6AEj~FYLmqVt^LB?<58;4vY>ds_==4uM9CFXd@FX)*%2CZC=(;Tdo0Dj#nVR| zqx}_ch3NS8`w=zkU~0T{i)wtkc5c?ef60QTl+ck6{tHE|&6O!Wvip?+cV|1wAeC+!haxiHnPs35J|pR9+0`{{g~CZnppc diff --git a/template.qmd b/template.qmd index 9ce582a..67e5d4d 100644 --- a/template.qmd +++ b/template.qmd @@ -1,8 +1,9 @@ --- -title: "Cours avec Quarto" -subtitle: "Sous-titre" -format: - cours-pdf: default +title: "Template Quarto" +subtitle: "pour mes documents" +type-document: + cours: true +format: cours-pdf author: Jeff LANCE date: last-modified --- @@ -10,7 +11,7 @@ date: last-modified # Introduction Cette extension est un template pour mes documents de cours.\ -Elle est basée sur ma classe $\LaTeX$ ``latex-homework/jl-cours``. +Elle est basée sur ma classe $\LaTeX$ `latex-homework/jl-cours`. Ce document est un exemple d'usage de ce template. @@ -22,7 +23,23 @@ Ce document est un exemple d'usage de ce template. \lipsum[1] -## More Information +### Une sous-sous-section + +\lipsum[1] + +# Tableaux avec ``tabularray`` + +\begin{center} + \begin{tblr}{ + colspec={Q[red9,l]cccQ[green9,r]}, + hlines, vlines + } + cell 1-1 & cell 1-2 & cell 1-3 & cell 1-4 & cell 1-5 \\ + cell 2-1 & cell 2-2 & cell 2-3 & cell 2-4 & cell 2-5 + \end{tblr} +\end{center} + +# More Information You can learn more about controlling the appearance of PDF output here: