Ir al contenido principal

Ralsina.Me — El sitio web de Roberto Alsina

Publicaciones sobre rst2pdf (publicaciones antiguas, página 11)

rst2pdf 0.90 is out

Yes, af­ter many moon­s, it's out. Here is the (as usu­al) in­com­plete changel­og:

  • Added raw HTML sup­­port, by Dim­itri Christodoulou

  • Fixed Is­­sue 422: Hav­ing no .afm files made font lookup slow.

  • Fixed Is­­sue 411: Some­­times the win­­dows reg­istry has the font's ab­s­path.

  • Fixed Is­­sue 430: Us­ing --­­con­­fig op­­tion caused oth­­er op­­tions to be ig­nored (by charles at cstan­hope dot com)

  • Fixed Is­­sue 436: Add pdf_style_­­path to sphinx (by tyler@­­datas­­tax.­­com)

  • Fixed Is­­sue 428: page num­bers logged as er­rors

  • Added sup­­port for many pyg­­ments op­­tions in code-block (by Joaquin So­ri­anel­lo)

  • Im­­ple­­men­t­ed Is­­sue 404: plan­­tuml sup­­port

  • Is­­sue 399: sup­­port sphinx's tem­­plate path op­­tion

  • Fixed Is­­sue 406: calls to the wrong log­ging func­­tion

  • Im­­ple­­men­t­ed Is­­sue 391: New --­sec­­tion-­­head­­er-depth op­­tion.

  • Fixed Is­­sue 390: the --­­con­­fig op­­tion was ig­nored.

  • Added sup­­port for many pyg­­ments op­­tions in code-block (by Joaquin So­ri­anel­lo)

  • Fixed Is­­sue 379: Wrong style ap­­plied to para­­graphs in de­f­i­ni­­tion­s.

  • Fixed Is­­sue 378: Mul­ti­­line :ad­­dress: were shown col­lapsed.

  • Im­­ple­­men­t­ed Is­­sue 11: Frame­Break (and con­di­­tion­al Frame­Break)

  • The de­scrip­­tion of frames in page tem­­plates was just wrong.

  • Fixed Is­­sue 374: in some cas­es, lit­er­al blocks were split in­­­side a page, or the page­break came too ear­­ly.

  • Fixed Is­­sue 370: warn­ing about sphinx.addnodes.high­­­light­lang not be­ing han­­dled re­­moved.

  • Fixed Is­­sue 369: crash in hy­phen­a­tor when spec­i­­fy­ing "en" as a lan­guage.

  • Com­­pat­i­­bil­i­­ty fix to Sphinx 0.6.x (For python 2.7 doc­s)

This re­lease did not fo­cus on Sphinx bugs, so those are prob­a­bly still there. Hope­ful­ly the next round is at­tack­ing those.

Problemas de abandono: rst2pdf

Así que lo voy a re­to­ma­r. Voy a de­di­car­le unas 4ho­ras por se­ma­na.El plan es:

  1. Jun­­tar pa­r­­ches que es­­tán jun­­tan­­do tie­­rra en el is­­sue tra­­cker

  2. Arre­­glar al­­gu­­nos bu­­gci­­tos

  3. Ha­­cer un re­­lea­­se con 1) y 2)

Y por su­pues­to:

  1. No aban­­do­­­na­r­­lo de nue­­vo

Mientras tanto, acá hay algo interesante de lo que recién me enteré. Dimitri Christodoulou hackeó rst2pdf para que soporte la directiva raw:: html.

Eso, ami­go­s, es tan lo­co que lo ten­go que ro­bar (con el cré­di­to co­rrec­to, etc :-)

Y Di­mi­tri, o cual­quier otro que quie­ra ha­cer al­go co­pa­do con rs­t2­pdf, ¡a­vi­sen! ¡Les doy co­m­mi­t!

Salió rst2pdf 0.16!

Pue­de ob­te­ner­se en el si­tio: http://rs­t2­pdf.­google­co­de.­com

rs­t2­pdf es una he­rra­mien­ta pa­ra con­ver­tir res­truc­tu­red text a PDF usan­do re­por­tlab en vez de La­TeX.

