Re: [O] Help with new exporter
John Rakestraw writes: > On Fri, 12 Jul 2013, Nick Dokos wrote: >> I hope you are ultimately successful in producing exams that look >> exactly like you want them, using these mechanisms. But I have my >> doubts >> - you have won a battle, but the war is still raging afaict. OTOH, if >> you prove me wrong, I would be delighted! > > Perhaps I'm misunderstanding something (if so, please leave me alone > in my ignorance at least for a bit), but I'm thinking I've won this > particular war -- at least, I'm now able to use the exam document > class to produce an exam formatted to match my expectations. > Oh, I thought that was only the first step. At least, the experiments I was doing last night were *much* less successful, so I projected my problems onto you. In any case, I'm glad you can do that - and if I ever need to produce exams, I know who to contact :-) -- Nick
Re: [O] Help with new exporter
On Fri, 12 Jul 2013, Nick Dokos wrote: You underestimate my pessimism :-) I had no doubt that you can get rid of specific artifacts using specific filters like this - you could after all, run a sed script on the latex output and get rid of this stuff - it wouldn't be an org-only solution, but that's OK in my book. Yes, I already had a sed script that would work -- just doggedly trying to do it all in one org step. I hope you are ultimately successful in producing exams that look exactly like you want them, using these mechanisms. But I have my doubts - you have won a battle, but the war is still raging afaict. OTOH, if you prove me wrong, I would be delighted! Perhaps I'm misunderstanding something (if so, please leave me alone in my ignorance at least for a bit), but I'm thinking I've won this particular war -- at least, I'm now able to use the exam document class to produce an exam formatted to match my expectations. --John -- John Rakestraw
Re: [O] Help with new exporter
On 12.07.2013 11:27, Rasmus wrote: 1. You'd want to check for the backend. 2. To add a two tests use and and check that the correct document class is being used with string-match. Untested: (when (and ;; check that it's a LaTeX backend (org-export-derived-backend-p backend 'latex) (string-match "\\documentclass?[.*?]{exam}" (downcase string))) (replace-match "" nil nil headline)) Most document will fail the second test and those that don't are probably the ones you want to target. –Rasmus Thanks for this. -- John Rakestraw
Re: [O] Help with new exporter
John Rakestraw writes: > Success! > > Thanks to all for your help. I really do appreciate your time. > > I cannot figure out why I'm getting the brackets that no one else is > getting (Rasmus -- my problem is that they're there and I don't want > them), but I now have a filter that will take them out: > > (defun jr-org-delete-brackets-from-tex-file > (text backend info) > (replace-regexp-in-string "\\[\\]" "" text)) > > (add-to-list 'org-export-filter-final-output-functions >'jr-org-delete-brackets-from-tex-file) > > Now to explore how to implement this only when I'm using the exam > document > class, perhaps by using a derived backend. (It may be that it won't > cause > any problems with other classes, but it seems sloppy to have it working > all the time, no?) > > Thanks to Robert for the detailed and careful responses, to Charles for > suggesting the filters, and to Rasmus for the example that helped me > straighten me out at the end. > > And I can't resist an aside to Nick -- I've really appreciated both > the tone and the content of your detailed contributions to this list > over the years. I find it difficult to believe that you're more > pessimistic than I am, but I take some odd pleasure in making > something work that you thought wouldn't work. ;-) > You underestimate my pessimism :-) I had no doubt that you can get rid of specific artifacts using specific filters like this - you could after all, run a sed script on the latex output and get rid of this stuff - it wouldn't be an org-only solution, but that's OK in my book. I hope you are ultimately successful in producing exams that look exactly like you want them, using these mechanisms. But I have my doubts - you have won a battle, but the war is still raging afaict. OTOH, if you prove me wrong, I would be delighted! -- Nick
Re: [O] Help with new exporter
John Rakestraw writes: > I cannot figure out why I'm getting the brackets that no one else is > getting (Rasmus -- my problem is that they're there and I don't want > them), but I now have a filter that will take them out: My apology. > (defun jr-org-delete-brackets-from-tex-file > (text backend info) > (replace-regexp-in-string "\\[\\]" "" text)) > > (add-to-list 'org-export-filter-final-output-functions >'jr-org-delete-brackets-from-tex-file) > > Now to explore how to implement this only when I'm using the exam > document > class, perhaps by using a derived backend. (It may be that it won't > cause > any problems with other classes, but it seems sloppy to have it working > all the time, no?) 1. You'd want to check for the backend. 2. To add a two tests use and and check that the correct document class is being used with string-match. Untested: (when (and ;; check that it's a LaTeX backend (org-export-derived-backend-p backend 'latex) (string-match "\\documentclass?[.*?]{exam}" (downcase string))) (replace-match "" nil nil headline)) Most document will fail the second test and those that don't are probably the ones you want to target. –Rasmus -- A page of history is worth a volume of logic
Re: [O] Help with new exporter
Success! Thanks to all for your help. I really do appreciate your time. I cannot figure out why I'm getting the brackets that no one else is getting (Rasmus -- my problem is that they're there and I don't want them), but I now have a filter that will take them out: --8<---cut here---start->8--- (defun jr-org-delete-brackets-from-tex-file (text backend info) (replace-regexp-in-string "\\[\\]" "" text)) (add-to-list 'org-export-filter-final-output-functions 'jr-org-delete-brackets-from-tex-file) --8<---cut here---end--->8--- Now to explore how to implement this only when I'm using the exam document class, perhaps by using a derived backend. (It may be that it won't cause any problems with other classes, but it seems sloppy to have it working all the time, no?) Thanks to Robert for the detailed and careful responses, to Charles for suggesting the filters, and to Rasmus for the example that helped me straighten me out at the end. And I can't resist an aside to Nick -- I've really appreciated both the tone and the content of your detailed contributions to this list over the years. I find it difficult to believe that you're more pessimistic than I am, but I take some odd pleasure in making something work that you thought wouldn't work. ;-) --John -- John Rakestraw
Re: [O] Help with new exporter
Rasmus writes: > Nick. Robert, > > Disclaimer: I didn't follow this thread closely. . . > > Nick Dokos writes: > >>> (sorry, this should've gone to the list the first time) >>> >>> Hi John, >>> >>> sorry, I can't help you with the filters. >>> >>> On the other hand, I don't see any reason why you gt whose square brackets. >>> >>> I tried different versions of org-mode, and never got *empty* square >>> brackets. >> >> That was my experience as well... > > If one desires empty squares why not use [\mbox{}]? In LaTeX terms I > think [\mbox{}] is equivalent or almost equivalent o [], and to Org > they are different. . . > I think you misunderstood here: John Rakestraw seems to get empty sets of square brackets in the latex file that he produces from his org file. What Robert pointed out (and what I concurred with) was that when he runs John's org file through the exporter, he does not get these empty square brackets. The question is why John on one hand and Robert (and I) on the other hand see such different behavior from the exporter. > Otherwise add a (regexp) filter to > org-export-filter-final-output-functions inserting the missing []s. > > Here's an example of a filer I use. Notice that ox keeps everything > in a string and in property lists (← just an indexed dictionary). > > #+BEGIN_SRC emacs-lisp > (defun org-latex-filter-nobreaks-double-space (text backend info) > "Tries to export \"S1. S2\" as \"S1.~S2\", >while letting \"S1. S2\" be exported without tilde" > (when (org-export-derived-backend-p backend 'latex) > (replace-regexp-in-string "\\(\\. \\)\\{1\\}\\([^ ]\\)" ".~\\2" text))) > > (add-to-list 'org-export-filter-final-output-functions > 'org-latex-filter-nobreaks-double-space) > #+END_SRC > > (This may not be a great example as one probably should implement it > at org-export-before-processing-hook and insert NO-BREAK SPACEs and > tell LaTeX how to handle these). > >> Rasmus's derived backend idea might work perhaps - I for one wouldn't >> know how to implement it at this point. But trying to edit artifacts out >> after the backend is more or less finished seems to me to be a fruitless >> approach. > > I'm not claiming it's easy (Lisp can be pretty daunting, yes?), but > it's definitely doable. > The "fruitless" label was *not* meant for your derived-backend idea: au contraire. John is trying to write filters to edit out all the artifacts that he is getting. That's what I thought was the fruitless approach. The derived backend approach seems to me to be the *only* (or at least the best) one for mapping org files to the exam class. I'm sure it is doable: knowing *how* to do it is another matter though - and it's not so much the Lisp, it's figuring out how everything has to go together, given the framework (and all the supporting infrastructure) that Nicolas has provided. I can deal with the Lisp but I just don't know enough about the new exporter framework to even do a trivial backend at this point. > 1. You start by thinking about how you want your layout to be. This > is particularly the case if you don't want to (mis)use the *s for > everything. For instance the Org file Robert posted had a lot of > repeated things that might as well be handeled by the computer. > 2. Then you write functions that translate the elements that you want > to work differently into LaTeX code and put 'em into > the :translate-alist. All functions that you're not adding will > come from the LaTeX class. > > Here's some documentations (somewhat heavy) > > http://orgmode.org/manual/Adding-export-back_002dends.html > http://orgmode.org/worg/dev/org-export-reference.html > > and an not-so-enlightening example > > http://orgmode.org/worg/exporters/filter-markup.html > > > Further: I'm working on a section for the manual on ways of adding new > backends, but alas I must spend my time on other activities at the > moment. Of course, the present discussion of implementing an exam > class is a much more interesting example than the cookbook I'm working > on at the moment :) > More tutorials is exactly what's needed, so thanks for the pointers - and any future tutorials you provide as well :-) > –Rasmus -- Nick
Re: [O] Help with new exporter
Nick. Robert, Disclaimer: I didn't follow this thread closely. . . Nick Dokos writes: >> (sorry, this should've gone to the list the first time) >> >> Hi John, >> >> sorry, I can't help you with the filters. >> >> On the other hand, I don't see any reason why you gt whose square brackets. >> >> I tried different versions of org-mode, and never got *empty* square >> brackets. > > That was my experience as well... If one desires empty squares why not use [\mbox{}]? In LaTeX terms I think [\mbox{}] is equivalent or almost equivalent o [], and to Org they are different. . . Otherwise add a (regexp) filter to org-export-filter-final-output-functions inserting the missing []s. Here's an example of a filer I use. Notice that ox keeps everything in a string and in property lists (← just an indexed dictionary). #+BEGIN_SRC emacs-lisp (defun org-latex-filter-nobreaks-double-space (text backend info) "Tries to export \"S1. S2\" as \"S1.~S2\", while letting \"S1. S2\" be exported without tilde" (when (org-export-derived-backend-p backend 'latex) (replace-regexp-in-string "\\(\\. \\)\\{1\\}\\([^ ]\\)" ".~\\2" text))) (add-to-list 'org-export-filter-final-output-functions 'org-latex-filter-nobreaks-double-space) #+END_SRC (This may not be a great example as one probably should implement it at org-export-before-processing-hook and insert NO-BREAK SPACEs and tell LaTeX how to handle these). > Rasmus's derived backend idea might work perhaps - I for one wouldn't > know how to implement it at this point. But trying to edit artifacts out > after the backend is more or less finished seems to me to be a fruitless > approach. I'm not claiming it's easy (Lisp can be pretty daunting, yes?), but it's definitely doable. 1. You start by thinking about how you want your layout to be. This is particularly the case if you don't want to (mis)use the *s for everything. For instance the Org file Robert posted had a lot of repeated things that might as well be handeled by the computer. 2. Then you write functions that translate the elements that you want to work differently into LaTeX code and put 'em into the :translate-alist. All functions that you're not adding will come from the LaTeX class. Here's some documentations (somewhat heavy) http://orgmode.org/manual/Adding-export-back_002dends.html http://orgmode.org/worg/dev/org-export-reference.html and an not-so-enlightening example http://orgmode.org/worg/exporters/filter-markup.html Further: I'm working on a section for the manual on ways of adding new backends, but alas I must spend my time on other activities at the moment. Of course, the present discussion of implementing an exam class is a much more interesting example than the cookbook I'm working on at the moment :) –Rasmus -- Send from my Emacs
Re: [O] Help with new exporter
Robert Klein writes: > (sorry, this should've gone to the list the first time) > > Hi John, > > sorry, I can't help you with the filters. > > On the other hand, I don't see any reason why you gt whose square brackets. > > I tried different versions of org-mode, and never got *empty* square > brackets. That was my experience as well... > > E.g. I tried with org-mode 8.0.5 release installed in ~/org-8.0.5 (I > did a "make" and "make autoloads" in this directory) and used the > exam.org file as attached and the attached exam.el for configuration. > > I started emacs with from the directory exam.org and exam.el are, using > the following command: > > emacs -Q -l exam.el exam.org > > Exporting to LaTeX file results in the attached exam.tex. > > I tried emacs version 23.1 and 24.2. > > (For sure, my latex installation doesn't like the \NoKey and > \NumberOfVersions ...) > ... and here too. > > You could try, if you get can get the same results I do and then work > through your emacs configuration. > > I've got no other idea at the moment. > I may be too pessimistic but it seems to me that the exam class just does not map to the latex export model cleanly (to be honest, the fact that it worked in some fashion with the old exporter boggles my mind - I would not have expected it to, which goes to show that I may be too pessimistic :-) ). Rasmus's derived backend idea might work perhaps - I for one wouldn't know how to implement it at this point. But trying to edit artifacts out after the backend is more or less finished seems to me to be a fruitless approach. Nick
Re: [O] Help with new exporter
(sorry, this should've gone to the list the first time) Hi John, sorry, I can't help you with the filters. On the other hand, I don't see any reason why you gt whose square brackets. I tried different versions of org-mode, and never got *empty* square brackets. E.g. I tried with org-mode 8.0.5 release installed in ~/org-8.0.5 (I did a "make" and "make autoloads" in this directory) and used the exam.org file as attached and the attached exam.el for configuration. I started emacs with from the directory exam.org and exam.el are, using the following command: emacs -Q -l exam.el exam.org Exporting to LaTeX file results in the attached exam.tex. I tried emacs version 23.1 and 24.2. (For sure, my latex installation doesn't like the \NoKey and \NumberOfVersions ...) You could try, if you get can get the same results I do and then work through your emacs configuration. I've got no other idea at the moment. Best regards Robert On 07/12/2013 01:05 AM, John Rakestraw wrote: > Hi, list -- > > I understand the value of working on this myself -- what better way to > learn? -- but after a few hours of reading the docs and scouring the > list, I've reached the point of seeking at least a hint for where to go. > (There's much more information higher in this thread, but I'm trying to > focus rather narrowly on the problem here to keep the email relatively > short.) > > I'm trying to export to a pdf, using Phil Hirschhorn's exam.cls. The > document class definition I have (thanks, Robert!) gets me almost to > where I need to be. However, it leaves me with square brackets at > several points in the tex file. I need to delete those brackets. > > That is, I need to change "\begin[]{questions}" to "{\begin{questions}". > > Following Charles's advice, I'm trying to define and use a filter. > However, I know little enough about LaTeX and lisp that I can't figure > out why what I have isn't working. At the risk of making it very clear I > know even less than nothing, here's what I've worked up: > > --8<---cut here---start->8--- > (defun jr-org-delete-brackets-from-tex-file > (text backend info) > (while (re-search-forward "\\[]" nil t) > (replace-match "")) > text) > >(add-to-list 'org-export-filter-final-output-functions > 'jr-org-delete-brackets-from-tex-file) > --8<---cut here---end--->8--- > > This doesn't work. > > Can someone at least give me a hint on what I need to do differently? > > Thanks very much. > -- Robert Klein - Max Planck-Institut für Polymerforschung Ackermannweg 10 55128 Mainz (setq load-path (cons "~/org-8.0.5/lisp" load-path)) (require 'org) (require 'ox) (setq org-latex-classes '(("exam" "\\documentclass[12pt]{exam} % BEGIN exam Defaults [NO-DEFAULT-PACKAGES] [PACKAGES] \\usepackage{palatino} \\extrawidth{.5in} \\extraheadheight{-.75in} \\extrafootheight[-3in]{-.75in} \\pagestyle{headandfoot} \\NoKey \\NumberOfVersions{1} \\renewcommand\\thequestion{\\Roman{question}} \\renewcommand\\thepartno{\\arabic{partno}} \\renewcommand\\partlabel{\\thepartno.} % END exam Defaults " ("\\begin{questions} %% %s" "\\end{questions}") ("\\question %% %s" . "\\question* %% %s") ("\\begin{parts} %% %s" "\\end{parts}") ("\\part %% %s" . "\\part* %% %s" exam.org Description: Lotus Organizer \documentclass[10pt]{exam} % BEGIN exam Defaults \usepackage{palatino} \extrawidth{.5in} \extraheadheight{-.75in} \extrafootheight[-3in]{-.75in} \pagestyle{headandfoot} \NoKey \NumberOfVersions{1} \renewcommand\thequestion{\Roman{question}} \renewcommand\thepartno{\arabic{partno}} \renewcommand\partlabel{\thepartno.} % END exam Defaults \extrawidth{.5in} \extraheadheight[.3in]{-.75in} \extrafootheight{-.25in} \raggedright \author{Robert Klein} \date{\today} \title{} \begin{document} \renewcommand\thequestion{\Roman{question}} \renewcommand\thepartno{\arabic{partno}} \renewcommand\partlabel{\thepartno.} \firstpageheader{Name:\enspace\makebox[3in]{\hrulefill}\\Exam 1\\}{}{Theo 001 -- Rakestraw\\February 14, 2013\\} \begin{coverpages} this is just some text \end{coverpages} \begin{questions} % Meaningless header \label{sec-1} \question % \label{sec-1-1} \textbf{Identification of Terms}. Identify/define and give the significance of \textbf{six} of the following. If you identify/define more than six without indicating clearly which six you want me to grade, I will grade your first six answers (18 points). \begin{parts} % Terms \label{sec-1-1-1} \part % \label{sec-1-1-1-1} term 1 \vspace*{\fill} \part % \label{sec-1-1-1-2} term 2 \vspace*{\fill} \part % \label{sec-1-1-1-3} term 3 \vspace*{\fill} \part % \label{sec-1-1-1-4} term 4 \vspace*{\fill} \part % \label{sec-1-1-1-5} term 5 \vspace*{\fill} \part % \label{sec-1-1-1-6} term 6 \vspace*{\fill} \part % \label{sec-1-1-1-7} term 7 \vspace*{\fill} \part % \label{sec-1-1-1-8}
Re: [O] Help with new exporter
Hi John, I think your search string might better be "\[\]", or something along those lines (perhaps it needs to be "\\[\\]"). hth, Tom John Rakestraw writes: > Hi, list -- > > I understand the value of working on this myself -- what better way to > learn? -- but after a few hours of reading the docs and scouring the > list, I've reached the point of seeking at least a hint for where to go. > (There's much more information higher in this thread, but I'm trying to > focus rather narrowly on the problem here to keep the email relatively > short.) > > I'm trying to export to a pdf, using Phil Hirschhorn's exam.cls. The > document class definition I have (thanks, Robert!) gets me almost to > where I need to be. However, it leaves me with square brackets at > several points in the tex file. I need to delete those brackets. > > That is, I need to change "\begin[]{questions}" to > "{\begin{questions}". > > Following Charles's advice, I'm trying to define and use a filter. > However, I know little enough about LaTeX and lisp that I can't figure > out why what I have isn't working. At the risk of making it very clear I > know even less than nothing, here's what I've worked up: > >(defun jr-org-delete-brackets-from-tex-file > (text backend info) > (while (re-search-forward "\\[]" nil t) > (replace-match "")) > text) > > (add-to-list 'org-export-filter-final-output-functions > 'jr-org-delete-brackets-from-tex-file) > > This doesn't work. > > Can someone at least give me a hint on what I need to do differently? > > Thanks very much. -- Thomas S. Dye http://www.tsdye.com
Re: [O] Help with new exporter
Hi, list -- I understand the value of working on this myself -- what better way to learn? -- but after a few hours of reading the docs and scouring the list, I've reached the point of seeking at least a hint for where to go. (There's much more information higher in this thread, but I'm trying to focus rather narrowly on the problem here to keep the email relatively short.) I'm trying to export to a pdf, using Phil Hirschhorn's exam.cls. The document class definition I have (thanks, Robert!) gets me almost to where I need to be. However, it leaves me with square brackets at several points in the tex file. I need to delete those brackets. That is, I need to change "\begin[]{questions}" to "{\begin{questions}". Following Charles's advice, I'm trying to define and use a filter. However, I know little enough about LaTeX and lisp that I can't figure out why what I have isn't working. At the risk of making it very clear I know even less than nothing, here's what I've worked up: --8<---cut here---start->8--- (defun jr-org-delete-brackets-from-tex-file (text backend info) (while (re-search-forward "\\[]" nil t) (replace-match "")) text) (add-to-list 'org-export-filter-final-output-functions 'jr-org-delete-brackets-from-tex-file) --8<---cut here---end--->8--- This doesn't work. Can someone at least give me a hint on what I need to do differently? Thanks very much. -- John Rakestraw
Re: [O] Help with new exporter
Hi, Robert -- This gets me still closer. Using the revised class definition, I get exactly what I need except that I'm still left with square brackets in tex file. That is, I want this: \begin{questions} or \begin{parts} but instead I get this: \begin[]{questions} or \begin[]{parts} (Those two places are now the only places where the empty square brackets show up, and I don't have any of the empty curly brackets.) If I remove those square brackets and run latex on the changed file, then I get what I want in the pdf. I was using a fairly recent version (8.0.3) from git; I've now upgraded to 8.0.5 from git and get the same result. I see Charles's suggestion to define a filter to take out the brackets (thanks for that) -- I'm afraid I'm on the edge of my knowledge so I'll need more time to sort that one out. Thanks for your help. -- John Rakestraw
Re: [O] Help with new exporter
Hi John, I don't think I had those square brackets, yesterday, but see at the end about them. Anyway, I thought of something which gives me a result I'd say is Ok for me: 1. Change the .org files as follows - add a space to empty headings (as written yesterday) - add "texht:nil" to the #+OPTIONS: line (without the quotes) 2. Use the following class definition: #+begin_src emacs-lisp (setq org-latex-classes '(("exam" "\\documentclass[12pt]{exam} % BEGIN exam Defaults [NO-DEFAULT-PACKAGES] [PACKAGES] \\usepackage{palatino} \\extrawidth{.5in} \\extraheadheight{-.75in} \\extrafootheight[-3in]{-.75in} \\pagestyle{headandfoot} \\NoKey \\NumberOfVersions{1} \\renewcommand\\thequestion{\\Roman{question}} \\renewcommand\\thepartno{\\arabic{partno}} \\renewcommand\\partlabel{\\thepartno.} % END exam Defaults " ("\\begin{questions} %% %s" "\\end{questions}") ("\\question %% %s" . "\\question* %% %s") ("\\begin{parts} %% %s" "\\end{parts}") ("\\part %% %s" . "\\part* %% %s" #+end_src As you can see, I still have the %s (now without the curly braces) but as a LaTeX comment after %... About the labels, well, I'd just leave them; as long as you don't reference them they shouldn't disturb anything. If you still get those square brackets; I use org-mode from the git repository, as of yesterday or the day before. Are you using org-mode 8.0.2 or earlier? I think this gets fixed by Aaron Ecay's patch from May 02/03. If you don't want to use the git version, download version 8.0.5 from orgmode.org. Does this work for you? Best regards Robert On 07/10/2013 10:46 PM, John Rakestraw wrote: > Hi, Robert -- > > Thanks very much for your work on this. I'm now *much* closer than I > was. However, I'm not there yet. > > Here's a snippet of the tex file that I need: > > --8<---cut here---start->8--- > \begin{questions} > \question > A paragraph here describes this section and tells students how many > terms to > identify. > \begin{parts} > \part > term 1 > \vspace*{\fill} > \part > term 2 > \vspace*{\fill} > \part > term 3 > \vspace*{\fill} > \part > term 4 > \vspace*{\fill} > \part > term 5 > \vspace*{\fill} > \part > term 6 > \vspace*{\fill} > \part > term 7 > \vspace*{\fill} > \part > term 7 > \vspace*{\fill} > \part > term 8 > \end{parts} > \end{questions} > --8<---cut here---end--->8--- > > However, if I use the org-latex-class definition that you suggested, > this is what I get: > > --8<---cut here---start->8--- > \begin[]{questions}{} > \label{sec-1} > \question[]{} > \label{sec-1-1} > A paragraph here describes this section and tells students how many > terms to > identify. > \begin[]{parts}{} > \label{sec-1-1-1} > \part[]{} > \label{sec-1-1-1-1} > term 1 > \vspace*{\fill} > > \part[]{} > \label{sec-1-1-1-2} > term 2 > \vspace*{\fill} > > \part[]{} > \label{sec-1-1-1-3} > term 3 > \vspace*{\fill} > > \part[]{} > \label{sec-1-1-1-4} > term 4 > \vspace*{\fill} > > \part[]{} > \label{sec-1-1-1-5} > term 5 > \vspace*{\fill} > > \part[]{} > \label{sec-1-1-1-6} > term 6 > \vspace*{\fill} > > \part[]{} > \label{sec-1-1-1-7} > term 7 > \vspace*{\fill} > > \part[]{} > \label{sec-1-1-1-8} > term 8 > \vspace*{\fill} > > \part[]{} > \label{sec-1-1-1-9} > term 9 > \newpage > \fillwithdottedlines{\fill} > \newpage > \end{parts} > > --8<---cut here---end--->8--- > > > The additional lines in the tex file add numbers and oddly formatted > text to the pdf. The numbering scheme is also off -- these lines in the > class definition: > > \renewcommand\thequestion{\Roman{question}} > \renewcommand\thepartno{\arabic{partno}} > \renewcommand\partlabel{\thepartno.} > > are supposed to have to have the question-level headings numbered with > Roman numerals and the part-level headings numbered with Arabic numbers. > But for some reason that numbering scheme isn't imposed. > > Perhaps I need either just to write in latex or to work with what Rasmus > is suggesting; I've not had time yet to digest his suggestions. I'm > floating on the edge of my knowledge here > > Thanks again. > > --John > -- Robert Klein - Max Planck-Institut für Polymerforschung Ackermannweg 10 55128 Mainz
Re: [O] Help with new exporter
John Rakestraw johnrakestraw.com> writes: > > Apologies for responding to myself, but I realized after writing the > message below that if I use sed to remove the lines with the word > "label" and all of the empty brackets (i.e., =[]= and ={}= ) in the tex > file, then I'm very, very close to what I need. I assume I could write a > function and then call it in the publishing routine? > > --John One way to implement this is to define one or more filters. :filter-final-output might do it for the unwanted brackets. Maybe :filter-special-block is what you want for the unwanted label lines, which I guess are created in special block handling See http://orgmode.org/worg/exporters/filter-markup.html for some tips as well as the section headed ;;; The Filter System in ox.el. [rest deleted]
Re: [O] Help with new exporter
Apologies for responding to myself, but I realized after writing the message below that if I use sed to remove the lines with the word "label" and all of the empty brackets (i.e., =[]= and ={}= ) in the tex file, then I'm very, very close to what I need. I assume I could write a function and then call it in the publishing routine? --John On 10.07.2013 16:46, John Rakestraw wrote: Hi, Robert -- Thanks very much for your work on this. I'm now *much* closer than I was. However, I'm not there yet. Here's a snippet of the tex file that I need: --8<---cut here---start->8--- \begin{questions} \question A paragraph here describes this section and tells students how many terms to identify. \begin{parts} \part term 1 \vspace*{\fill} \part term 2 \vspace*{\fill} \part term 3 \vspace*{\fill} \part term 4 \vspace*{\fill} \part term 5 \vspace*{\fill} \part term 6 \vspace*{\fill} \part term 7 \vspace*{\fill} \part term 7 \vspace*{\fill} \part term 8 \end{parts} \end{questions} --8<---cut here---end--->8--- However, if I use the org-latex-class definition that you suggested, this is what I get: --8<---cut here---start->8--- \begin[]{questions}{} \label{sec-1} \question[]{} \label{sec-1-1} A paragraph here describes this section and tells students how many terms to identify. \begin[]{parts}{} \label{sec-1-1-1} \part[]{} \label{sec-1-1-1-1} term 1 \vspace*{\fill} \part[]{} \label{sec-1-1-1-2} term 2 \vspace*{\fill} \part[]{} \label{sec-1-1-1-3} term 3 \vspace*{\fill} \part[]{} \label{sec-1-1-1-4} term 4 \vspace*{\fill} \part[]{} \label{sec-1-1-1-5} term 5 \vspace*{\fill} \part[]{} \label{sec-1-1-1-6} term 6 \vspace*{\fill} \part[]{} \label{sec-1-1-1-7} term 7 \vspace*{\fill} \part[]{} \label{sec-1-1-1-8} term 8 \vspace*{\fill} \part[]{} \label{sec-1-1-1-9} term 9 \newpage \fillwithdottedlines{\fill} \newpage \end{parts} --8<---cut here---end--->8--- The additional lines in the tex file add numbers and oddly formatted text to the pdf. The numbering scheme is also off -- these lines in the class definition: \renewcommand\thequestion{\Roman{question}} \renewcommand\thepartno{\arabic{partno}} \renewcommand\partlabel{\thepartno.} are supposed to have to have the question-level headings numbered with Roman numerals and the part-level headings numbered with Arabic numbers. But for some reason that numbering scheme isn't imposed. Perhaps I need either just to write in latex or to work with what Rasmus is suggesting; I've not had time yet to digest his suggestions. I'm floating on the edge of my knowledge here Thanks again. --John -- John Rakestraw
Re: [O] Help with new exporter
Hi, Robert -- Thanks very much for your work on this. I'm now *much* closer than I was. However, I'm not there yet. Here's a snippet of the tex file that I need: --8<---cut here---start->8--- \begin{questions} \question A paragraph here describes this section and tells students how many terms to identify. \begin{parts} \part term 1 \vspace*{\fill} \part term 2 \vspace*{\fill} \part term 3 \vspace*{\fill} \part term 4 \vspace*{\fill} \part term 5 \vspace*{\fill} \part term 6 \vspace*{\fill} \part term 7 \vspace*{\fill} \part term 7 \vspace*{\fill} \part term 8 \end{parts} \end{questions} --8<---cut here---end--->8--- However, if I use the org-latex-class definition that you suggested, this is what I get: --8<---cut here---start->8--- \begin[]{questions}{} \label{sec-1} \question[]{} \label{sec-1-1} A paragraph here describes this section and tells students how many terms to identify. \begin[]{parts}{} \label{sec-1-1-1} \part[]{} \label{sec-1-1-1-1} term 1 \vspace*{\fill} \part[]{} \label{sec-1-1-1-2} term 2 \vspace*{\fill} \part[]{} \label{sec-1-1-1-3} term 3 \vspace*{\fill} \part[]{} \label{sec-1-1-1-4} term 4 \vspace*{\fill} \part[]{} \label{sec-1-1-1-5} term 5 \vspace*{\fill} \part[]{} \label{sec-1-1-1-6} term 6 \vspace*{\fill} \part[]{} \label{sec-1-1-1-7} term 7 \vspace*{\fill} \part[]{} \label{sec-1-1-1-8} term 8 \vspace*{\fill} \part[]{} \label{sec-1-1-1-9} term 9 \newpage \fillwithdottedlines{\fill} \newpage \end{parts} --8<---cut here---end--->8--- The additional lines in the tex file add numbers and oddly formatted text to the pdf. The numbering scheme is also off -- these lines in the class definition: \renewcommand\thequestion{\Roman{question}} \renewcommand\thepartno{\arabic{partno}} \renewcommand\partlabel{\thepartno.} are supposed to have to have the question-level headings numbered with Roman numerals and the part-level headings numbered with Arabic numbers. But for some reason that numbering scheme isn't imposed. Perhaps I need either just to write in latex or to work with what Rasmus is suggesting; I've not had time yet to digest his suggestions. I'm floating on the edge of my knowledge here Thanks again. --John -- John Rakestraw
Re: [O] Help with new exporter
Hi John, Sorry, I meant to email this to the list . . . > My problem is that I can't get the exporter to produce chunks like > this: > > \begin{questions} > \question > A paragraph describing how the students should answer the following > questions. > \begin{parts} > \part > A multi-line question > \part > Another multi-line question > \end{parts} > \end{questions} 1. You could let * SOMETHING become a section. See "The sectioning structure" (it seems you already tried, though). This would allow you to get around your problem using usual org latex classes. Cf. Robert's solution. 2. Presumably, the best way way to do this is to make a derived back-end, see http://orgmode.org/worg/dev/org-export-reference.html What you first need to think about is how you want your Org files to look. E.g.: * question 1 A paragraph describing how the students should answer the following questions. 1. A multi-line question 2. Another multi-line question? Then you have to define the appropriate functions for your backend. It won't be many since it inherits everything from the LaTeX class. Of ocurse whether this is necessary depends on how much you want to 'specialize' the org layout compared to the 'usual' LaTeX org-layout. –Rasmus -- May the Force be with you
Re: [O] Help with new exporter
Hi John. thank you for the example org file. I made two kinds of changes, one in the org-latex-classes definition and one in the .org-file itself: I changed the class definition for org-latex-classes to #+begin_src emacs-lisp ("exam" "\\documentclass[12pt]{exam} % BEGIN exam Defaults [NO-DEFAULT-PACKAGES] [PACKAGES] \\usepackage{palatino} \\extrawidth{.5in} \\extraheadheight{-.75in} \\extrafootheight[-3in]{-.75in} \\pagestyle{headandfoot} \\NoKey \\NumberOfVersions{1} \\renewcommand\\thequestion{\\Roman{question}} \\renewcommand\\thepartno{\\arabic{partno}} \\renewcommand\\partlabel{\\thepartno.} % END exam Defaults " ("\\begin{questions}{%s}" "\\end{questions}") ("\\question{%s}" . "\\question*{%s}") ("\\begin{parts}{%s}" "\\end{parts}") ("\\part{%s}" . "\\part*{%s}")) #+end_src Note the {%s} after the each opening clause. I left the unnumbered part of questions and parts out in my version, as I didn't see a difference (no "unnumbered" \begin{questions} / \begin{parts} in the exam class?). The documentation of org-latex-classes in ox-latex.el seems to be confusing; at one place it says "A %s formatter is mandatory in each section string and will be replaced by the title of the section." an at another "The opening clause should have a %s to represent the section title.". Probably the "should have" in the second place ought to be a "must have". Anyway, in the .org file I added a space character to all empty headings, e.g. Without the space I first for a log of "\textbf{**}" in the output. After both changes the resulting document looks like something you might have wanted in the first place. I got some weird numberings throughout the document, but this may be a result of my setup. Could you please check this, and describe anything weird in your results? Best regards Robert On 07/10/2013 06:32 PM, John Rakestraw wrote: > Greetings, list -- > > I've been using Philip Hirschhorn's exam documentclass > (http://www-math.mit.edu/~psh/#ExamCls) for several years to produce my > exams. I've been writing the exams in org-mode and using the exporter to > produce the pdf. > > I've recently moved to org 8.0. (I like it!) I've successfully converted > all of my other export class definitions, but I can't figure out how to > define the exam class so that I can export my exams. I've pasted below > the class definition that worked with the previous exporter (I know it's > clumsy, but it worked) and also a sample version of what I need in the > tex file. > > (I know I could just write the tex file directly, but it's nice to have > all of the course materials included in human-readable form in the > course org file.) > > My problem is that I can't get the exporter to produce chunks like this: > > \begin{questions} > \question > A paragraph describing how the students should answer the following > questions. > \begin{parts} > \part > A multi-line question > \part > Another multi-line question > \end{parts} > \end{questions} > > Thanks for whatever advice anyone can offer. > > --John > > > Old template: > --8<---cut here---start->8--- > (setq org-export-latex-classes (cons '("exam" > ### I know that in the new exporter I need to change this variable to > "org-latex-classes" ### > "% BEGIN exam Defaults > [NO-DEFAULT-PACKAGES] > [PACKAGES] > \\documentclass[12pt]{exam} > \\usepackage{palatino} > \\extrawidth{.5in} > \\extraheadheight{-.75in} > \\extrafootheight[-3in]{-.75in} > \\pagestyle{headandfoot} > \\NoKey > \\NumberOfVersions{1} > \\renewcommand\\thequestion{\\Roman{question}} > \\renewcommand\\thepartno{\\arabic{partno}} > \\renewcommand\\partlabel{\\thepartno.} > > > % END exam Defaults > > " > ("\\begin{questions}" "\\end{questions}" > "\\begin{questions}" "\\end{questions}") > ("\\question" . "\\question*") > ("\\begin{parts}" "\\end{parts}" "\\begin{parts}" > "\\end{parts}") > ("\\part" . "\\part*")) > > org-export-latex-classes)) > > --8<---cut here---end--->8--- > > An example of what I need the exporter to produce: > > --8<---cut here---start->8--- > \documentclass[letterpaper]{exam} > \extrawidth{.5in} > \extraheadheight[.3in]{-.75in} > \extrafootheight{-.25in} > \raggedright > \renewcommand\thequestion{\Roman{question}} > \renewcommand\thepartno{\arabic{partno}} > \renewcommand\partlabel{\thepartno.} > \firstpageheader{Name: \enspace\makebox[3in]{\hrulefill}\\Exam > 1\\}{}{Introductory Class \\May 7, 2013\\} > \begin{document} > > \begin{coverpages} > text describing how the exam should be printed and prepared for > distribution. > \end{coverpages} > > > > \begin{questions} > \question > A paragraph here describes this section and tells s
Re: [O] Help with new exporter
Hi, Robert -- would you mind posting an example of the org file, too? It would be easier for me to wrap my thoughts about this.. (The gurus probably don't it...) Sure. (I should have included it earlier; I was worried that my message was already too long.) Here's one that worked with the old exporter. (Note that I had to leave many of the actual header lines blank -- or, rather, with only an empty space.) --John --8<---cut here---start->8--- #+LaTeX_CLASS: exam #+LaTeX_CLASS_OPTIONS: [10pt] #+LATEX_HEADER: \extrawidth{.5in} #+LATEX_HEADER: \extraheadheight[.3in]{-.75in} #+LATEX_HEADER: \extrafootheight{-.25in} #+LATEX_HEADER: \raggedright #+LaTeX: \renewcommand\thequestion{\Roman{question}} #+LaTeX: \renewcommand\thepartno{\arabic{partno}} #+LaTeX: \renewcommand\partlabel{\thepartno.} #+OPTIONS: toc:nil num:y timestamp:nil creator:nil H:4 #+TITLE: #+LaTeX: \firstpageheader{Name:\enspace\makebox[3in]{\hrulefill}\\Exam 1\\}{}{Theo 001 -- Rakestraw\\February 14, 2013\\} #+LaTeX: \begin{coverpages} this is just some text #+LaTeX: \end{coverpages} * Meaningless header ** *Identification of Terms*. Identify/define and give the significance of *six* of the following. If you identify/define more than six without indicating clearly which six you want me to grade, I will grade your first six answers (18 points). *** Terms term 1 #+LaTeX: \vspace*{\fill} term 2 #+LaTeX: \vspace*{\fill} term 3 #+LaTeX: \vspace*{\fill} term 4 #+LaTeX: \vspace*{\fill} term 5 #+LaTeX: \vspace*{\fill} term 6 #+LaTeX: \vspace*{\fill} term 7 #+LaTeX: \vspace*{\fill} term 8 #+LaTeX: \vspace*{\fill} term 9 #+LaTeX: \newpage #+LaTeX: \fillwithdottedlines{\fill} #+LaTeX: \newpage ** *Short Answer*. Answer *two* of the following in a paragraph. If you attempt to answer more than two without indicating clearly which two you intend me to grade I will grade your first two answers (36 points). *** Questions Question one goes on for more than one line. (I mention that because I want to be clear that I can't put a question in a heading.) #+LaTeX: \fillwithdottedlines{\fill} Question 2 goes here. #+LaTeX: \fillwithdottedlines{\fill} #+LaTeX: \newpage #+LaTeX: \fillwithdottedlines{\fill} #+LaTeX: \newpage Question 3 goes here. #+LaTeX: \fillwithdottedlines{\fill} Question 4 goes here. #+LaTeX: \fillwithdottedlines{\fill} #+LaTeX: \newpage #+LaTeX: \fillwithdottedlines{\fill} #+LaTeX: \newpage ** *Essay Question*. Answer *one* of the following as fully as you are able. If you attempt to answer more than one without indicating clearly which one you intend me to grade I will grade your first answer (40 points). *** Questions here's the first essay question. here's the second essay question. #+LaTeX: \fillwithdottedlines{\fill} #+LaTeX: \newpage #+LaTeX: \fillwithdottedlines{\fill} --8<---cut here---end--->8--- -- John Rakestraw
Re: [O] Help with new exporter
Hi John, would you mind posting an example of the org file, too? It would be easier for me to wrap my thoughts about this.. (The gurus probably don't it...) Thanks a lot Robert On 07/10/2013 06:32 PM, John Rakestraw wrote: > Greetings, list -- > > I've been using Philip Hirschhorn's exam documentclass > (http://www-math.mit.edu/~psh/#ExamCls) for several years to produce my > exams. I've been writing the exams in org-mode and using the exporter to > produce the pdf. > > I've recently moved to org 8.0. (I like it!) I've successfully converted > all of my other export class definitions, but I can't figure out how to > define the exam class so that I can export my exams. I've pasted below > the class definition that worked with the previous exporter (I know it's > clumsy, but it worked) and also a sample version of what I need in the > tex file. > > (I know I could just write the tex file directly, but it's nice to have > all of the course materials included in human-readable form in the > course org file.) > > My problem is that I can't get the exporter to produce chunks like this: > > \begin{questions} > \question > A paragraph describing how the students should answer the following > questions. > \begin{parts} > \part > A multi-line question > \part > Another multi-line question > \end{parts} > \end{questions} > > Thanks for whatever advice anyone can offer. > > --John > > > Old template: > --8<---cut here---start->8--- > (setq org-export-latex-classes (cons '("exam" > ### I know that in the new exporter I need to change this variable to > "org-latex-classes" ### > "% BEGIN exam Defaults > [NO-DEFAULT-PACKAGES] > [PACKAGES] > \\documentclass[12pt]{exam} > \\usepackage{palatino} > \\extrawidth{.5in} > \\extraheadheight{-.75in} > \\extrafootheight[-3in]{-.75in} > \\pagestyle{headandfoot} > \\NoKey > \\NumberOfVersions{1} > \\renewcommand\\thequestion{\\Roman{question}} > \\renewcommand\\thepartno{\\arabic{partno}} > \\renewcommand\\partlabel{\\thepartno.} > > > % END exam Defaults > > " > ("\\begin{questions}" "\\end{questions}" > "\\begin{questions}" "\\end{questions}") > ("\\question" . "\\question*") > ("\\begin{parts}" "\\end{parts}" "\\begin{parts}" > "\\end{parts}") > ("\\part" . "\\part*")) > > org-export-latex-classes)) > > --8<---cut here---end--->8--- > > An example of what I need the exporter to produce: > > --8<---cut here---start->8--- > \documentclass[letterpaper]{exam} > \extrawidth{.5in} > \extraheadheight[.3in]{-.75in} > \extrafootheight{-.25in} > \raggedright > \renewcommand\thequestion{\Roman{question}} > \renewcommand\thepartno{\arabic{partno}} > \renewcommand\partlabel{\thepartno.} > \firstpageheader{Name: \enspace\makebox[3in]{\hrulefill}\\Exam > 1\\}{}{Introductory Class \\May 7, 2013\\} > \begin{document} > > \begin{coverpages} > text describing how the exam should be printed and prepared for > distribution. > \end{coverpages} > > > > \begin{questions} > \question > A paragraph here describes this section and tells students how many > terms to > identify. > \begin{parts} > \part > term 1 > \vspace*{\fill} > \part > term 2 > \vspace*{\fill} > \part > term 3 > \vspace*{\fill} > \part > term 4 > \vspace*{\fill} > \part > term 5 > \vspace*{\fill} > \part > term 6 > \vspace*{\fill} > \part > term 7 > \vspace*{\fill} > \part > term 7 > \vspace*{\fill} > \part > term 8 > \end{parts} > \end{questions} > \newpage > \fillwithdottedlines{\fill} > \newpage > \begin{questions} > \question > Short Answer. A paragraph describing how I want students to respond to the > following questions. I want to leave vertical space filled with dotted > lines > between the questions, and I want two questions on each page. > \begin{parts} > \part > This is the first question. It will be several lines long, so I'm > writing enough > filler here to add at least a second line. > \fillwithdottedlines{\fill} > \part > This is the second question. It will also be several lines long, so I need > filler enough to get to the second line for this example. > \fillwithdottedlines{\fill} > > \newpage > \fillwithdottedlines{\fill} > \newpage > \part > This is the 3d question. > \fillwithdottedlines{\fill} > \end{parts} > \end{questions} > \newpage > \fillwithdottedlines{\fill} > \newpage > \begin{questions} > \question > Essay Question. This is a section of essay questions. Students will > answer only > one of these questions, so I don't need to leave space between the two > questions. > \begin{parts} > \part > The first of the essay questions goes here. It will be several lines > long, so I > want enough text in the example to provide a line break. > \part > The second essay question. It is also several lines long, so I'll add so
[O] Help with new exporter
Greetings, list -- I've been using Philip Hirschhorn's exam documentclass (http://www-math.mit.edu/~psh/#ExamCls) for several years to produce my exams. I've been writing the exams in org-mode and using the exporter to produce the pdf. I've recently moved to org 8.0. (I like it!) I've successfully converted all of my other export class definitions, but I can't figure out how to define the exam class so that I can export my exams. I've pasted below the class definition that worked with the previous exporter (I know it's clumsy, but it worked) and also a sample version of what I need in the tex file. (I know I could just write the tex file directly, but it's nice to have all of the course materials included in human-readable form in the course org file.) My problem is that I can't get the exporter to produce chunks like this: \begin{questions} \question A paragraph describing how the students should answer the following questions. \begin{parts} \part A multi-line question \part Another multi-line question \end{parts} \end{questions} Thanks for whatever advice anyone can offer. --John Old template: --8<---cut here---start->8--- (setq org-export-latex-classes (cons '("exam" ### I know that in the new exporter I need to change this variable to "org-latex-classes" ### "% BEGIN exam Defaults [NO-DEFAULT-PACKAGES] [PACKAGES] \\documentclass[12pt]{exam} \\usepackage{palatino} \\extrawidth{.5in} \\extraheadheight{-.75in} \\extrafootheight[-3in]{-.75in} \\pagestyle{headandfoot} \\NoKey \\NumberOfVersions{1} \\renewcommand\\thequestion{\\Roman{question}} \\renewcommand\\thepartno{\\arabic{partno}} \\renewcommand\\partlabel{\\thepartno.} % END exam Defaults " ("\\begin{questions}" "\\end{questions}" "\\begin{questions}" "\\end{questions}") ("\\question" . "\\question*") ("\\begin{parts}" "\\end{parts}" "\\begin{parts}" "\\end{parts}") ("\\part" . "\\part*")) org-export-latex-classes)) --8<---cut here---end--->8--- An example of what I need the exporter to produce: --8<---cut here---start->8--- \documentclass[letterpaper]{exam} \extrawidth{.5in} \extraheadheight[.3in]{-.75in} \extrafootheight{-.25in} \raggedright \renewcommand\thequestion{\Roman{question}} \renewcommand\thepartno{\arabic{partno}} \renewcommand\partlabel{\thepartno.} \firstpageheader{Name: \enspace\makebox[3in]{\hrulefill}\\Exam 1\\}{}{Introductory Class \\May 7, 2013\\} \begin{document} \begin{coverpages} text describing how the exam should be printed and prepared for distribution. \end{coverpages} \begin{questions} \question A paragraph here describes this section and tells students how many terms to identify. \begin{parts} \part term 1 \vspace*{\fill} \part term 2 \vspace*{\fill} \part term 3 \vspace*{\fill} \part term 4 \vspace*{\fill} \part term 5 \vspace*{\fill} \part term 6 \vspace*{\fill} \part term 7 \vspace*{\fill} \part term 7 \vspace*{\fill} \part term 8 \end{parts} \end{questions} \newpage \fillwithdottedlines{\fill} \newpage \begin{questions} \question Short Answer. A paragraph describing how I want students to respond to the following questions. I want to leave vertical space filled with dotted lines between the questions, and I want two questions on each page. \begin{parts} \part This is the first question. It will be several lines long, so I'm writing enough filler here to add at least a second line. \fillwithdottedlines{\fill} \part This is the second question. It will also be several lines long, so I need filler enough to get to the second line for this example. \fillwithdottedlines{\fill} \newpage \fillwithdottedlines{\fill} \newpage \part This is the 3d question. \fillwithdottedlines{\fill} \end{parts} \end{questions} \newpage \fillwithdottedlines{\fill} \newpage \begin{questions} \question Essay Question. This is a section of essay questions. Students will answer only one of these questions, so I don't need to leave space between the two questions. \begin{parts} \part The first of the essay questions goes here. It will be several lines long, so I want enough text in the example to provide a line break. \part The second essay question. It is also several lines long, so I'll add some rambling text here for the second line. \end{parts} \end{questions} \fillwithdottedlines{\fill} \newpage \fillwithdottedlines{\fill} \end{document} --8<---cut here---end--->8--- -- John Rakestraw