emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Property inheritance in beamer export [7.4]
@ 2011-11-11  4:34 Chris Kauffman
  2011-11-11 16:58 ` Carsten Dominik
  0 siblings, 1 reply; 4+ messages in thread
From: Chris Kauffman @ 2011-11-11  4:34 UTC (permalink / raw)
  To: emacs-orgmode


I use org for constructing simple slide presentations quite a
bit.  I'd like to be able to set a global property which shrinks
all text to fit in the allotted space; this is great for source
examples. After some experimentation I put

#+PROPERTY: BEAMER_envargs [shrink]

in the preamble and evaluated

(set-variable (quote org-use-property-inheritance) t nil)

According to my understanding of the documentation, this should
make very outline entry inherit the property BEAMER_envargs,
regardless of whether it has a properties list itself.  After
reloading the file, internally this seems to work fine: I move to
any heading and eval the following lisp

(org-entry-get (point) "BEAMER_envargs" 1)

which gives the result "[shrink]".

However, on exporting the org file to pdf, the shrinking does not
seem to happen. The source code runs off the page. Is property
inheritance not respected during export?

Cheers,
Chris

--Example .org File---
#+TITLE:     Java Lecture
#+AUTHOR:    Christopher Kauffman
#+EMAIL:     kauffman77@gmail.com
#+LANGUAGE:  en
#+OPTIONS:   H:3 num:t toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
#+OPTIONS:   TeX:t LaTeX:nil skip:nil d:nil todo:t pri:nil tags:not-in-toc
#+INFOJS_OPT: view:nil toc:nil ltoc:t mouse:underline buttons:0 
path:http://orgmode.org/org-info.js
#+EXPORT_SELECT_TAGS: export
#+EXPORT_EXCLUDE_TAGS: noexport
#+STARTUP: beamer
#+STARTUP: showall
#+LaTeX_CLASS: beamer
#+BEAMER_FRAME_LEVEL: 1
#+PROPERTY: BEAMER_envargs [shrink]

* Example
Want this shrink
#+BEGIN_SRC java
  public class Mouse{
    private int age = 0;              // age of mouse in days
    private double weight = 1.0;      // weight of mouse in grams
    private double percentGrowthRate; // % weight increase per day
  
    // This method assigns the mouse's percent growth rate.
    public void setPercentGrowthRate(double percentGrowthRate) {
      this.percentGrowthRate = percentGrowthRate;
    }
  
    // This method simulates one day of growth for the mouse.
    public void grow() {
      this.weight += (.01 * this.percentGrowthRate * this.weight);
      this.age++;
    }
  
    // This method prints the mouses's age and weight.
    public void display() {
      System.out.printf(
        "Age = %d, weight = %.3f\n", this.age, this.weight);
    }
  } 
#+END_SRC

* Example
:PROPERTIES:
:BEAMER_envargs: [shrink]
:END:

Must add properties every time
#+BEGIN_SRC java
  public class Mouse{
    private int age = 0;              // age of mouse in days
    private double weight = 1.0;      // weight of mouse in grams
    private double percentGrowthRate; // % weight increase per day
  
    // This method assigns the mouse's percent growth rate.
    public void setPercentGrowthRate(double percentGrowthRate) {
      this.percentGrowthRate = percentGrowthRate;
    }
  
    // This method simulates one day of growth for the mouse.
    public void grow() {
      this.weight += (.01 * this.percentGrowthRate * this.weight);
      this.age++;
    }
  
    // This method prints the mouses's age and weight.
    public void display() {
      System.out.printf(
        "Age = %d, weight = %.3f\n", this.age, this.weight);
    }
  } 
#+END_SRC

--END EXAMPLE-

current state:
==============
(setq org-export-latex-after-initial-vars-hook
 '(org-beamer-after-initial-vars) org-speed-command-hook
 '(org-speed-command-default-hook org-babel-speed-command-hook)
 org-agenda-files '("~/mypubs/worklog") org-agenda-window-setup
 'other-window org-metaup-hook '(org-babel-load-in-session-maybe)
 org-after-todo-state-change-hook '(org-clock-out-if-current)
 org-export-blocks-postblock-hook '(org-exp-res/src-name-cleanup)
 org-export-latex-format-toc-function
 'org-export-latex-format-toc-default org-tab-first-hook
 '(org-hide-block-toggle-maybe org-src-native-tab-command-maybe
 org-babel-hide-result-toggle-maybe) org-src-mode-hook
 '(org-src-babel-configure-edit-buffer
 org-src-mode-configure-edit-buffer)
 org-confirm-shell-link-function 'yes-or-no-p
 org-export-first-hook '(org-beamer-initialize-open-trackers)
 org-agenda-before-write-hook '(org-agenda-add-entry-text)
 outline-mode-hook '((lambda nil
		      (local-set-key "\356" (quote
		      outline-next-visible-heading))
		      (local-set-key "\360" (quote
		      outline-previous-visible-heading))
		      (local-set-key (quote [f12]) (quote
		     ck-outline-toggle))) )
		     org-babel-pre-tangle-hook '(save-buffer)
		     org-cycle-hook
		     '(org-cycle-hide-archived-subtrees
		     org-cycle-hide-drawers
		     org-cycle-show-empty-lines
		     org-optimize-window-after-visibility-change)
		     org-export-preprocess-before-normalizing-links-hook
		     '(org-remove-file-link-modifiers)
		     org-mode-hook '((lambda
		     nil (local-set-key "\x03d" (quote
		     insert-date-heading))
		  (local-set-key "\x03\x01" (quote org-agenda))
		  (local-set-key "\232" (quote format-float-column))
		  (local-set-key "\x03e" (quote org-example))
		  (local-set-key "\x03v" (quote org-verbatim))
		  (local-set-key "\x03q" (quote org-quote)) (auto-fill-mode 1)
		  (setq org-agenda-window-setup (quote
		 other-window)))
		 #[nil "\300\301\302\303\304$\207" [org-add-hook
		 change-major-mode-hook org-show-block-all append
		 local] 5] #[nil "\300\301\302\303\304$\207"
		 [org-add-hook change-major-mode-hook
		 org-babel-show-result-all append local] 5]
		 org-babel-result-hide-spec
		 org-babel-hide-all-hashes)
		 org-ctrl-c-ctrl-c-hook '(org-babel-hash-at-point
		 org-babel-execute-safely-maybe)
		 org-confirm-elisp-link-function 'yes-or-no-p
		 org-export-interblocks '((lob
		 org-babel-exp-lob-one-liners)
			  (src org-babel-exp-inline-src-blocks))
 org-occur-hook '(org-first-headline-recenter)
 org-from-is-user-regexp "\\<kauffman\\>"
 org-export-preprocess-before-selecting-backend-code-hook
 '(org-beamer-select-beamer-code) org-export-latex-final-hook
 '(org-beamer-amend-header org-beamer-fix-toc
 org-beamer-auto-fragile-frames
 org-beamer-place-default-actions-for-lists) org-metadown-hook
 '(org-babel-pop-to-session-maybe) org-export-blocks '((src
 org-babel-exp-src-blocks nil)
		     (comment org-export-blocks-format-comment t)
		     (ditaa org-export-blocks-format-ditaa nil)
		     (dot org-export-blocks-format-dot nil))
 )

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Property inheritance in beamer export [7.4]
  2011-11-11  4:34 Property inheritance in beamer export [7.4] Chris Kauffman
@ 2011-11-11 16:58 ` Carsten Dominik
  2011-11-14 16:51   ` Chris Kauffman
  0 siblings, 1 reply; 4+ messages in thread
From: Carsten Dominik @ 2011-11-11 16:58 UTC (permalink / raw)
  To: Chris Kauffman; +Cc: emacs-orgmode

Hi Chris,

On 11.11.2011, at 05:34, Chris Kauffman wrote:

> 
> I use org for constructing simple slide presentations quite a
> bit.  I'd like to be able to set a global property which shrinks
> all text to fit in the allotted space; this is great for source
> examples.

Have you read the beamer documentation?  After reading about
shrink, do you still mean to apply this evil thing?   :)

> After some experimentation I put
> 
> #+PROPERTY: BEAMER_envargs [shrink]
> 
> in the preamble and evaluated
> 
> (set-variable (quote org-use-property-inheritance) t nil)
> 
> According to my understanding of the documentation, this should
> make very outline entry inherit the property BEAMER_envargs,
> regardless of whether it has a properties list itself.

Yes, I agree this is what the documentation looks like.  However, the
imlementation of org-beamer.el only looks at the local properties.
TO speed up processing, Org grabs all properties at each headline
and stores them - without inheritance.

> After
> reloading the file, internally this seems to work fine: I move to
> any heading and eval the following lisp
> 
> (org-entry-get (point) "BEAMER_envargs" 1)
> 
> which gives the result "[shrink]".
> 
> However, on exporting the org file to pdf, the shrinking does not
> seem to happen. The source code runs off the page. Is property
> inheritance not respected during export?

Could you please set in .emacs

(setq org-beamer-inherited-properties '("BEAMER_envargs"))

and then try the following experimental patch

-----------------------------------------------------------------------------------------
diff --git a/lisp/org-beamer.el b/lisp/org-beamer.el
index 118aa75..2208c60 100644
--- a/lisp/org-beamer.el
+++ b/lisp/org-beamer.el
@@ -482,4 +482,10 @@ The effect is that these values will be accessible during export."
		    (looking-at ".*?:B_\\(note\\(NH\\)?\\):"))
	       (push (cons "BEAMER_env" (match-string 1)) props))
+	   (when (org-bound-and-true-p org-beamer-inherited-properties)
+	     (mapc (lambda (p)
+		     (unless (assoc p props)
+		       (let ((v (org-entry-get nil p 'inherit)))
+			 (and v (push (cons p v) props)))))	      
+		   org-beamer-inherited-properties))
	   (put-text-property (point-at-bol) (point-at-eol) 'org-props props)))
       (setq org-export-latex-options-plist
-----------------------------------------------------------------------------------------

- Carsten

> 
> Cheers,
> Chris
> 
> --Example .org File---
> #+TITLE:     Java Lecture
> #+AUTHOR:    Christopher Kauffman
> #+EMAIL:     kauffman77@gmail.com
> #+LANGUAGE:  en
> #+OPTIONS:   H:3 num:t toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
> #+OPTIONS:   TeX:t LaTeX:nil skip:nil d:nil todo:t pri:nil tags:not-in-toc
> #+INFOJS_OPT: view:nil toc:nil ltoc:t mouse:underline buttons:0 
> path:http://orgmode.org/org-info.js
> #+EXPORT_SELECT_TAGS: export
> #+EXPORT_EXCLUDE_TAGS: noexport
> #+STARTUP: beamer
> #+STARTUP: showall
> #+LaTeX_CLASS: beamer
> #+BEAMER_FRAME_LEVEL: 1
> #+PROPERTY: BEAMER_envargs [shrink]
> 
> * Example
> Want this shrink
> #+BEGIN_SRC java
> public class Mouse{
>   private int age = 0;              // age of mouse in days
>   private double weight = 1.0;      // weight of mouse in grams
>   private double percentGrowthRate; // % weight increase per day
> 
>   // This method assigns the mouse's percent growth rate.
>   public void setPercentGrowthRate(double percentGrowthRate) {
>     this.percentGrowthRate = percentGrowthRate;
>   }
> 
>   // This method simulates one day of growth for the mouse.
>   public void grow() {
>     this.weight += (.01 * this.percentGrowthRate * this.weight);
>     this.age++;
>   }
> 
>   // This method prints the mouses's age and weight.
>   public void display() {
>     System.out.printf(
>       "Age = %d, weight = %.3f\n", this.age, this.weight);
>   }
> } 
> #+END_SRC
> 
> * Example
> :PROPERTIES:
> :BEAMER_envargs: [shrink]
> :END:
> 
> Must add properties every time
> #+BEGIN_SRC java
> public class Mouse{
>   private int age = 0;              // age of mouse in days
>   private double weight = 1.0;      // weight of mouse in grams
>   private double percentGrowthRate; // % weight increase per day
> 
>   // This method assigns the mouse's percent growth rate.
>   public void setPercentGrowthRate(double percentGrowthRate) {
>     this.percentGrowthRate = percentGrowthRate;
>   }
> 
>   // This method simulates one day of growth for the mouse.
>   public void grow() {
>     this.weight += (.01 * this.percentGrowthRate * this.weight);
>     this.age++;
>   }
> 
>   // This method prints the mouses's age and weight.
>   public void display() {
>     System.out.printf(
>       "Age = %d, weight = %.3f\n", this.age, this.weight);
>   }
> } 
> #+END_SRC
> 
> --END EXAMPLE-
> 
> current state:
> ==============
> (setq org-export-latex-after-initial-vars-hook
> '(org-beamer-after-initial-vars) org-speed-command-hook
> '(org-speed-command-default-hook org-babel-speed-command-hook)
> org-agenda-files '("~/mypubs/worklog") org-agenda-window-setup
> 'other-window org-metaup-hook '(org-babel-load-in-session-maybe)
> org-after-todo-state-change-hook '(org-clock-out-if-current)
> org-export-blocks-postblock-hook '(org-exp-res/src-name-cleanup)
> org-export-latex-format-toc-function
> 'org-export-latex-format-toc-default org-tab-first-hook
> '(org-hide-block-toggle-maybe org-src-native-tab-command-maybe
> org-babel-hide-result-toggle-maybe) org-src-mode-hook
> '(org-src-babel-configure-edit-buffer
> org-src-mode-configure-edit-buffer)
> org-confirm-shell-link-function 'yes-or-no-p
> org-export-first-hook '(org-beamer-initialize-open-trackers)
> org-agenda-before-write-hook '(org-agenda-add-entry-text)
> outline-mode-hook '((lambda nil
> 		      (local-set-key "\356" (quote
> 		      outline-next-visible-heading))
> 		      (local-set-key "\360" (quote
> 		      outline-previous-visible-heading))
> 		      (local-set-key (quote [f12]) (quote
> 		     ck-outline-toggle))) )
> 		     org-babel-pre-tangle-hook '(save-buffer)
> 		     org-cycle-hook
> 		     '(org-cycle-hide-archived-subtrees
> 		     org-cycle-hide-drawers
> 		     org-cycle-show-empty-lines
> 		     org-optimize-window-after-visibility-change)
> 		     org-export-preprocess-before-normalizing-links-hook
> 		     '(org-remove-file-link-modifiers)
> 		     org-mode-hook '((lambda
> 		     nil (local-set-key "\x03d" (quote
> 		     insert-date-heading))
> 		  (local-set-key "\x03\x01" (quote org-agenda))
> 		  (local-set-key "\232" (quote format-float-column))
> 		  (local-set-key "\x03e" (quote org-example))
> 		  (local-set-key "\x03v" (quote org-verbatim))
> 		  (local-set-key "\x03q" (quote org-quote)) (auto-fill-mode 1)
> 		  (setq org-agenda-window-setup (quote
> 		 other-window)))
> 		 #[nil "\300\301\302\303\304$\207" [org-add-hook
> 		 change-major-mode-hook org-show-block-all append
> 		 local] 5] #[nil "\300\301\302\303\304$\207"
> 		 [org-add-hook change-major-mode-hook
> 		 org-babel-show-result-all append local] 5]
> 		 org-babel-result-hide-spec
> 		 org-babel-hide-all-hashes)
> 		 org-ctrl-c-ctrl-c-hook '(org-babel-hash-at-point
> 		 org-babel-execute-safely-maybe)
> 		 org-confirm-elisp-link-function 'yes-or-no-p
> 		 org-export-interblocks '((lob
> 		 org-babel-exp-lob-one-liners)
> 			  (src org-babel-exp-inline-src-blocks))
> org-occur-hook '(org-first-headline-recenter)
> org-from-is-user-regexp "\\<kauffman\\>"
> org-export-preprocess-before-selecting-backend-code-hook
> '(org-beamer-select-beamer-code) org-export-latex-final-hook
> '(org-beamer-amend-header org-beamer-fix-toc
> org-beamer-auto-fragile-frames
> org-beamer-place-default-actions-for-lists) org-metadown-hook
> '(org-babel-pop-to-session-maybe) org-export-blocks '((src
> org-babel-exp-src-blocks nil)
> 		     (comment org-export-blocks-format-comment t)
> 		     (ditaa org-export-blocks-format-ditaa nil)
> 		     (dot org-export-blocks-format-dot nil))
> )
> 
> 
> 

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: Property inheritance in beamer export [7.4]
  2011-11-11 16:58 ` Carsten Dominik