Se ha usa­do pa­ra mu­chas co­sas des­de li­bros a re­vis­ta­s, a fo­lle­to­s, a ma­nua­le­s, a si­tios web y tie­ne mu­chos fea­tu­res:

  • Font em­­be­­­dding (TTF or Ty­­pe1 fo­n­­ts)

  • Ca­s­­ca­­ding Sty­­le­s­hee­­ts

  • Ar­­qui­­te­c­­tu­­ra de plu­­gins muy fle­­xi­­ble (pe­r­­mi­­te ha­­cer co­­sas co­­­mo crear los en­­ca­­be­­­za­­dos en ba­­se a SVG ar­­bi­­tra­­rio­­s!)

  • In­­te­­gra­­ción con Sphi­n­­x.

  • Múl­­ti­­ples la­­you­­ts de pá­­gi­­na

  • Ta­­pas cus­­to­­­mi­­za­­bles via te­m­­pla­­tes

  • Y mu­­cho, mu­­cho más

El cam­bio más gran­de en 0.16 es pro­ba­ble­men­te el so­por­te de Sphi­nx 1.0.­x, si es­tás usan­do Sphi­nx es­ta es la ver­sión que que­ré­s.

Apar­te de eso, una to­ne­la­da de bugs arre­gla­do­s, y al­gu­nos fea­tu­res me­no­res.

