Hi Juan,
Thanks for your patch. This looks like a fairly sensible addition. Two comments from me: 1. I'm not sure that "options" is a good name for arbitrary LaTeX which is included inside the verse block. Perhaps something like "insert" or "include", etc. may be a better fit. 2. It's considered generally nice to document features like this :) The two documents which I'd think to note this in are ORG-NEWS and the manual (docs/manual.org). All the best, Timothy. Juan Manuel Macías <maciasch...@posteo.net> writes: > (Sorry, due to a mistake, the text of my message did not appear in my > previous email) > > Hi, > > I would like to propose this patch to add some LaTeX attributes to the verse > block, > especially to be able to apply certain features from the verse.sty package, > which is an > extension (widely used in Humanities) of the standard LaTeX 'verse' > environment. > > These attributes would be: > > - `:lines' to add verse numbers, according to any numbering sequence > - `:center' to apply the optical centering of the poem, which is a > typographic convention > whereby a poem or a group of verses is centered on the page, taking the > width of the > longest verse as a reference. In fact, optical centering is the correct > arrangement of > verses in a document. > - `:versewidth' which expects a text string that is the longest verse of the > poem, > required when applying the `:center' attribute. > > As I said, these three attributes require the LateX package verse.sty. A > fourth `:options' > attribute would be used to add arbitrary code within the verse environment. > > Consider this complete example with Shakespeare's first sonnet: > > #+begin_src org > ,#+ATTR_LaTeX: :center t :options \small :lines 5 > ,#+ATTR_LaTeX: :versewidth Feed’st thy light’st flame with self-substantial > fuel, > ,#+begin_verse > From fairest creatures we desire increase, > That thereby beauty’s rose might never die, > But as the riper should by time decrease, > His tender heir mught bear his memeory: > But thou, contracted to thine own bright eyes, > Feed’st thy light’st flame with self-substantial fuel, > Making a famine where abundance lies, > Thyself thy foe, to thy sweet self too cruel. > Thou that art now the world’s fresh ornament > And only herald to the gaudy spring, > Within thine own bud buriest thy content > And, tender churl, makest waste in niggarding. > Pity the world, or else this glutton be, > To eat the world’s due, by the grave and thee. > ,#+end_verse > #+end_src > > when exporting to LaTeX we get: > > #+begin_src latex > \settowidth{\versewidth}{Feed’st thy light’st flame with self-substantial > fuel,} > \begin{verse}[\versewidth] > \poemlines{5} > \small > From fairest creatures we desire increase,\\ > That thereby beauty’s rose might never die,\\ > But as the riper should by time decrease,\\ > His tender heir mught bear his memeory:\\ > But thou, contracted to thine own bright eyes,\\ > Feed’st thy light’st flame with self-substantial fuel,\\ > Making a famine where abundance lies,\\ > Thyself thy foe, to thy sweet self too cruel.\\ > Thou that art now the world’s fresh ornament\\ > And only herald to the gaudy spring,\\ > Within thine own bud buriest thy content\\ > And, tender churl, makest waste in niggarding.\\ > Pity the world, or else this glutton be,\\ > To eat the world’s due, by the grave and thee.\\ > \end{verse} > #+end_src > > In an attached image I send a screenshot with the typographic result > > And finally, this is the patch I would propose > > #+begin_src diff > diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el > index 2a14b25d5..bc6b64e78 100644 > --- a/lisp/ox-latex.el > +++ b/lisp/ox-latex.el > @@ -3506,6 +3506,16 @@ channel." > "Transcode a VERSE-BLOCK element from Org to LaTeX. > CONTENTS is verse block contents. INFO is a plist holding > contextual information." > +(let* > + ((lin (org-export-read-attribute :attr_latex verse-block :lines)) > + (opt (org-export-read-attribute :attr_latex verse-block :options)) > + (cent (org-export-read-attribute :attr_latex verse-block :center)) > + (attr (concat > + (if cent "[\\versewidth]" "") > + (if lin (format "\n\\poemlines{%s}" lin) "") > + (if opt (format "\n%s" opt) ""))) > + (versewidth (org-export-read-attribute :attr_latex verse-block > :versewidth)) > + (vwidth-attr (if versewidth (format > "\\settowidth{\\versewidth}{%s}\n" versewidth) ""))) > (concat > (org-latex--wrap-label > verse-block > @@ -3513,7 +3523,9 @@ contextual information." > ;; character and change each white space at beginning of a line > ;; into a space of 1 em. Also change each blank line with > ;; a vertical space of 1 em. > - (format "\\begin{verse}\n%s\\end{verse}" > + (format "%s\\begin{verse}%s\n%s\\end{verse}" > + vwidth-attr > + attr > (replace-regexp-in-string > "^[ \t]+" (lambda (m) (format "\\hspace*{%dem}" (length m))) > (replace-regexp-in-string > @@ -3524,7 +3536,7 @@ contextual information." > info) > ;; Insert footnote definitions, if any, after the environment, so > ;; the special formatting above is not applied to them. > - (org-latex--delayed-footnotes-definitions verse-block info))) > + (org-latex--delayed-footnotes-definitions verse-block info)))) > #+end_src > > Regards, > > Juan Manuel