@ 2011-11-14 16:51   ` Chris Kauffman
  2012-04-22 14:37     ` Carsten Dominik
  0 siblings, 1 reply; 4+ messages in thread
From: Chris Kauffman @ 2011-11-14 16:51 UTC (permalink / raw)
  To: Carsten Dominik; +Cc: emacs-orgmode

Hi Carsten

On Fri, Nov 11, 2011 at 10:58 AM, Carsten Dominik
<carsten.dominik@gmail.com> wrote:
> Hi Chris,
>
> On 11.11.2011, at 05:34, Chris Kauffman wrote:
>
>>
>> I use org for constructing simple slide presentations quite a
>> bit.  I'd like to be able to set a global property which shrinks
>> all text to fit in the allotted space; this is great for source
>> examples.
>
> Have you read the beamer documentation?  After reading about
> shrink, do you still mean to apply this evil thing?   :)
>

For some situations, it is very appropriate, such as including a full
code example in a single slide for copying/pasting into an editor.
This keeps the code with the presentation and alleviates the need to
copy from multiple slides or go to a separate site for the code.

In general, I find it peculiar that anyone would include documentation
to the effect "never use this option." The point of including
functionality is to enable use in situations the writer can't
anticipate.  If the option is truly evil, remove it from the codebase
altogether.  I have found it incredibly useful and will continue
ignoring such requests.