Es­te es el chan­ge­log com­ple­to:

  • Fixed Is­­sue 343: Plu­­gged me­­mo­­­ry leak in the RSON pa­r­se­­r.

  • Fix for Is­­sue 287: the­­re is sti­­ll a co­r­­ner ca­­se if you ha­­ve two se­c­­tions wi­­th the sa­­me ti­­tle, at the sa­­me le­­ve­­l, in the sa­­me pa­­ge, in di­­ffe­­rent fi­­les whe­­re the li­nks wi­­ll break.

  • Fixed Is­­sue 367: ge­r­­man-­­lo­­­ca­­li­­zed da­­tes are MM. DD. YY­­YY so when us­ed in sphi­n­­x's te­m­­pla­­te co­­­ver they appea­­red wei­r­­d, like a list ite­­m. Fixed wi­­th a mi­­nor wo­­­rka­­round in the te­m­­pla­­te.

  • Fixed Is­­sue 366: li­nks to "#" make no sen­­se on a PDF fi­­le

  • Ma­­de de­­fi­­ni­­tions from de­­fi­­ni­­tion lis­­ts mo­­­re sty­­la­­ble.

  • Mo­­­ved de­­fi­­ni­­tion lis­­ts to Spli­­tTa­­ble­s, so you can ha­­ve ve­­ry long de­­fi­­ni­­tio­n­s.

  • Fixed Is­­sue 318: Im­­ple­­men­ted Do­­­main spe­­ci­­fic in­­dexes for Sphi­nx 1.0.x

  • Fixed In­­dex li­nks when using Sphi­n­­x/­­pdfbui­l­­de­­r.

  • Fixed Is­­sue 360: Set li­­te­­ra­­l.wo­r­­dW­­rap to No­­­ne by de­­fault so it does­n't inhe­­rit wo­r­­dW­­rap CJK when you use the othe­­rwi­­se co­­­rrect ja­­pa­­ne­­se se­­ttings. In any ca­se, li­­te­­ral blo­­­cks are not su­­ppo­­s­ed to wrap at all.

  • Swi­­tched pdfbui­l­­der to use Spli­­tTa­­bles by de­­fault (it ma­­de no sen­­se not to do it)

  • Fixed Is­­sue 365: so­­­me TTF fo­n­­ts do­­n't va­­li­­da­­te but they wo­­­rk an­­ywa­­y.

  • Set a va­­lid de­­fault ba­seurl for Sphi­nx (makes it mu­­ch fa­s­­te­­r!)

  • New fea­­tu­­re: --u­se-­­nu­m­­be­­­re­­d-­­li­nks to show se­c­­tion nu­m­­bers in li­nks to se­c­­tio­n­s, like "See se­c­­tion 2.3 Te­r­­mi­­na­­tio­­n"

  • Added sty­­le­s­hee­­ts for lan­­d­s­­ca­­pe pa­­per si­­zes (i.e: a4-­­lan­­d­s­­ca­­pe.s­­ty­­le)

  • Fixed Is­­sue 364: So­­­me op­­tions not res­­pe­c­ted when pa­ss­ed in pe­­r-­­doc op­­tions in sphi­n­­x.

  • Fixed Is­­sue 361: mu­l­­ti­­ple li­­ne­­breaks in li­­ne blo­­­cks we­­re co­­­lla­p­se­­d.

  • Fixed Is­­sue 363: stran­­ge cha­­ra­c­­ters in so­­­me ca­­ses in ma­­th di­­re­c­­ti­­ve.

  • Fixed Is­­sue 362: Sma­r­­ter au­­to­­-en­­clo­­­sing of equa­­tions in $...$

  • Fixed Is­­sue 358: --­­rea­­l--­­footno­­­tes de­­fau­l­­ts to Fa­l­se, but help text in­­di­­ca­­tes de­­fault is True

  • Fixed Is­­sue 359: Wrong --­­fi­­t-­­ba­­ck­­groun­­d-­­mo­­­de help string

  • Fixed Is­­sue 356: mis­­sing ce­­lls if a ce­­ll spawns ro­­ws and co­­­lum­n­s.

  • Fixed Is­­sue 349: Wo­­­rk co­­­rre­c­­tly wi­­th lan­­gua­­ges that are avai­­la­­ble in form aa_­­bb and not aa (e­­xa­m­­ple: zh_­c­n)

  • Fixed Is­­sue 345: gi­­ve fi­­le/­­li­­ne in­­fo when the­­re is an error in a raw PDF di­­re­c­­ti­­ve.

  • Fixed Is­­sue 336: JPEG ima­­ges should wo­­­rk even wi­­thout PIL (but gi­­ve a wa­r­­ning be­­­cau­­se si­­zes wi­­ll pro­­­ba­­bly be wro­n­­g)

  • Fixed Is­­sue 351: footno­­­te/­­ci­­ta­­tion re­­fe­­ren­­ces we­­re ge­­ne­­ra­ted in­­co­­­rre­c­­tl­­y, whi­­ch cau­s­ed pro­­­ble­­ms if the­­re was a ci­­ta­­tion wi­­th the sa­­me text as a hea­­di­n­­g.

  • Fixed Is­­sue 353: be­­­tter han­d­­ling of gra­­ph­­vi­­z, so that it wo­­­rks wi­­thout ve­c­­to­r­­pdf but gi­­ves a wa­r­­ning about it.

  • Fixed Is­­sue 354: make to­­­do­­_­­no­­­de from sphi­nx cus­­to­­­mi­­za­­ble.

  • Fixed bug whe­­re nes­ted lis­­ts bro­­ke pa­­ge la­­yout if the pa­­ge was sma­­ll.

  • Sma­r­­ter --i­n­­li­­ne-­­li­nks op­­tion

  • New ex­­ten­­sio­­n: fan­­c­­y­­ti­­tle­s, see //­­ra­l­­si­­na.­­me/we­­blo­­­g/­­po­s­­ts/­­BB906.h­t­­ml

  • New fea­­tu­­re: ta­­b-wi­­dth op­­tion in co­­­de-­­blo­­­ck di­­re­c­­ti­­ve (de­­fau­l­­ts to 8).

  • Fixed Is­­sue 340: en­d­­no­­­tes/­­footno­­­tes we­­re not sty­­le­­d.

  • Fixed Is­­sue 339: cla­ss na­­mes using _ we­­re not usa­­ble.

  • Fixed Is­­sue 335: ugly crash when using ima­­ges in so­­­me spe­­ci­­fic pla­­ces (looks like a re­­po­r­­tlab bu­­g)

  • Fixed Is­­sue 329: make the fi­­gu­­re ali­g­n­­men­­t/­­cla­ss attri­­bu­­tes wo­­­rk mo­­­re like La­­TeX than HT­­M­­L.

  • Fixed Is­­sue 328: list item sty­­les we­­re being ig­­no­­­re­­d.

  • Fixed Is­­sue 186: new --u­se-­­floa­­ti­n­­g-i­­ma­­ges makes ima­­ges wi­­th :a­­li­g­n: set wo­­­rk like in HT­­M­­L, wi­­th the next flo­­wa­­ble flo­­wing be­­­si­­de it.

  • Fixed Is­­sue 307: hea­­de­­r/­­footer from sty­­le­s­heet now su­­ppo­r­­ts in­­li­­ne rest ma­­rkup and subs­­ti­­tu­­tions de­­fi­­ned in the main do­­­cu­­men­­t.

  • New pdf_­­to­­­c_­­de­p­­th op­­tion for Sphi­n­­x/­­pdfbui­l­­der

  • New pdf_u­se_­­toc op­­tion for Sphi­n­­x/­­pdfbui­l­­der

  • Fixed Is­­sue 308: co­m­­pa­­ti­­bi­­li­­ty wi­­th re­­po­r­­tlab from SVN

  • Fixed Is­­sue 323: errors in the co­n­­fi­­g.s­a­m­­ple ma­­de it wo­­­rk wei­r­­d.

  • Fixed Is­­sue 322: Ima­­ge subs­­ti­­tu­­tions di­d­n't wo­­­rk in do­­­cu­­ment ti­­tle.

  • Im­­ple­­men­ted Is­­sue 321: un­­de­r­­li­­ne and strike­­th­­rou­­gh avai­­la­­ble in sty­­le­s­hee­­t.

  • Fixed Is­­sue 317: Ugly error me­ss­a­ge when fi­­le does not exist

