From 56a0f290aa8f9b1a5c39f778177f0e6293718668 Mon Sep 17 00:00:00 2001 From: Michael R Sweet Date: Fri, 13 Dec 2024 23:12:48 -0500 Subject: [PATCH] Start work on example documentation. --- examples/apache-badge.png | Bin 0 -> 15926 bytes examples/md2pdf.md | 244 +++----------------------------------- 2 files changed, 18 insertions(+), 226 deletions(-) create mode 100644 examples/apache-badge.png diff --git a/examples/apache-badge.png b/examples/apache-badge.png new file mode 100644 index 0000000000000000000000000000000000000000..798b9f8085153e1ca209fc996653745f2330ce7c GIT binary patch literal 15926 zcmeIYWmH_vwl3Uw<8BGkxVttE!97SIXc}nT8~5M@_uvGA1qcqo2^O5-4#7h3;0|Bs zefQaC@9*CGa}Xl`OKAJ`6;7JdCElp6klVU=;5ET0UCN@u)GV#3T=dVu zEPPYb+k4d-F-g;i(>tTv3opf6i9|5{ecD`}e@E4maIOTY*F$Do`5MXX7jJ{kT(VcJ7QHMW|L&!6$cfO}(pjn-ad3q;>qY^Q&36^BZTJ&NR>2PW>uQ z_Wbl#uXc*s-1aysfk!1QIbR%kdry;Ku`^Y{@1!l&>b+P6X*6F)$+J3Z>Td>uPnch`1U+LF~yonBICNmZU!?&5XwCEI|-lY+r`JDoZ-M2ix z7Kpoiq_SRQxTZDXV@*>j*vKKEe%Q&#tP_so`7`**4VPDPf zRJXNi=wY)ZZ1z#V>0X1Cw9V~FZd+oXL_Kiskn5A>n8RJ!yd8!=YM~KV@1Vz&wf0@k zw@Vy?(T|*lD8Moaq;0qAl)ID;H%I2L#WMlp`A@GOkMk5`KjFxbS|KLmIbJ#cB2)R6Am=&lwDilnPPFt@>RIReI>u1C0-= zoTX=u5nxaLRiBBb`Gq#UmShwLAgCz}PV0>&YP)QC5T(XTk1>|=86Kv=G1rP(kGdj_ zxbrxVt5V|w`cz--w3=TZeXW$I6lIHhi5f544RU1{KeIc!_?l;lJAG=DY8uY|4$GjN z=L!tz^GxkO=+oVs)Po?TJloEG-pV6C{6P+hZ{WZL`ilkY^-Rs1chqc;9uY0P7W|Qn zeB)-oO1DJdtIr1wv&Mp2``=!XYA_(#rb{HP#i3O9c*|0MGEV370TdpV%_C&zgt-^7LMyyqcJ*^V|Fr6P3ij=iI;aBB!)l2ai+U z$2@HwFX%zPT+6ZA^3;3Rm5w|!))N}#`iP>XKWFhu(`3D{nUZpp-@Sfgw}G<3Wb>^p z$y4tA$6mCYxsl@DS98|ZPsB_S*pCC>f)rU^WZ=9jC6!;oLmlYMBchX(9^-poO!mu8 z)``z)n!eJ`)=9Goe9LgUr%A92tq$3xfVpG%ihgPy*_D?3At@DgbAAwwviyR6dQ#E2 z5G>G$t;a*&g*2_6eZX1Ovw(;y;WwbxO=-)N&V#EL6f~$nEa=ky%_rsc+gl~-JeTD5 z{BCbXD{m!7i8zWD*917B${$zgmPE>Cu}ofCR22tjFd3gm ze8Za+Hn-yTI!9-B1$!|^tRu?;S!oP(jeb^|Hx`B(26ZKSP&Z>!M~i+9qnWb^vIp(jeE z*YzOO5`T^ta?IvGtigR4GaHo}j_EK46R|7HsiQ}J(*41MZ@60f-FA)JqA>6p`Aw9h z)-jQQ{7XHsxf?Uuv=BC$g=H3C@cXX6=>B@1u$ANOGCq^ZJLI>FnU|bmCGv?YEUbG> zA1VyQ5g3v{NNwt9*=#I!L9VSY1uZd$)O7e9fdn(#%81_5r?H1GsWy&6{P^))?Z0=Y zP6x|qM1_LMaAm1KqVj_W`(o}3NTvxYBnj&T$Ot ztMW}F`((?!4aHe6t`1Gj=O@m8lm=<*y=D5D1F$yl^ElE%BTDvA4LKuPHA1(Puhjt- z=^Y;&sBTPRRLCzvxf^aB8wo44=<2C^2j8kuAz*ABM@2$^(C4+i4RL&X!Mqhr`Uc6d zmC~3;SoNWsUd9|(G=T>>a@cE2+K`CMP}7OruEg6~R*b_KC=tXufe`c)<{Ko5_{8n> z>*e>awyu@dI_3u5B4y91w_dh|%VlA=;vAX}y~!$K9DSKlTrPlE|6>kle#d-Lr42=VQ+d6#6}ru}NA#uJZ^%G~NdRNRcGq3fv0hrwG5 zDSY@|nmQ<>BayG(bQy+;&&4QhLIH8Kiq#;Im+ET2vPTmjpgCugLTYr(LCT?_b0qRz z{#w<1ACAxZ;fq9p2T~{~6y4g&pA!&kQL97WOd52xw}hH$BFSz!`AQQbcz*V^p)1{? zND29H@O-b&zM9JbJ-_5|QJ4~4HcE6r#&+BtljktMbj}EGD(E!}!IauA?f2=G@Gp&8 zBp*3HL!|QK8dcQJfw%q_Uy$Am9wb@?dTH?)44e?ufI;MK78NLO%VfBjyTN#rcW;)% zK3>WBIA3|461-RKjtoqNU31oGqiI1prjU={Vn z9vH2Yw7MXQ5e7?tDJM~0f_)~*Cm3sV*ibk{Bz1AllD5RRJ{jWw@dtNC_RoG4TIpHx z6+wu=0>(oy!eQLQ{syj3Z*G~vNKTqoCRFB!VpI4tX$>=BS3zG(UM8X|C6?ItC!$%t z+T7P$oS+}HeaKfk)q}Hjb}=(4Z?VrQ#;_L9Yzs!!`+(dH^TGzm+aaml(cLL{25K>% z;yFjZC$otJZXj$BTI;j)&Hf(t1thegDbqIFI2@gdtsuV5@MJ`YN*SF&Ic=fAODL(+ za?euZ03s5(ha(}G4k8g`>vxeDC6S0GV^sUM9z=%%LE7|=JN}GCAbQ469VuO6%>|@e z%DNniq@nl}Z=1ulIi;Xss9y=W6}nKKIe%iSmYdvPf4j zIp5If(SUOTpqEzu_g6crGPT^+yZNYQhzEL{v%=#^2J=)j!L~O)fQ>%kqg!4nUTdq- z2jBidHzICSBpG_L)cNn(V~|9Zk){#H!xQSq>n)cD>XM$Ov*S9)TfU#Nd&a^gJ3QkC z1FG+`F$-+17`4~w>d$wKyPbybBY?TB7Wau32W$^dt4fie2H#N0qfMt(&^6^f=5Jf{ zDa6-O-Z_}}3z-tgMjLGxCzeR=*tkdn_?hmwTjQMfE(FCtHpROW*hRx|fRD^MUS`PLXJuXX|v|ctuJ^c0;cNGXY^c#Zn~4 zt3gPYXkJRcW9j0bB=Ptm-0Tuqpojr+@`b?MI8B$xC{7NOtB?1lO+`5RB)>kIT!|l` z?DU^IduIp-ETa|&-LxFN3@`>~lk)qS-p^rEG93i)-nLo=;z_=Y1qDA<1?5}VSk_8Y zw@W^V*N%t!74_uJ(y-$qCIyr^*1x*AK{YZ;^|ne*+RlE_)W5j0{S=snQ-F7Pn#pRT z81&#}nI&ky>-1`T4r^@_C6AF6eKYR*CuKeMmpb5ggO`DqF}O0%J}!}V9>z=NMfBf< zR@nv=QLMKl7|G>hKBL9_ZmM$jjm*01mzgLBu;ioFq1E>98vd2Xn(O17)8V0&hGk-k zSl@2g9;-bUz*kVJST1;k)a7nZQ3{cf$LnzifT-zLMEm7FP$K!cP$V*ORuCdy8=9Zd ziA>lNlD4p7W(tob4FG_pZu8=WrqYWSAkDv*%H{zl7ust`>O z=iSiN&%2*vfluJGaq!OAvM(CI2hEgqR89b4AbD%p>;y4VHYRrdF|6%xq^oKmHp-8$oos9{ZeD}zHcT-1F3`pHV< z(Q|NE7i$!PUG9^{&i{&>Z)9mI+h$$40_Q|j$;X1IcM*{PMPK+$RqqJ9oOSRJRRjJ& zGq+U``iYmfBZX5!Jn<<~4~<}`@QbA9tp%p!n%BdqN6vf+EMR|qXzBh-w@+0WgiA2KejY`C`lcHc5 zkHVy`SK=7ikjGgVAgUSCX9uN4(bFKX`d6^OAfXVo?qt)DAQJW9RT+t<=$$*Q+jybd z+?|VYjr7=~Uu}{Yn#}!?E=ePX?42Al29{P|T(VqJs4#K-zS0?znXb8usEy-!zBma!!CEmAT%#HAVlC7S;vdM4JMK=>Ctdb}1>;v@chp7FiBLPNuKz%6$JCXOOwQs*v zmV7{4E%OORpdOH7#6yUXwzQU=l!`|-*_5KWrliGBz>UWw`$hZ~aUhWDD=YYfyQD=V zDCVm~kur`KstXkmt@*bJPd+{QB?wI6dEMdk|8y?pWwhq?6BALIzv411R*+uDv6o`l1 zEkzWGHuwhPTmthmjQl;q&!Dh;vXtP|HVOOr zpIJz{B7?(>WET@#2k1UNzahK{GAkAN6!PrDt6%ylv98~p`KfYZEDNS4WZZaKC^!_# zzpq$}`(U)ktjdahC$*+VR31B4-A|>LT3aC%Df1!9=6}MZB&vWrr)U7+pkFxW8WxNGkM{Ag+_&{c4Nu# ze2A$IaenVia#W<={hT&&fZl*m{D+Auqa~pgVLHAL{uO}+!BUh)q(41@Ql5pzDUDp> z^+!J~9vdVZp9>&G?p6HCmr#0O`wZe%C>&JQ`0|^IkWw=M?Wx}O;$cOdPuTyxo zBXgzGrE_13Pm7*2xESS~r8qpuND~O9y zOBz(|(r4u=IUSN3Q#}$IHGOL?1rMhdHOR<%vcE!sWYJ_xSbe8 zIf6MR#tz1ME3zvYEvYTv+(h4#O}!g5|H-Szjmz!CBN@Z{tdE@GS%aI-N~vAp>R#;Z z*&N|+>aW9@*0L+A z#q{?v?pf!?b-|ujJrZ>0g?Myj6R3q#^5Xrf=7F2`n+^TnVq4Y77&{ovk{cMAR0GU+ zYlSO}UV-6wK^bWr3PFNM}__F%9;@SK!m#oU3I7=>b)8F)7s9s}N_LqLg z+efL#?p^!1PH4vz$HuG1o0Z?9`<)PK9!35e3Mb{){=04GvAgYvpWn3q2>WjO<<&gLDSjo1 z`1tQZ{hW!^-Q;G*I?-XSa`tkC5n{baQ)q;x(_larVQL*;iKGyVrxO*Ji{m&_)-Z_< z%s1+_IAU|C;`6US<64wI`lfAEaf_AEC)O?U1|u3VtJ$-UAJl1))k60-m1nb zsEu;=7_-?<7|1zX9Zj$3T_GRYRKQA?TGE@F+^FYE=C76>>mQnMLaD960}}e41E=5n zdt!PRE)*XsZdb!A!sGh4`Y-7q3I>^NSvb`0Vl8zG_06a6k7|g&m30pEIhB>ne%#i_bmI2iSydXy5pDo$pFJ;QTXst`o7_c z0q)bm<=ML6RpTuimEN-|9}@>#>a~FT%(VvXIi#w*)~~HDHGA#WMO9kIuZ{?((^Wq|!&CJq;|t%*yEEz}39%>PO+t9WTP=;NnRa(BACK=J zr=LRa-RLItXcz?|Q#hdCdDVMZV9jNO(vYWf9`WDD zKLr7IjYw}$E_TZRvQvP_E975aTzcGpu?smL>5$NhJ--*;hWVI?Tnov$Gd}bmCvs?h zY6(s}>;yEFgvh2M5Q5;FbP+c2%{YBERS|P12Tq8ElNprL%fT7GSqA`!NqRX$%-s_D)hg#fa$>ZG`X~(Fei6cbEupL)X|OZUm+~a|7q{+?rQ&6 zb1clcp!QG)xGD_pmFM4F{@ES?proexPxU{HS=l%^|K$W8n|}j# zv$6a?0RNHvFTil~f8zdIHU5jLziI*3Qd1L=buxGV(;6jNaoRurMJ$}mZ7f9ox-47C=?=O$pbOt{}%`iR~vW|L+t;xR)3%@;7~$B z5ctlI883$r7-Gr659Q|LFtg<5=iuSy78DW$^H>N#Ab&wwn2X3exjI1L(YJAcSV6g* z9j*Qn{E32yri~ZWUSHM*-e?#+;lybLgn0jd(%1hY<>40oOZq2RBGQ^l;KR;Mlke{DN;J=k#L0$i@1TQBK zHz(iUz<**Y0%rmq7091H0SEZY0#1a;3s)$_&B;~A$;n=v_D`Kae=Ps%N+7YnBdTZv zgKK#I>0STmU)oTYzwiF;ZuT~Ri9n#gx`+tG{BI{PhzHc-FGp~@zeVQO5JxL0d@T7# zHvU(+&HpCSJZ1ux!aTf|98f+UUJiaiupkFS2x`V*Va{*C!^6wX&&>_~cXXJOrJEfkzmOvKm%_h{IdHqb%iv=fd}!qQ=h*lU(*E%H|M2sVVEjMy0EhmM zlm8LF|Do$Ybp4MQ_#Y|%C%gVb*Z+ut|B>>4vg`jET^Rqpx`H~wAA>yMYp1@Om*wzv z7pj?xf-K+(5D5S*BM1(|OVFJaU&8)6va*IyyDcWzbb(r7sKRKt~?1BG# zL~i)4ILv&B**4#$UctUbA%3Jjzi~6%jjdGeIr8gZ*NqRgaXiLzfkLOxOjf<2DnC@!~!sfIFmkHhP1O} zxKFwwNCSNH=q~{~4{h`1T)PpNYLX>SY%>0-3>_pyG+i7sViFI7!>66&xYQDDmZO;& zd{!7VKe85qa%{0J7m?9cif=+e01#p`USNQdWCAAad@k&kVEsDz!x)-apfYWSOT}hH zhEmb}e2uw8-gqthaBat+1s^tRDh&^p9tgj(3B#^Q~$0K^L$s%MXd z0lxEN10IF?CW_N5e~oQ((T8dm&?$%Yn=Y2)VW7~&Ne*)p=HR_6J!q%N^nwtVGrIsZ z0dhcHYnpc-dh8ohg9gwpXz&mtL-E4i!HzC`klq4lXJ=+?G6h|?6b-L|G(kZ@QuZs+ zfR|5GM`T!GJmoS#04)Illqp6%=5i@J7Re_UuUfArXX#5R4Jc~YUzR=;bAga#Cficf zo2DT0kj9qGjE<%wxIF}h8swk$LY`H9C5C~l09I`d04f&b{npJ7o;CTf$O7NElrdiP zlK~dIqcSJLV43Kdby0czYBF3j`jcPj1F^VMJ(viO7*SJJM_CR`h7TY!KRi6-vl^@T z^l4~pOak_EW-yQ(1FY<8-{@=snP$w*e0fijFefqtR1vtG<6L?KhzbT z;vXZU)co-hZw%a|6dc5}BlwxxJTNFyF(|7*d`0|fuRwz-&d6>M2XUE^69GdJ|1CjI z5EV4FG#Cna#vlUv_6y_E064%rfxeDxL~|Chf$wRg_lU(1B*o%_mp_qM!vLH>|26SA z|Jj~7M#fO?wPbsMnOfh-)NrwY`shON8)oQ2j08|QI+Dd1h%=xBDq0h4PXxip>+ z%7h?cy>ywbBK4!j824q83{Y(@N1dsNo&v|W-6Wz1LWT-*9=p4}y$_Hyx1XuQgJp^>F?Ydb)p*;O~G-L;Q7=(m`8o6RDp}%kZ)JwF1U%}~GjZIC@!xIzUCnRN? z5x(aUBnyQxhQ~#3B>LFc{n%oei8?EHatw%^m7eiSl$iIwYTh8mSHIi2S2l5qnAmsw{`Bdlw@YX zf2q8E;gjcgsx-wrH93h_Q&v{i*5-Gz(H9P(5O&UQZ(lj|5E2p^&yx)74n=QoZx{7E z!a@yc`5aG~^^L5&veLNGKBH%SzRpSm20N>U^t80L=BV!!$VIoAIN90le|Qm*q7|B; zU7|jkC;8`t2RvA=DXgkmJM>UtF>id2RXSKo!XSg1L@^hy%qHToA!XvBlzY6m!sPf{ zm{esUXCsqSm)km*`Pri|sNT&1*RVuD5KFVDwMtQGVAjhFH0|25Gne8;?oKn5-@rBn z^Yxj`fz*|VS1T|}A=9w;d>U4H>QK=TUol=GTrEGt2hdwksk)koe7#~Xy4TTj*Rw7O ziGNYQ@s&LIV<@@hb+aCoh~^VAOvaE@%y0i_vU^u4PUUWtFxv+&wQ}R5Z8pE9Qc35- zSJRkUpz6bYuCJ4SF{s?tX^OWg0Nae-Qs1l*8-M(S-l2iqlhH1Iy5o8ydSzvWn3z~1 z@AxYkwNdq(w>Fso=Q(3f@u&N<{kf{Z?NmKw6%}}PicyWn3ax&D522%6o%ffb$0@0) zD2NDEb1E#xEpEGn8e%6C3e;*DyxWg=#~NyC*r*|nO?T(JQ&-Edc)X3Wl3Z3cw&;)w zllGRPA_f{7X%=uk1&^&Rg1!0gfPmTPY>~Cwtwcldr?hl|%_&sC7R~;Z9*NV4@@SpK z_peDTP{`Twn#6A@-!<4xMttCY(p?dOma;Ld{$lxb^@DGUmex%b`*Lo&Ko5V9(G+@O z=ckU9BuGTA*IC7iqrx*9tPiffql?MLov-E%#qQU^D4y?&qk{Op=^fo}g!PmhYkap_ z@agHPfZgo$++0&r(~AGq3j9@;;6OGQMrQ80?4n?7Oj)F}o==IR_?)&t ziyP8w)Y(~>{%{pFg_dOeIwRLtZ34$ylqk-4Ml|re4&~`&v5-^T+x5t`tZU8R^6a_f zUHYeB!&hLT_7)L7sL@GepzzYu*RAXs@7H_*XD74NpR*c0HcuD1aBS#x6_fF_OxJ!7 zjCY=0pRuvONZVPScA`*(alO~BZu41-8_N5_`ig0qVnN(oCQK#kS&e}Y-4gtZnCS4( z@2kwxUyo16wf+oS-oQBS1bPEo6xGPVz9+RBR90GQPy96Ar$G3l^g<*XFAAA3xhMR< zb9azPip7w26V*i4VF}DR2*%J>CTH4QZie06-H~z{3ERz9yy5?emw+ci92jcd%p#&_xhmj;M5NjprqjR@b0-OUiYu)?Ct4{4c5t<`iz@necJB#v(%S?n!b5jfB`&iivYjP zErT5I)%$DwmE;Ikk|8`DYpp$GfJ&Hst`0DiRVo~5T58D#r5?{LU=IB88Hhe8$Fwmo zIVq{7rRDVOjE|2`ZK|T80xL|W<#Vgi=b@n?eK9~~WhI?_O!dlec~yr92S;Un{WPko zlDhZJc6#9N5NdYQ4hjI3??H{wnjdVcSS^O9YR>oWuxW`bG$Ac5EhUAhOh>1zCuj{N zD8)M59mM6!08nMg6$+y!O`CKRWUZX;v$}jfqx^wQI!j_<-=%mt2hGxs4k|!xU0tEJ49#$D@YnoUK|!YjL#K9KU0wGz|0`l5 zqWPiA70^;d*4#6#5+hXt%eZ&S8(reb8---|ddWHcsAt_mCQ{^D6rO_i2!h(s@j zGL+C~A%=#@kQd*}_9F_@bZg-cBMt#UK)6haCGg(f00gA6N`hQ?Tz=h#F)G=#H9Exh zpvwd?;WMU)9uF zRFa~9HtN}`m1PjG7^<(Ty75(ey0PqwhO0?*Ys%$WhyPuh$?*_%RmJDej<&WfcSo&G z&D&}1zE>nfL}KtMBj|m0_Wk!4xb2U(`=g_ym+S%q7KmMs4|j8whF8~{@p`(t9Ht%j z4_9kUq0VD=wze1;7=n(=k&%OggXOO(7hBxz=n2TXb&=Kug(?U$a+kCTA_A-L^w#d= zZZ@lkDgv4hT3LjwsKCLQL4NbW?q$&4I3)^niw8WZhrOZfF&;* zTwLmTI(_rx^KBOESVylwB5<{Pfv>9NU=k&nkwcTr<1|sF#7RSK#M|;rQs_!jN6W1} zDd}Z8%a{-0aJpI*8|4k1cJ2YLUf!-XMV0`|f{UEtan{Z2tG(rmh_v?XU>Wd0fEf(kHw=5t*i?{#4nUxG&=%qDYpcNdxqJ)A!XU~8$aL6gR=5+-`m|1 z7!1~Vw{pyB*f>&KQD0wwdwcuo)2HQSBbwg)YASquV02`7lzAF+lv=x!4ts8d^3L*t z&t)tjQ+&*LPEsx~ocNi9{rx*{G`yl@rl!W6#m5B$PZ7V`z@@fbmB9LXQavy1Z-(90z})4+CPJXpP} zNv+P}OHT+-3GZ1K_o&z%$%r#q))uq%rl((>e{3T!_OT=QL$s2N*$Hmp)X2g<)+kKoct%%CS)$#Jp1On~Khk$aQH7CKd=i^CS)0ZU%8NT zRd(E~o&fZ6%W6*@`}%zS@FIC5 zC;V;{uUQyE8H(P`EOlW_syJaXL6JY^3kt!GK%x3+Int4qY2;Jur9Hh?cUV4FaGj28ISg3RZqCLl$F`;z~o?SU%dU4veiD zXjU&nRSaS-VyCG*+v6bXp-8$&g8vhUHpObm3K0|*Ge1a2q2pB2OU^Ix z#iEx_jD+Y7`yJH-QxTR5Ix-ON?w7-y(T7^`Fs~>yVE(g78{Ebl5S3W3w0!{%IR;Q_ z8bzwWrh(y5Pr7V75pDk&Qd|0bUfgm4Rg((6;t3$aXV#tj?J_Akx z=iH51HAk|p^8>#s=xQDL{F9r6G`EU2cJL4eO~gbG!za&Gd;NDa?=SymSXv;qO2T80oF1yI&c%|Y)&Tt zYQe+7g0J|it0*)&U3cY37Epk?c6Qsj#_WQuMh32kBqb*PGrH@gHLps_<$&G|B)%Vg>;4S8u*iTWu-&@z|E*#X;<>w8%%(boVx61nK!}z9}J7LMF0Q* literal 0 HcmV?d00001 diff --git a/examples/md2pdf.md b/examples/md2pdf.md index 7815f32..b995075 100644 --- a/examples/md2pdf.md +++ b/examples/md2pdf.md @@ -1,235 +1,27 @@ --- -title: Mini-Markdown Test Document +title: Markdown to PDF Converter Example ... -All heading levels are supported from 1 to 6, using both the ATX and Setext -forms. As an indented code block: +Markdown to PDF Converter Example +================================= - # Heading 1 - ## Heading 2 - ### Heading 3 - #### Heading 4 - ##### Heading 5 - ###### Heading 6 +The `md2pdf` example program reads a markdown file and formats the content onto +pages in a PDF file. It demonstrates how to: - Setext Heading 1 - ================ +- Embed base and TrueType fonts, +- Format text, +- Embed JPEG and PNG images, +- Add headers and footers, and +- (Future) Add hyperlinks. - Setext Heading 2 - ---------------- -As block headings: +Source Files +------------ -# Heading 1 -## Heading 2 -### Heading 3 -#### Heading 4 -##### Heading 5 -###### Heading 6 +The `md2pdf` program is organized into three source files: `md2pdf.c` which +contains the code to format the markdown content and `mmd.h` and `mmd.c` which +load the markdown content, which come from the [Miniature Markdown Library][MMD] +project which is provided under the terms of the Apache License v2.0. +![Apache License v2.0](apache-badge.png) -Setext Heading 1 -================ - -Setext Heading 2 ----------------- - -And block quotes: - -> # BQ Heading 1 -> ## BQ Heading 2 -> ### BQ Heading 3 -> #### BQ Heading 4 -> ##### BQ Heading 5 -> ###### BQ Heading 6 -> -> Setext Heading 1 -> ================ -> -> Setext Heading 2 -> ---------------- - -And ordered lists: - -1. First item. - -2. Second item. - -3. Third item with very long text that wraps - across multiple lines. - - With a secondary paragraph associated with - the third item. - -And unordered lists: - -- First item. - -+ Second item. - -* Third item. - -* [ ] Fourth item (unchecked) - -- [x] Fifth item (checked) - -Code block with `\``: - -``` -#include - -int main(void) -{ - puts("Hello, World!"); - return (0); -} -~~~ -``` - -Code block with `~`: - -~~~ -#include - -int main(void) -{ - puts("Hello, World!"); - return (0); -} -``` -~~~ - -Link to [mmd web site](https://michaelrsweet.github.io/mmd). - -Normal link to [Heading 1](@). - -Code link to [`Heading 2`](@). - -Inner emphasized link to [*Heading 3*](@). - -Outer emphasized link to *[Heading 3](@)*. - -Inner strong link to [**Heading 4**](@). - -Outer strong link to **[Heading 4](@)**. - -Implicit link to [reference1][]. - -Shortcut link to [reference1] without a link title. - -[reference1]: https://michaelrsweet.github.io/mmd 'MMD Home Page' - -[reference2]: https://michaelrsweet.github.io/mmd/mmd.html 'MMD Documentation' - -[reference3]: https://michaelrsweet.github.io/mmd/mmd-160.png "MMD Logo" - -Link to [mmd web site][reference1] works. -Link to [mmd documentation][reference2] works. -Link to ![mmd logo][reference3] image. -Link to [bad reference][reference4] doesn't work. - -Autolink to . - -Autolink in parenthesis (). - -[Link broken -across two lines](https://michaelrsweet.github.io/mmd) - -Color JPEG Image: ![Color JPEG Image](../testfiles/color.jpg) -Grayscale JPEG Image: ![Grayscale JPEG Image](../testfiles/gray.jpg) -Color PNG Image: ![Color PNG Image](../testfiles/pdfio-color.png) -Grayscale PNG Image: ![Grayscale PNG Image](../testfiles/pdfio-gray.png) -Indexed PNG Image: ![Indexed PNG Image](../testfiles/pdfio-indexed.png) - -This sentence contains *Emphasized Text*, **Bold Text**, and `Code Text` for -testing the MMD parser. The `` header file. - -This sentence contains _Emphasized Text_, __Bold Text__, and -~~Strikethrough Text~~ for testing the MMD parser. - -*Emphasized Text Split -Across Two Lines* - -**Bold Text Split -Across Two Lines** - -`Code Text Split -Across Two lines` - -_Emphasized Text Split -Across Two Lines_ - -__Bold Text Split -Across Two Lines__ - -~~Strikethrough Text Split -Across Two Lines~~ - -All work and no play makes Johnny a dull boy. -All work and no play makes Johnny a dull boy. -All work and no play makes Johnny a dull boy. - -All work and no play makes Johnny a dull boy. -All work and no play makes Johnny a dull boy. -All work and no play makes Johnny a dull boy. - -\(Escaped Parenthesis) - -\(*Emphasized Parenthesis*) - -\(**Boldface Parenthesis**) - -\(`Code Parenthesis`) - -Escaped backtick (`\``) - -Table as code: - - | Heading 1 | Heading 2 | Heading 3 | - | --------- | --------- | --------- | - | Cell 1,1 | Cell 1,2 | Cell 1,3 | - | Cell 2,1 | Cell 2,2 | Cell 2,3 | - | Cell 3,1 | Cell 3,2 | Cell 3,3 | - -Table with leading/trailing pipes: - -| Heading 1 | Heading 2 | Heading 3 | -| --------- | --------- | --------- | -| Cell 1,1 | Cell 1,2 | Cell 1,3 | -| Cell 2,1 | Cell 2,2 | Cell 2,3 | -| Cell 3,1 | Cell 3,2 | Cell 3,3 | - -Table without leading/trailing pipes: - -Heading 1 | Heading 2 | Heading 3 ---------- | --------- | --------- -Cell 1,1 | Cell 1,2 | Cell 1,3 -Cell 2,1 | Cell 2,2 | Cell 2,3 -Cell 3,1 | Cell 3,2 | Cell 3,3 - -Table with alignment: - -Left Alignment | Center Alignment | Right Alignment -:-------- | :-------: | --------: -Cell 1,1 | Cell 1,2 | 1 -Cell 2,1 | Cell 2,2 | 12 -Cell 3,1 | Cell 3,2 | 123 - -Table in block quote: - -> Heading 1 | Heading 2 | Heading 3 -> --------- | --------- | --------- -> Cell 1,1 | Cell 1,2 | Cell 1,3 -> Cell 2,1 | Cell 2,2 | Cell 2,3 -> Cell 3,1 | Cell 3,2 | Cell 3,3 - -# Tests for Bugs/Edge Cases - -Paragraph with "|" that should not -be interpreted as a table. - - code before a bulleted list - -- First item -- Second item -- Some pathological nested link and inline style features supported by - CommonMark like "`******Really Strong Text******`". +[MMD]: https://www.msweet.org/mmd/