Re: [O] Adding #+LATEX: \newpage before section header using org-export-before-parsing-hook

2017-02-11 Thread Joon Ro
I spoke too early - if I have two headings with :newpage: tag in a row, my 
current code below skips the second heading.

It seems (setq org-map-continue-from (outline-next-heading)) in my code is the 
problem .. any help will be appreciated!



(defun org/parse-headings-newpage (backend)
  ; add \newpage to headings with :newpage: tag
  (if (member backend '(latex))
  (org-map-entries
   (lambda ()
 (insert-string "#+LATEX: \\newpage\n")
 (if (outline-next-heading)
   (setq org-map-continue-from (outline-next-heading)))
 )
   "+newpage"))
)

(add-hook 'org-export-before-parsing-hook 'org/parse-headings-newpage)




From: Emacs-orgmode <emacs-orgmode-bounces+joon.ro=outlook@gnu.org> on 
behalf of Joon Ro <joon...@outlook.com>
Sent: Wednesday, February 8, 2017 8:58:40 PM
To: Nick Dokos; emacs-orgmode@gnu.org
Subject: Re: [O] Adding #+LATEX: \newpage before section header using 
org-export-before-parsing-hook


> So you'll have to manipulate org-map-continue-from appropriately.

Thanks a lot! Adding (setq org-map-continue-from (outline-next-heading)) after 
insert-string seemed to solve the problem.
(I added "newpage" to org-tags-exclude-from-inheritance, so the newpage does 
not get applied to subheadings)

(defun org/parse-headings-latex-newpage (backend)
  ; add \newpage to headings with :newpage: tag
  (if (member backend '(latex))
  (org-map-entries
   (lambda ()
 (progn
   (insert-string "#+LATEX: \\newpage\n")
   (setq org-map-continue-from (outline-next-heading))
   ))
   "+newpage"))
)

(add-hook 'org-export-before-parsing-hook 'org/parse-headings-latex-newpage)
(add-to-list 'org-tags-exclude-from-inheritance '"newpage")

Best,
Joon


Re: [O] Adding #+LATEX: \newpage before section header using org-export-before-parsing-hook

2017-02-08 Thread Joon Ro
> So you'll have to manipulate org-map-continue-from appropriately.

Thanks a lot! Adding (setq org-map-continue-from (outline-next-heading)) after 
insert-string seemed to solve the problem.
(I added "newpage" to org-tags-exclude-from-inheritance, so the newpage does 
not get applied to subheadings)

(defun org/parse-headings-latex-newpage (backend)
  ; add \newpage to headings with :newpage: tag
  (if (member backend '(latex))
  (org-map-entries
   (lambda ()
 (progn
   (insert-string "#+LATEX: \\newpage\n")
   (setq org-map-continue-from (outline-next-heading))
   ))
   "+newpage"))
)

(add-hook 'org-export-before-parsing-hook 'org/parse-headings-latex-newpage)
(add-to-list 'org-tags-exclude-from-inheritance '"newpage")

Best,
Joon


Re: [O] Adding #+LATEX: \newpage before section header using org-export-before-parsing-hook

2017-02-08 Thread Eric Abrahamsen
Nick Dokos  writes:

> Joon Ro  writes:
>
>> So far I have done:
>>
>> (defun org/parse-headings (backend)
>>   (if (member backend '(latex))
>>   (org-map-entries
>>(lambda ()
>>  (progn
>>(insert-string "#+LATEX: \\newpage")
>>))
>>"+newpage")
>> )
>> )
>>
>> (add-hook 'org-export-before-parsing-hook 'org/parse-headings)
>>
>> This puts #+LATEX: \\newpage before the subheading, but the problem is if I 
>> try to do (insert-string "#+LATEX: \\newpage"), exporting gets stuck with 
>> the message "org-babel-exp process txt
>> at position 280541...". I suspect inserting a string messes up the position. 
>> How would I insert string with the newline character before a heading?
>>
> See the doc for org-map-entries - it says:
>
> ,
> | The call to FUNC will be wrapped into a save-excursion form, so FUNC
> | does not need to preserve point.  After evaluation, the cursor will be
> | moved to the end of the line (presumably of the headline of the
> | processed entry) and search continues from there.  Under some
> | circumstances, this may not produce the wanted results.  For example,
> | if you have removed (e.g. archived) the current (sub)tree it could
> | mean that the next entry will be skipped entirely.  In such cases, you
> | can specify the position from where search should continue by making
> | FUNC set the variable ‘org-map-continue-from’ to the desired buffer
> | position.
> `
>
> So you'll have to manipulate org-map-continue-from appropriately.

I would think it would be easier to add at export time using
`org-export-filter-headline-functions'.

Eric




Re: [O] Adding #+LATEX: \newpage before section header using org-export-before-parsing-hook

2017-02-08 Thread Nick Dokos
Joon Ro  writes:

> So far I have done:
>
> (defun org/parse-headings (backend)
>   (if (member backend '(latex))
>   (org-map-entries
>(lambda ()
>  (progn
>(insert-string "#+LATEX: \\newpage")
>))
>"+newpage")
> )
> )
>
> (add-hook 'org-export-before-parsing-hook 'org/parse-headings)
>
> This puts #+LATEX: \\newpage before the subheading, but the problem is if I 
> try to do (insert-string "#+LATEX: \\newpage"), exporting gets stuck with the 
> message "org-babel-exp process txt
> at position 280541...". I suspect inserting a string messes up the position. 
> How would I insert string with the newline character before a heading?
>
See the doc for org-map-entries - it says:

,
| The call to FUNC will be wrapped into a save-excursion form, so FUNC
| does not need to preserve point.  After evaluation, the cursor will be
| moved to the end of the line (presumably of the headline of the
| processed entry) and search continues from there.  Under some
| circumstances, this may not produce the wanted results.  For example,
| if you have removed (e.g. archived) the current (sub)tree it could
| mean that the next entry will be skipped entirely.  In such cases, you
| can specify the position from where search should continue by making
| FUNC set the variable ‘org-map-continue-from’ to the desired buffer
| position.
`

So you'll have to manipulate org-map-continue-from appropriately.

-- 
Nick




Re: [O] Adding #+LATEX: \newpage before section header using org-export-before-parsing-hook

2017-02-08 Thread Joon Ro
So far I have done:


(defun org/parse-headings (backend)
  (if (member backend '(latex))
  (org-map-entries
   (lambda ()
 (progn
   (insert-string "#+LATEX: \\newpage")
   ))
   "+newpage")
)
)

(add-hook 'org-export-before-parsing-hook 'org/parse-headings)

This puts #+LATEX: \\newpage before the subheading, but the problem is if I try 
to do (insert-string "#+LATEX: \\newpage"), exporting gets stuck with the 
message "org-babel-exp process txt at position 280541...". I suspect inserting 
a string messes up the position. How would I insert string with the newline 
character before a heading?

Best,
Joon




From: Thomas S. Dye <t...@tsdye.com>
Sent: Wednesday, February 8, 2017 2:48:47 PM
To: Joon Ro
Cc: emacs-orgmode@gnu.org
Subject: Re: [O] Adding #+LATEX: \newpage before section header using 
org-export-before-parsing-hook

Aloha Joon,

Joon Ro writes:

> Hi,
>
>
> In latex export, sometimes I want to make sure a section starts in a new page.
>
> It seems I should be able to add a hook to org-export-before-parsing-hook, so 
> if it sees a section with :newpage: tag (for example), it adds #+LATEX: 
> \newpage before the section header so I would get
>
>
> \newpage
>
> \section{Section Name}
>
> in the exported file.
>
> I have a couple of hooks already so in general I'm using the following code:
>
>   (org-map-entries
>(lambda ()
>  (progn
>
>))
>"+newpage")
>
> but I'm not sure how to add #+LATEX: \newpage before the section header - .
>
> Best Regards,
> Joon

I use this:

 Ignore headline and/or start newpage on export

#+name: ignoreheading-and-or-newpage-on-export
#+BEGIN_SRC emacs-lisp :results silent
  (defun tsd-ignore-headline-and-or-newpage (contents backend info)
"Ignore headlines with tag `ignoreheading' and/or start
  headline on LaTeX new page with tag `newpage'."
(cond ((and (org-export-derived-backend-p backend 'latex 'beamer)
(string-match "\\`.*newpage.*\n" (downcase contents))
(string-match "\\`.*ignoreheading.*\n" (downcase contents)))
   (replace-match "newpage" nil nil contents))
  ((and (org-export-derived-backend-p backend 'latex 'html 'ascii 
'beamer)
(string-match "\\`.*ignoreheading.*\n" (downcase contents)))
   (replace-match "" nil nil contents))
  ((and (org-export-derived-backend-p backend 'latex)
  (string-match "\\(\\`.*\\)newpage\\(.*\n\\)" (downcase 
contents)))
   (replace-match "newpage\\1\\2"  nil nil contents
  ;; add function to filter list
  ;; (add-to-list 'org-export-filter-headline-functions
  ;;  'tsd-ignore-headline-and-or-newpage)
#+END_SRC

hth,
Tom


--
Thomas S. Dye
http://www.tsdye.com


Re: [O] Adding #+LATEX: \newpage before section header using org-export-before-parsing-hook

2017-02-08 Thread Thomas S. Dye
Aloha Joon,

Joon Ro writes:

> Hi,
>
>
> In latex export, sometimes I want to make sure a section starts in a new page.
>
> It seems I should be able to add a hook to org-export-before-parsing-hook, so 
> if it sees a section with :newpage: tag (for example), it adds #+LATEX: 
> \newpage before the section header so I would get
>
>
> \newpage
>
> \section{Section Name}
>
> in the exported file.
>
> I have a couple of hooks already so in general I'm using the following code:
>
>   (org-map-entries
>(lambda ()
>  (progn
>
>))
>"+newpage")
>
> but I'm not sure how to add #+LATEX: \newpage before the section header - .
>
> Best Regards,
> Joon

I use this:

 Ignore headline and/or start newpage on export

#+name: ignoreheading-and-or-newpage-on-export
#+BEGIN_SRC emacs-lisp :results silent
  (defun tsd-ignore-headline-and-or-newpage (contents backend info)
"Ignore headlines with tag `ignoreheading' and/or start
  headline on LaTeX new page with tag `newpage'."
(cond ((and (org-export-derived-backend-p backend 'latex 'beamer)
(string-match "\\`.*newpage.*\n" (downcase contents))
(string-match "\\`.*ignoreheading.*\n" (downcase contents)))
   (replace-match "newpage" nil nil contents))
  ((and (org-export-derived-backend-p backend 'latex 'html 'ascii 
'beamer)
(string-match "\\`.*ignoreheading.*\n" (downcase contents)))
   (replace-match "" nil nil contents))
  ((and (org-export-derived-backend-p backend 'latex)
  (string-match "\\(\\`.*\\)newpage\\(.*\n\\)" (downcase 
contents)))
   (replace-match "newpage\\1\\2"  nil nil contents
  ;; add function to filter list
  ;; (add-to-list 'org-export-filter-headline-functions
  ;;  'tsd-ignore-headline-and-or-newpage)
#+END_SRC

hth,
Tom


--
Thomas S. Dye
http://www.tsdye.com



Re: [O] Adding #+LATEX: \newpage before section header using org-export-before-parsing-hook

2017-02-08 Thread Joon Ro
Hi,


(I'm sorry for a duplicated email - it was sent my a mistake)


In latex export, sometimes I want to make sure a section starts in a new page.

It seems I should be able to add a hook to org-export-before-parsing-hook, so 
if it sees a section with :newpage: tag (for example), it adds #+LATEX: 
\newpage before the section header so I would get


\newpage

\section{Section Name}

in the exported file.

I have a couple of hooks already so in general I'm using the following code:

  (org-map-entries
   (lambda ()
 (progn

   ))
   "+newpage")

but I'm not sure how to add #+LATEX: \newpage before the section header - any 
help would be greatly appreciated.

Best,
Joon




From: Joon Ro 
Sent: Wednesday, February 8, 2017 1:52:42 PM
To: emacs-orgmode@gnu.org
Subject: Adding #+LATEX: \newpage before section header using 
org-export-before-parsing-hook


Hi,


In latex export, sometimes I want to make sure a section starts in a new page.

It seems I should be able to add a hook to org-export-before-parsing-hook, so 
if it sees a section with :newpage: tag (for example), it adds #+LATEX: 
\newpage before the section header so I would get


\newpage

\section{Section Name}

in the exported file.

I have a couple of hooks already so in general I'm using the following code:

  (org-map-entries
   (lambda ()
 (progn

   ))
   "+newpage")

but I'm not sure how to add #+LATEX: \newpage before the section header - .

Best Regards,
Joon