>> After some experimentation I put
>>
>> #+PROPERTY: BEAMER_envargs [shrink]
>>
>> in the preamble and evaluated
>>
>> (set-variable (quote org-use-property-inheritance) t nil)
>>
>> According to my understanding of the documentation, this should
>> make very outline entry inherit the property BEAMER_envargs,
>> regardless of whether it has a properties list itself.
>
> Yes, I agree this is what the documentation looks like.  However, the
> imlementation of org-beamer.el only looks at the local properties.
> TO speed up processing, Org grabs all properties at each headline
> and stores them - without inheritance.
>

A small note in the documentation to that effect might prevent
confusion from folks like me.

The patch you gave below in combination with the elisp code works.  I
will continue using this patched version.  Please consider including
such functionality in a future org-mode release as, despite the hit in
efficiency, I feel allowing globally inherited properties as a mode of
operation would eliminate a lot of tedium in copying properties over
manually.

Cheers,
Chris

>> After
>> reloading the file, internally this seems to work fine: I move to
>> any heading and eval the following lisp
>>
>> (org-entry-get (point) "BEAMER_envargs" 1)
>>
>> which gives the result "[shrink]".
>>
>> However, on exporting the org file to pdf, the shrinking does not
>> seem to happen. The source code runs off the page. Is property
>> inheritance not respected during export?
>
> Could you please set in .emacs
>
> (setq org-beamer-inherited-properties '("BEAMER_envargs"))
>
> and then try the following experimental patch
>
> -----------------------------------------------------------------------------------------
> diff --git a/lisp/org-beamer.el b/lisp/org-beamer.el
> index 118aa75..2208c60 100644
> --- a/lisp/org-beamer.el
> +++ b/lisp/org-beamer.el
> @@ -482,4 +482,10 @@ The effect is that these values will be accessible during export."
>                    (looking-at ".*?:B_\\(note\\(NH\\)?\\):"))
>               (push (cons "BEAMER_env" (match-string 1)) props))
> +          (when (org-bound-and-true-p org-beamer-inherited-properties)
> +            (mapc (lambda (p)
> +                    (unless (assoc p props)
> +                      (let ((v (org-entry-get nil p 'inherit)))
> +                        (and v (push (cons p v) props)))))
> +                  org-beamer-inherited-properties))
>           (put-text-property (point-at-bol) (point-at-eol) 'org-props props)))
>       (setq org-export-latex-options-plist
> -----------------------------------------------------------------------------------------
>
> - Carsten
>
>>
>> Cheers,
>> Chris
>>
>> --Example .org File---
>> #+TITLE:     Java Lecture
>> #+AUTHOR:    Christopher Kauffman
>> #+EMAIL:     kauffman77@gmail.com
>> #+LANGUAGE:  en
>> #+OPTIONS:   H:3 num:t toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
>> #+OPTIONS:   TeX:t LaTeX:nil skip:nil d:nil todo:t pri:nil tags:not-in-toc
>> #+INFOJS_OPT: view:nil toc:nil ltoc:t mouse:underline buttons:0
>> path:http://orgmode.org/org-info.js
>> #+EXPORT_SELECT_TAGS: export
>> #+EXPORT_EXCLUDE_TAGS: noexport
>> #+STARTUP: beamer
>> #+STARTUP: showall
>> #+LaTeX_CLASS: beamer
>> #+BEAMER_FRAME_LEVEL: 1
>> #+PROPERTY: BEAMER_envargs [shrink]
>>
>> * Example
>> Want this shrink
>> #+BEGIN_SRC java
>> public class Mouse{
>>   private int age = 0;              // age of mouse in days
>>   private double weight = 1.0;      // weight of mouse in grams
>>   private double percentGrowthRate; // % weight increase per day
>>
>>   // This method assigns the mouse's percent growth rate.
>>   public void setPercentGrowthRate(double percentGrowthRate) {
>>     this.percentGrowthRate = percentGrowthRate;
>>   }
>>
>>   // This method simulates one day of growth for the mouse.
>>   public void grow() {
>>     this.weight += (.01 * this.percentGrowthRate * this.weight);
>>     this.age++;
>>   }
>>
>>   // This method prints the mouses's age and weight.
>>   public void display() {
>>     System.out.printf(
>>       "Age = %d, weight = %.3f\n", this.age, this.weight);
>>   }
>> }
>> #+END_SRC
>>
>> * Example
>> :PROPERTIES:
>> :BEAMER_envargs: [shrink]
>> :END:
>>
>> Must add properties every time
>> #+BEGIN_SRC java
>> public class Mouse{
>>   private int age = 0;              // age of mouse in days
>>   private double weight = 1.0;      // weight of mouse in grams
>>   private double percentGrowthRate; // % weight increase per day
>>
>>   // This method assigns the mouse's percent growth rate.
>>   public void setPercentGrowthRate(double percentGrowthRate) {
>>     this.percentGrowthRate = percentGrowthRate;
>>   }
>>
>>   // This method simulates one day of growth for the mouse.
>>   public void grow() {
>>     this.weight += (.01 * this.percentGrowthRate * this.weight);
>>     this.age++;
>>   }
>>
>>   // This method prints the mouses's age and weight.
>>   public void display() {
>>     System.out.printf(
>>       "Age = %d, weight = %.3f\n", this.age, this.weight);
>>   }
>> }
>> #+END_SRC
>>
>> --END EXAMPLE-
>>
>> current state:
>> ==============
>> (setq org-export-latex-after-initial-vars-hook
>> '(org-beamer-after-initial-vars) org-speed-command-hook
>> '(org-speed-command-default-hook org-babel-speed-command-hook)
>> org-agenda-files '("~/mypubs/worklog") org-agenda-window-setup
>> 'other-window org-metaup-hook '(org-babel-load-in-session-maybe)
>> org-after-todo-state-change-hook '(org-clock-out-if-current)
>> org-export-blocks-postblock-hook '(org-exp-res/src-name-cleanup)
>> org-export-latex-format-toc-function
>> 'org-export-latex-format-toc-default org-tab-first-hook
>> '(org-hide-block-toggle-maybe org-src-native-tab-command-maybe
>> org-babel-hide-result-toggle-maybe) org-src-mode-hook
>> '(org-src-babel-configure-edit-buffer
>> org-src-mode-configure-edit-buffer)
>> org-confirm-shell-link-function 'yes-or-no-p
>> org-export-first-hook '(org-beamer-initialize-open-trackers)
>> org-agenda-before-write-hook '(org-agenda-add-entry-text)
>> outline-mode-hook '((lambda nil
>>                     (local-set-key "\356" (quote
>>                     outline-next-visible-heading))
>>                     (local-set-key "\360" (quote
>>                     outline-previous-visible-heading))
>>                     (local-set-key (quote [f12]) (quote
>>                    ck-outline-toggle))) )
>>                    org-babel-pre-tangle-hook '(save-buffer)
>>                    org-cycle-hook
>>                    '(org-cycle-hide-archived-subtrees
>>                    org-cycle-hide-drawers
>>                    org-cycle-show-empty-lines
>>                    org-optimize-window-after-visibility-change)
>>                    org-export-preprocess-before-normalizing-links-hook
>>                    '(org-remove-file-link-modifiers)
>>                    org-mode-hook '((lambda
>>                    nil (local-set-key " d" (quote
>>                    insert-date-heading))
>>                 (local-set-key "  " (quote org-agenda))
>>                 (local-set-key "\232" (quote format-float-column))
>>                 (local-set-key " e" (quote org-example))
>>                 (local-set-key " v" (quote org-verbatim))
>>                 (local-set-key " q" (quote org-quote)) (auto-fill-mode 1)
>>                 (setq org-agenda-window-setup (quote
>>                other-window)))
>>                #[nil "\300\301\302\303\304$\207" [org-add-hook
>>                change-major-mode-hook org-show-block-all append
>>                local] 5] #[nil "\300\301\302\303\304$\207"
>>                [org-add-hook change-major-mode-hook
>>                org-babel-show-result-all append local] 5]
>>                org-babel-result-hide-spec
>>                org-babel-hide-all-hashes)
>>                org-ctrl-c-ctrl-c-hook '(org-babel-hash-at-point
>>                org-babel-execute-safely-maybe)
>>                org-confirm-elisp-link-function 'yes-or-no-p
>>                org-export-interblocks '((lob
>>                org-babel-exp-lob-one-liners)
>>                         (src org-babel-exp-inline-src-blocks))
>> org-occur-hook '(org-first-headline-recenter)
>> org-from-is-user-regexp "\\<kauffman\\>"
>> org-export-preprocess-before-selecting-backend-code-hook
>> '(org-beamer-select-beamer-code) org-export-latex-final-hook
>> '(org-beamer-amend-header org-beamer-fix-toc
>> org-beamer-auto-fragile-frames
>> org-beamer-place-default-actions-for-lists) org-metadown-hook
>> '(org-babel-pop-to-session-maybe) org-export-blocks '((src
>> org-babel-exp-src-blocks nil)
>>                    (comment org-export-blocks-format-comment t)
>>                    (ditaa org-export-blocks-format-ditaa nil)
>>                    (dot org-export-blocks-format-dot nil))
>> )
>>
>>
>>
>
>