Extensiones para rst2pdf: Fácil y poderoso

Es po­pu­la­r, por le­jos mi pro­gra­ma más usa­do, pe­ro po­cos sa­ben que es tam­bién fá­cil de ex­ten­der (¡s­alu­dos a Pa­tri­ck Mau­pi­n, que es­cri­bió esa par­te!). Y no só­lo eso, sino que se pue­de ha­cer que ha­ga co­sas bas­tan­te asom­bro­sas con un po­co de es­fuer­zo.

Pa­ra de­mos­trar­lo, cree­mos los tí­tu­los de sec­ción más im­pre­sio­nan­tes del mun­do y sus al­re­de­do­res (a ver co­mo ha­cen es­to con La­TeX ;-)

Pri­me­ro: de­fi­na­mos el pro­ble­ma

Los tí­tu­los que pue­de pro­du­cir rs­t2­pdf son abu­rri­do­s. Si apre­tás to­dos los bo­to­nes y ti­rás de to­das las pa­lan­ca­s, po­dés lle­gar a pro­du­cir un tí­tu­lo en Co­mic San­s, ali­nea­do de­re­cha en le­tras ro­sas con fon­do pal­ta y bor­de ro­jo.

Y has­ta ahí lle­ga la per­so­na­li­za­ción que po­dés ha­cer usan­do sty­les­hee­ts. Nor­mal­men­te eso es su­fi­cien­te por­que rs­t2­pdf no es­tá pen­sa­do pa­ra fo­lle­te­ría (aun­que al­gu­na se ha he­cho).

El pro­ble­ma real es que si te po­nés en di­se­ña­dor grá­fi­co con rs­t2­pdf, per­dés la es­truc­tu­ra del do­cu­men­to por­que no es­tás sien­do se­mánti­co.

Se­gun­do: de­fi­nir la me­ta

Uie­ro ha­cer en­ca­be­za­dos co­mo es­te:


La ima­gen es­tá saca­da de la bi­blio­te­ca del con­gre­so de EEUU con un po­co de (ma­l) tra­ba­jo de gimp pa­ra de­jar el es­pa­cio li­bre a la iz­quier­da, y el tí­tu­lo se agre­gó con Inks­ca­pe.

¿Se pue­de ha­cer eso con rs­t2­pdf? No, ni cer­ca. No sin pro­gra­ma­r. ¡A­sí que pro­gra­me­mos una ex­ten­sión que te per­mi­ta crear cual­quier en­ca­be­za­do que vos quie­ras den­tro de los lí­mi­tes de Inks­ca­pe!

Pri­me­ro crea­mos un tem­pla­te SVG pa­ra los en­ca­be­za­dos (Es un po­co gran­de por­que tie­ne la ima­gen aden­tro­).

Ter­ce­ro: el flo­wa­ble en­ca­be­za­do­-i­ma­gen

Suponete que tenés una imagen del encabezado exactamente como esa de arriba. ¿Como lo dibujás en un PDF? En reportlab se hace usando flowables que son elementos que componen la historia que es tu documento. Esos flowables se acomodan en páginas, y eso es tu PDF.

Si es­tás ha­cien­do un tí­tu­lo, hay una co­sa má­s, ne­ce­si­tás crear un book­ma­rk pa­ra que apa­rez­ca en la ta­bla de con­te­ni­dos del PDF.

Este es un flowable que hace eso. Está hecho pegando pedazos de cosas de rst2pdf y es una cruza maligna entre Heading y MyImage:

