Thanks for digging into this Christian. My lisp skills are quite undeveloped, so I can't really comment on the code. I had a look at the manual and I think we should go for a solution that is consistent for #+ keywords that have a filename argument like #+INCLUDE:, #+SETUPFILE and #+TEXINFO_FILENAME. Taking the risk that the manual is lagging behind the actual code, I see the following: #+ODT_STYLES_FILE: uses quotes #+INCLUDE: uses quotes #+TEXINFO_FILENAME: doesn't use quotes [1] #+SETUPFILE: no example in the manual #+HTML_INCLUDE_STYLE: no example in the manual, not sure if this requires a file or CSS code Another point to consider: would requiring quoted filenames make life easier for people using spaces etc. in their filenames? In that case I'd vote for quotes. Best, Lennart. [1] https://orgmode.org/org.html#A-Texinfo-example On 07-11-18 09:28, Christian Moe wrote: > > Nicolas, Lennart, cc: Charles Celerier, > > Below, Lennart points out another issue with ODT_STYLES_FILE, a silent > change in syntax not reflected in the manual: quotation marks are no > longer needed around simple file paths. > > I think this change was introduced by the below commit, which stopped > reading the string as a Lisp expression, and therefore at the same time > broke the option of providing a list for #+ODT_STYLES_FILE. My patch > last week fixed the list problem, but left the other change > intact. (Sorry for not doing the research.) > > We could either update the manual and announce the syntax change, or > revert ox-odt-template to before the below patch to bring the code back > in conformity with the manual. I don't have a strong opinion one way or > the other. I like the change (never liked those quotation marks), but > it's backwards-incompatible, and the old code looks cleaner than my fix. > > Yours, > Christian > > > commit 30498ef932bc35c26e3e58278f4987a67480b446 > Author: Charles Celerier > Date: Sat Jul 28 17:09:16 2018 -0400 > > ox-odt: Fix `org-odt-template' styles file retrieval > > * lisp/ox-odt.el (org-odt-template): Fix `org-odt-template' styles > file retrieval. > > TINYCHANGE > > Signed-off-by: Charles Celerier > > diff --git a/lisp/ox-odt.el b/lisp/ox-odt.el > index a1145a9..74d811d 100644 > --- a/lisp/ox-odt.el > +++ b/lisp/ox-odt.el > @@ -1359,11 +1359,10 @@ original parsed data. INFO is a plist holding export options." > ;; Write styles file. > (let* ((styles-file (plist-get info :odt-styles-file)) > (styles-file (and (org-string-nw-p styles-file) > - (read (org-trim styles-file)))) > + (org-trim styles-file))) > ;; Non-availability of styles.xml is not a critical > ;; error. For now, throw an error. > (styles-file (or styles-file > - (plist-get info :odt-styles-file) > (expand-file-name "OrgOdtStyles.xml" > org-odt-styles-dir) > (error "org-odt: Missing styles file?")))) > > > > > L.C. Karssen writes: > >> On 06-11-18 16:35, Christian Moe wrote: >>> >>> I believe the need to use quotation marks around the style file name was >>> removed at some point >> >> I didn't know that. I had a quick look at the changes to ox-odt.el for >> the last few months, but it doesn't seem to be mentioned in any of the >> commit messages. Or was this a more global change? >> >> Does this also count for the regular #+INCLUDE: statement? I just tested >> it and for #+INCLUDE: it seems to work both with and without quotes >> (although the manual uses quotes). >> >> >> Best, >> >> Lennart. >> >>> , and the manual is out of date. Instead of >>> >>> #+ODT_STYLES_FILE: "template.ott" >>> >>> the manual ought now to read: >>> >>> #+ODT_STYLES_FILE: template.ott >>> >>> Yours, >>> Christian >>> >>> L.C. Karssen writes: >>> >>>> Hi list, >>>> >>>> Not sure if this is related (or fixed with the aforementioned patch) >>>> because I'm not using a list for the ODT style file. >>>> >>>> Today, after upgrading from Org 9.1.13 (actually installed from melpa on >>>> 20180625) to melpa version 20181105 exporting to ODT stopped working. In >>>> my org file the style file name was enclosed in double quotes (as >>>> specified in the manual [1]): >>>> >>>> #+ODT_STYLES_FILE: "template.ott" >>>> >>>> The error message is: >>>> >>>> OpenDocument export failed: Invalid specification of styles.xml file: >>>> "\"template.ott\"" >>>> >>>> Removing the quotes fixes the export to ODT. >>>> >>>> >>>> Best regards, >>>> >>>> Lennart. >>>> >>>> [1] https://orgmode.org/org.html#Applying-custom-styles >>>> >>>> >>>> On 05-11-18 09:49, Christian Moe wrote: >>>>> >>>>> Thanks, Nicolas! >>>>> >>>>> I'll test on my end when it shows up in ELPA. >>>>> >>>>> Yours, >>>>> Christian >>>>> >>>>> Nicolas Goaziou writes: >>>>> >>>>>> Hello, >>>>>> >>>>>> Christian Moe writes: >>>>>> >>>>>>> It seems the ODT exporter currently fails to read the ODT_STYLES_FILE >>>>>>> option as a list, as in this example from the manual >>>>>>> ([[info:org#Applying custom styles]]): >>>>>>> >>>>>>> #+ODT_STYLES_FILE: ("/path/to/file.ott" ("styles.xml" "image/hdr.png")) >>>>>>> >>>>>>> This is needed if you want a complex style with e.g. an image in the >>>>>>> header. >>>>>>> >>>>>>> Exporting this causes an "Invalid specification of styles.xml file" >>>>>>> error on my recent ELPA version. The problem seems to be that the option >>>>>>> is treated as a string and never tested to see if it contains a list. >>>>>>> >>>>>>> To reproduce the problem, place the attached documents >>>>>>> odt-styles-test.org and odt-test-styles.odt in the same directory, then >>>>>>> export odt-styles-test.org to ODT. The result should have a unicorn in >>>>>>> the letterhead. >>>>>>> >>>>>>> The below quick-and-dirty patch seems to fix it, but I'm sure there's a >>>>>>> better approach. >>>>>> >>>>>> Thank you. I applied your patch with an additional check: the value should >>>>>> be enclosed within round brackets. >>>>>> >>>>>> Regards, >>>>> >>>>> > -- *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* L.C. Karssen 's-Hertogenbosch The Netherlands lennart@karssen.org http://blog.karssen.org GPG key ID: A88F554A -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-