-- 
Karypis Research Group
Dept. of Computer Science
University of Minnesota

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Property inheritance in beamer export [7.4]
  2011-11-14 16:51   ` Chris Kauffman
@ 2012-04-22 14:37     ` Carsten Dominik
  0 siblings, 0 replies; 4+ messages in thread
From: Carsten Dominik @ 2012-04-22 14:37 UTC (permalink / raw)
  To: Chris Kauffman; +Cc: emacs-orgmode


On 14.11.2011, at 17:51, Chris Kauffman wrote:

> Hi Carsten
> 
> On Fri, Nov 11, 2011 at 10:58 AM, Carsten Dominik
> <carsten.dominik@gmail.com> wrote:
>> Hi Chris,
>> 
>> On 11.11.2011, at 05:34, Chris Kauffman wrote:
>> 
>>> 
>>> I use org for constructing simple slide presentations quite a
>>> bit.  I'd like to be able to set a global property which shrinks
>>> all text to fit in the allotted space; this is great for source
>>> examples.
>> 
>> Have you read the beamer documentation?  After reading about
>> shrink, do you still mean to apply this evil thing?   :)
>> 
> 
> For some situations, it is very appropriate, such as including a full
> code example in a single slide for copying/pasting into an editor.
> This keeps the code with the presentation and alleviates the need to
> copy from multiple slides or go to a separate site for the code.
> 
> In general, I find it peculiar that anyone would include documentation
> to the effect "never use this option." The point of including
> functionality is to enable use in situations the writer can't
> anticipate.  If the option is truly evil, remove it from the codebase
> altogether.  I have found it incredibly useful and will continue
> ignoring such requests.
> 
>>> After some experimentation I put
>>> 
>>> #+PROPERTY: BEAMER_envargs [shrink]
>>> 
>>> in the preamble and evaluated
>>> 
>>> (set-variable (quote org-use-property-inheritance) t nil)
>>> 
>>> According to my understanding of the documentation, this should
>>> make very outline entry inherit the property BEAMER_envargs,
>>> regardless of whether it has a properties list itself.
>> 
>> Yes, I agree this is what the documentation looks like.  However, the
>> imlementation of org-beamer.el only looks at the local properties.
>> TO speed up processing, Org grabs all properties at each headline
>> and stores them - without inheritance.
>> 
> 
> A small note in the documentation to that effect might prevent
> confusion from folks like me.
> 
> The patch you gave below in combination with the elisp code works.  I
> will continue using this patched version.  Please consider including
> such functionality in a future org-mode release as, despite the hit in
> efficiency, I feel allowing globally inherited properties as a mode of
> operation would eliminate a lot of tedium in copying properties over
> manually.