class FancyHeading(MyImage):
  '''This is a cross between the Heading flowable, that adds outline
  entries so you have a PDF TOC, and MyImage, that draws images'''

  def __init__(self, *args, **kwargs):
      # The inicialization is taken from rst2pdf.flowables.Heading
      self.stext = kwargs.pop('text')
      # Cleanup title text
      self.stext = re.sub(r'<[^>]*?>', '', unescape(self.stext))
      self.stext = self.stext.strip()

      # Stuff needed for the outline entry
      self.snum = kwargs.pop('snum')
      self.level = kwargs.pop('level')
      self.parent_id= kwargs.pop('parent_id')

      MyImage.__init__(self, *args, **kwargs)

  def drawOn(self,canv,x,y,_sW):

      ## These two lines are magic.
      #if isinstance(self.parent_id, tuple):

      # Add outline entry. This is copied from rst2pdf.flowables.heading

      if canv.firstSect:
          canv.sectName = self.stext
          if self.snum is not None:
              canv.sectNum = self.snum
              canv.sectNum = ""

                                int(self.level), False)

      # And let MyImage do all the drawing

¿Y cómo le decimos a rst2pdf que use eso en vez de un Heading común? Pisando la clase TitleHandler. Acá es donde entra la magia de las extensiones.

Si se de­fi­ne, en una ex­ten­sió­n, una cla­se co­mo es­ta:

class FancyTitleHandler(genelements.HandleParagraph, docutils.nodes.title):

Entonces esa clase va a ser responsable de todos los nodos de clase docutils.nodes.title. En este caso, tan solo copié rst2pdf.genelements.HandleTitle y cambié el resultado de los encabezados nivel 1 para que use un FancyHeading en vez de un Heading... y eso es todo.