I have merged the patch now.

- Carsten

> 
> Cheers,
> Chris
> 
>>> After
>>> reloading the file, internally this seems to work fine: I move to
>>> any heading and eval the following lisp
>>> 
>>> (org-entry-get (point) "BEAMER_envargs" 1)
>>> 
>>> which gives the result "[shrink]".
>>> 
>>> However, on exporting the org file to pdf, the shrinking does not
>>> seem to happen. The source code runs off the page. Is property
>>> inheritance not respected during export?
>> 
>> Could you please set in .emacs
>> 
>> (setq org-beamer-inherited-properties '("BEAMER_envargs"))
>> 
>> and then try the following experimental patch
>> 
>> -----------------------------------------------------------------------------------------
>> diff --git a/lisp/org-beamer.el b/lisp/org-beamer.el
>> index 118aa75..2208c60 100644
>> --- a/lisp/org-beamer.el
>> +++ b/lisp/org-beamer.el
>> @@ -482,4 +482,10 @@ The effect is that these values will be accessible during export."
>>                    (looking-at ".*?:B_\\(note\\(NH\\)?\\):"))
>>               (push (cons "BEAMER_env" (match-string 1)) props))
>> +          (when (org-bound-and-true-p org-beamer-inherited-properties)
>> +            (mapc (lambda (p)
>> +                    (unless (assoc p props)
>> +                      (let ((v (org-entry-get nil p 'inherit)))
>> +                        (and v (push (cons p v) props)))))
>> +                  org-beamer-inherited-properties))
>>           (put-text-property (point-at-bol) (point-at-eol) 'org-props props)))
>>       (setq org-export-latex-options-plist
>> -----------------------------------------------------------------------------------------
>> 
>> - Carsten
>> 
>>> 
>>> Cheers,
>>> Chris
>>> 
>>> --Example .org File---
>>> #+TITLE:     Java Lecture
>>> #+AUTHOR:    Christopher Kauffman
>>> #+EMAIL:     kauffman77@gmail.com
>>> #+LANGUAGE:  en
>>> #+OPTIONS:   H:3 num:t toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
>>> #+OPTIONS:   TeX:t LaTeX:nil skip:nil d:nil todo:t pri:nil tags:not-in-toc
>>> #+INFOJS_OPT: view:nil toc:nil ltoc:t mouse:underline buttons:0
>>> path:http://orgmode.org/org-info.js
>>> #+EXPORT_SELECT_TAGS: export
>>> #+EXPORT_EXCLUDE_TAGS: noexport
>>> #+STARTUP: beamer
>>> #+STARTUP: showall
>>> #+LaTeX_CLASS: beamer
>>> #+BEAMER_FRAME_LEVEL: 1
>>> #+PROPERTY: BEAMER_envargs [shrink]
>>> 
>>> * Example
>>> Want this shrink
>>> #+BEGIN_SRC java
>>> public class Mouse{
>>>   private int age = 0;              // age of mouse in days
>>>   private double weight = 1.0;      // weight of mouse in grams
>>>   private double percentGrowthRate; // % weight increase per day
>>> 
>>>   // This method assigns the mouse's percent growth rate.
>>>   public void setPercentGrowthRate(double percentGrowthRate) {
>>>     this.percentGrowthRate = percentGrowthRate;
>>>   }
>>> 
>>>   // This method simulates one day of growth for the mouse.
>>>   public void grow() {
>>>     this.weight += (.01 * this.percentGrowthRate * this.weight);
>>>     this.age++;
>>>   }
>>> 
>>>   // This method prints the mouses's age and weight.
>>>   public void display() {
>>>     System.out.printf(
>>>       "Age = %d, weight = %.3f\n", this.age, this.weight);
>>>   }
>>> }
>>> #+END_SRC
>>> 
>>> * Example
>>> :PROPERTIES:
>>> :BEAMER_envargs: [shrink]
>>> :END:
>>> 
>>> Must add properties every time
>>> #+BEGIN_SRC java
>>> public class Mouse{
>>>   private int age = 0;              // age of mouse in days
>>>   private double weight = 1.0;      // weight of mouse in grams
>>>   private double percentGrowthRate; // % weight increase per day
>>> 
>>>   // This method assigns the mouse's percent growth rate.
>>>   public void setPercentGrowthRate(double percentGrowthRate) {
>>>     this.percentGrowthRate = percentGrowthRate;
>>>   }
>>> 
>>>   // This method simulates one day of growth for the mouse.
>>>   public void grow() {
>>>     this.weight += (.01 * this.percentGrowthRate * this.weight);
>>>     this.age++;
>>>   }
>>> 
>>>   // This method prints the mouses's age and weight.
>>>   public void display() {
>>>     System.out.printf(
>>>       "Age = %d, weight = %.3f\n", this.age, this.weight);
>>>   }
>>> }
>>> #+END_SRC
>>> 
>>> --END EXAMPLE-
>>> 
>>> current state:
>>> ==============
>>> (setq org-export-latex-after-initial-vars-hook
>>> '(org-beamer-after-initial-vars) org-speed-command-hook
>>> '(org-speed-command-default-hook org-babel-speed-command-hook)
>>> org-agenda-files '("~/mypubs/worklog") org-agenda-window-setup
>>> 'other-window org-metaup-hook '(org-babel-load-in-session-maybe)
>>> org-after-todo-state-change-hook '(org-clock-out-if-current)
>>> org-export-blocks-postblock-hook '(org-exp-res/src-name-cleanup)
>>> org-export-latex-format-toc-function
>>> 'org-export-latex-format-toc-default org-tab-first-hook
>>> '(org-hide-block-toggle-maybe org-src-native-tab-command-maybe
>>> org-babel-hide-result-toggle-maybe) org-src-mode-hook
>>> '(org-src-babel-configure-edit-buffer
>>> org-src-mode-configure-edit-buffer)
>>> org-confirm-shell-link-function 'yes-or-no-p
>>> org-export-first-hook '(org-beamer-initialize-open-trackers)
>>> org-agenda-before-write-hook '(org-agenda-add-entry-text)
>>> outline-mode-hook '((lambda nil
>>>                     (local-set-key "\356" (quote
>>>                     outline-next-visible-heading))
>>>                     (local-set-key "\360" (quote
>>>                     outline-previous-visible-heading))
>>>                     (local-set-key (quote [f12]) (quote
>>>                    ck-outline-toggle))) )
>>>                    org-babel-pre-tangle-hook '(save-buffer)
>>>                    org-cycle-hook
>>>                    '(org-cycle-hide-archived-subtrees
>>>                    org-cycle-hide-drawers
>>>                    org-cycle-show-empty-lines
>>>                    org-optimize-window-after-visibility-change)
>>>                    org-export-preprocess-before-normalizing-links-hook
>>>                    '(org-remove-file-link-modifiers)
>>>                    org-mode-hook '((lambda
>>>                    nil (local-set-key " d" (quote
>>>                    insert-date-heading))
>>>                 (local-set-key "  " (quote org-agenda))
>>>                 (local-set-key "\232" (quote format-float-column))
>>>                 (local-set-key " e" (quote org-example))
>>>                 (local-set-key " v" (quote org-verbatim))
>>>                 (local-set-key " q" (quote org-quote)) (auto-fill-mode 1)
>>>                 (setq org-agenda-window-setup (quote
>>>                other-window)))
>>>                #[nil "\300\301\302\303\304$\207" [org-add-hook
>>>                change-major-mode-hook org-show-block-all append
>>>                local] 5] #[nil "\300\301\302\303\304$\207"
>>>                [org-add-hook change-major-mode-hook
>>>                org-babel-show-result-all append local] 5]
>>>                org-babel-result-hide-spec
>>>                org-babel-hide-all-hashes)
>>>                org-ctrl-c-ctrl-c-hook '(org-babel-hash-at-point
>>>                org-babel-execute-safely-maybe)
>>>                org-confirm-elisp-link-function 'yes-or-no-p
>>>                org-export-interblocks '((lob
>>>                org-babel-exp-lob-one-liners)
>>>                         (src org-babel-exp-inline-src-blocks))
>>> org-occur-hook '(org-first-headline-recenter)
>>> org-from-is-user-regexp "\\<kauffman\\>"
>>> org-export-preprocess-before-selecting-backend-code-hook
>>> '(org-beamer-select-beamer-code) org-export-latex-final-hook
>>> '(org-beamer-amend-header org-beamer-fix-toc
>>> org-beamer-auto-fragile-frames
>>> org-beamer-place-default-actions-for-lists) org-metadown-hook
>>> '(org-babel-pop-to-session-maybe) org-export-blocks '((src
>>> org-babel-exp-src-blocks nil)
>>>                    (comment org-export-blocks-format-comment t)
>>>                    (ditaa org-export-blocks-format-ditaa nil)
>>>                    (dot org-export-blocks-format-dot nil))
>>> )
>>> 
>>> 
>>> 
>> 
>> 
> 
> 
> 
> -- 
> Karypis Research Group
> Dept. of Computer Science
> University of Minnesota

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-04-22 14:37 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-11-11  4:34 Property inheritance in beamer export [7.4] Chris Kauffman
2011-11-11 16:58 ` Carsten Dominik
2011-11-14 16:51   ` Chris Kauffman
2012-04-22 14:37     ` Carsten Dominik

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).