class FancyTitleHandler(genelements.HandleParagraph, docutils.nodes.title):
  This class will handle title nodes.

  It takes a "titletemplate.svg", replaces TITLEGOESHERE with
  the actual title text, and draws that using the FancyHeading flowable
  (see below).

  Since this class is defined in an extension, it
  effectively replaces rst2pdf.genelements.HandleTitle.

  def gather_elements(self, client, node, style):
      # This method is copied from the HandleTitle class
      # in rst2pdf.genelements.

      # Special cases: (Not sure this is right ;-)
      if isinstance(node.parent, docutils.nodes.document):
          #node.elements = [Paragraph(client.gen_pdftext(node),
          # The visible output is now done by the cover template
          node.elements = []
          client.doc_title = node.rawsource
          client.doc_title_clean = node.astext().strip()
      elif isinstance(node.parent, docutils.nodes.topic):
          node.elements = [Paragraph(client.gen_pdftext(node),
      elif isinstance(node.parent, docutils.nodes.Admonition):
          node.elements = [Paragraph(client.gen_pdftext(node),
      elif isinstance(node.parent, docutils.nodes.table):
          node.elements = [Paragraph(client.gen_pdftext(node),
      elif isinstance(node.parent, docutils.nodes.sidebar):
          node.elements = [Paragraph(client.gen_pdftext(node),
          # Section/Subsection/etc.
          text = client.gen_pdftext(node)
          fch = node.children[0]
          if isinstance(fch, docutils.nodes.generated) and \
              fch['classes'] == ['sectnum']:
              snum = fch.astext()
              snum = None
          key = node.get('refid')
          if reportlab.Version > '2.1':

          # The parent ID is the refid + an ID to make it unique for Sphinx
          parent_id=(node.parent.get('ids', [None]) or [None])[0]+u'-'+unicode(id(node))
          if client.depth > 1:
              node.elements = [ Heading(text,
                      client.styles['heading%d'%min(client.depth, maxdepth)],
          else: # This is an important title, do our magic ;-)
              # Hack the title template SVG
              tfile = open('titletemplate.svg')
              tdata =
              tfile = tempfile.NamedTemporaryFile(dir='.', delete=False, suffix='.svg')
              tfname =
              tfile.write(tdata.replace('TITLEGOESHERE', text))

              # Now tfname contains a SVG with the right title.
              # Make rst2pdf delete it later.

              e = FancyHeading(tfname, width=700, height=100,
                  client=client, snum=snum, parent_id=parent_id,
                  text=text, level=client.depth-1)

              node.elements = [e]

          if client.depth <= client.breaklevel:
              node.elements.insert(0, MyPageBreak(breakTo=client.breakside))
      return node.elements

La ex­ten­sión es­tá en SVN y se pue­de pro­bar así:

[fancytitles]$ rst2pdf -e fancytitles -e inkscape demo.txt -b1

Hay que ha­bi­li­tar la ex­ten­sión Inks­ca­pe pa­ra que los SVG se vean lo me­jor po­si­ble. Y es­ta es la sali­da:


Se pue­de cam­biar cual­quier ele­men­to de la sali­da. Eso es ser ex­ten­si­ble :-)

rst2pdf 0.14 released!

It's my plea­sure to an­nounce that I just up­load­ed rst2pdf 0.14 to the site at http://rst2pdf.­google­code.­com.

Rst2pdf is a pro­gram and a li­brary to con­vert re­struc­tured text di­rect­ly in­to PDF us­ing Re­port­lab.

It sup­ports True Type and Type 1 font em­bed­ding, most raster and vec­tor im­age for­mat­s, source code high­light­ing, ar­bi­trary text frames in a page, cas­cad­ing stylesheet­s, the full re­struc­tured text syn­tax and much, much more.

It al­so in­cludes a sphinx ex­ten­sion so you can use it to gen­er­ate PDFs from doc­u­ments built with Sphinx.

In case of prob­lem­s, please re­port them in the Is­sue track­er (http://­code.­google.­com/p/rst2pdf/is­sues/list) or the mail­ing list (http://­group­s.­google.­com/­group/rst2pdf-dis­cuss)

This re­lease fix­es sev­er­al bugs and adds some mi­nor fea­tures com­pared to 0.13.2. Here are some of the changes:

  • Fixed Is­­sue 197: Ta­ble bor­ders were con­­fus­ing.

  • Fixed Is­­sue 297: styles from de­­fault­­.j­­son leaked on­­to oth­­er syn­­tax high­­­light­ing stylesheet­s.

  • Fixed Is­­sue 295: key­­word re­­place­­ment in head­­er­s/­­foot­ers did­n't work if ###­­Page### and oth­­ers was in­­­side a ta­ble.

  • New fea­­ture: odd­­e­ven di­rec­­tive to dis­­­play al­ter­­na­­tive con­­tent on odd­­/even pages (good for head­­er­s/­­foot­er­s!)

  • Switched all stylesheets to more read­­able RSON for­­mat.

  • Fixed Is­­sue 294: Im­ages were de­­formed when on­­ly height was spec­i­­fied.

  • Fixed Is­­sue 293: Ac­­cept left­­/­­cen­ter/right as align­­ments in stylesheet­s.

  • Fixed Is­­sue 292: sep­a­rate style for line num­bers in code­blocks

  • Fixed Is­­sue 291: sup­­port class di­rec­­tive for code­blocks

  • Fixed Is­­sue 104: to­­tal num­ber of pages in head­­er/­­foot­er works in all cas­es now.

  • Fixed Is­­sue 168: linenos and linenothresh­old op­­tions in Sphinx now work cor­rec­t­­ly.

  • Fixed re­­gres­­sion in 0.12 (in­ter­ac­­tion be­tween rst2pdf and sphinx math)

  • Doc­u­­men­t­ed ex­ten­­sions in the man­u­al

  • Bet­ter styling of bul­let­s/items (Is­­sue 289)

  • Fixed Is­­sue 290: don't fail on bro­ken im­ages

  • Bet­ter font find­­ing in win­­dows (patch by tech­­tonik, Is­­sue 282).

  • Fixed Is­­sue 166: Im­­ple­­men­t­ed Sphinx's hlist (hor­i­­zon­­tal list­s)

  • Fixed Is­­sue 284: Im­­ple­­men­t­ed pro­­duc­­tion lists for sphinx

  • Fixed Is­­sue 165: De­f­i­ni­­tion lists not prop­er­­ly in­­­den­t­ed in­­­side ad­­mo­ni­­tions or ta­bles.

  • SVG Im­ages work in­­­line when us­ing the inkscape ex­ten­­sion.

  • Fixed Is­­sue 268: TOCs shift­ed to the left on RL 2.4

  • Fixed Is­­sue 281: sphinx test au­­to­­ma­­tion was bro­ken

  • Fixed Is­­sue 280: wrong page tem­­plates used in sphinx


Contents © 2000-2023 Roberto Alsina