* Placement of \makeatletter with \beamer@frametextheight
@ 2018-11-28 15:09 Loris Bennett
2018-11-28 15:37 ` Eric S Fraga
0 siblings, 1 reply; 13+ messages in thread
From: Loris Bennett @ 2018-11-28 15:09 UTC (permalink / raw)
To: emacs-orgmode
Hi,
I want to specify the size of a graphic in an Beamer presentation
generated from my org file. The following
#+ATTR_LATEX: :height 0.75\textheight
works, but
#+ATTR_LATEX: :height 0.75\beamer@frametextheight
I get the error
! Undefined control sequence.
\Gin@@eheight ->0.5\beamer
@frametextheight
I assume I need to insert a \makeatletter at the appropriate point.
Where would that be?
Cheers,
Loris
--
This signature is currently under construction.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Placement of \makeatletter with \beamer@frametextheight
2018-11-28 15:09 Placement of \makeatletter with \beamer@frametextheight Loris Bennett
@ 2018-11-28 15:37 ` Eric S Fraga
2018-11-29 7:17 ` Loris Bennett
0 siblings, 1 reply; 13+ messages in thread
From: Eric S Fraga @ 2018-11-28 15:37 UTC (permalink / raw)
To: Loris Bennett; +Cc: emacs-orgmode
On Wednesday, 28 Nov 2018 at 16:09, Loris Bennett wrote:
> Hi,
>
> I want to specify the size of a graphic in an Beamer presentation
> generated from my org file. The following
>
> #+ATTR_LATEX: :height 0.75\textheight
>
> works, but
>
> #+ATTR_LATEX: :height 0.75\beamer@frametextheight
>
> I get the error
>
> ! Undefined control sequence.
> \Gin@@eheight ->0.5\beamer
> @frametextheight
>
> I assume I need to insert a \makeatletter at the appropriate point.
> Where would that be?
You might find it easier to create your own variable in the header of the LaTeX file and use that directly, as in (untested):
#+latex_header: \makeatletter\let\mytextheight\beamer@frametexheight\makeatother
...
#+attr_latex: :height 0.75\mytextheight
--
Eric S Fraga via Emacs 27.0.50, Org release_9.1.14-1035-gfeb442
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Placement of \makeatletter with \beamer@frametextheight
2018-11-28 15:37 ` Eric S Fraga
@ 2018-11-29 7:17 ` Loris Bennett
2018-11-29 8:13 ` Julius Dittmar
0 siblings, 1 reply; 13+ messages in thread
From: Loris Bennett @ 2018-11-29 7:17 UTC (permalink / raw)
To: emacs-orgmode
Hi Eric,
Eric S Fraga <esflists@gmail.com> writes:
> On Wednesday, 28 Nov 2018 at 16:09, Loris Bennett wrote:
>> Hi,
>>
>> I want to specify the size of a graphic in an Beamer presentation
>> generated from my org file. The following
>>
>> #+ATTR_LATEX: :height 0.75\textheight
>>
>> works, but
>>
>> #+ATTR_LATEX: :height 0.75\beamer@frametextheight
>>
>> I get the error
>>
>> ! Undefined control sequence.
>> \Gin@@eheight ->0.5\beamer
>> @frametextheight
>>
>> I assume I need to insert a \makeatletter at the appropriate point.
>> Where would that be?
>
> You might find it easier to create your own variable in the header of
> the LaTeX file and use that directly, as in (untested):
>
> #+latex_header: \makeatletter\let\mytextheight\beamer@frametexheight\makeatother
>
> ...
>
> #+attr_latex: :height 0.75\mytextheight
Thanks, but with that I get
! Undefined control sequence.
\Gin@@eheight ->0.75\mytextheight
However, the tex file looks OK:
...
\usepackage[sfdefault]{Fira Sans}
\makeatletter\let\mytextheight\beamer@frametexheight\makeatother
\definecolor{mFubMainGreen}{HTML}{99CC00}
...
\begin{center}
\includegraphics[height=0.75\mytextheight]{../../common/resources.png}
\end{center}
...
Any ideas what might still be going wrong?
Cheers,
Loris
--
This signature is currently under construction.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Placement of \makeatletter with \beamer@frametextheight
2018-11-29 7:17 ` Loris Bennett
@ 2018-11-29 8:13 ` Julius Dittmar
2018-11-29 8:38 ` Julius Dittmar
0 siblings, 1 reply; 13+ messages in thread
From: Julius Dittmar @ 2018-11-29 8:13 UTC (permalink / raw)
To: emacs-orgmode
Hi Loris,
I don't know beamer enough to propose an elegant solution. Nonetheless I
have ideas what might go wrong here.
Am 29.11.18 um 08:17 schrieb Loris Bennett:
>> #+latex_header: \makeatletter\let\mytextheight\beamer@frametexheight\makeatother
>> #+attr_latex: :height 0.75\mytextheight
First, \let copies the at-the-moment-of-definition version of
\beamer@frametexheight to \mytextheight. This happens in the preamble.
I expect beamer to set up things like frame height at the begin of the
document (exactly the \begin{document} line), not earlier. Thus at the
point of that \let, that length isn't what you want yet.
Solution to this:
#+begin_export latex
\makeatletter...
#+end_export
Second, \let creates a macro whereas it then is used as a length for the
figure. I doubt that is possible.
If that's the reason, you might try
#+begin_export latex
\newlength\mytextheight
\makeatletter
\setlength\mytextheight{\beamer@frametexheight}
\makeatother
#+end_export
Perhaps this gives you a starting point to further play with it.
HTH,
Julius
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Placement of \makeatletter with \beamer@frametextheight
2018-11-29 8:13 ` Julius Dittmar
@ 2018-11-29 8:38 ` Julius Dittmar
2018-11-29 9:26 ` Eric S Fraga
0 siblings, 1 reply; 13+ messages in thread
From: Julius Dittmar @ 2018-11-29 8:38 UTC (permalink / raw)
To: emacs-orgmode
Am 29.11.18 um 09:13 schrieb Julius Dittmar:
> Am 29.11.18 um 08:17 schrieb Loris Bennett:
>>> #+latex_header: \makeatletter\let\mytextheight\beamer@frametexheight\makeatother
>>> #+attr_latex: :height 0.75\mytextheight
Oh, or perhaps just a typo is involved: is it really
\beamer@frametexheight or rather \beamer@frametextheight you are chasing
after?
HTH,
Julius
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Placement of \makeatletter with \beamer@frametextheight
2018-11-29 8:38 ` Julius Dittmar
@ 2018-11-29 9:26 ` Eric S Fraga
2018-11-29 13:07 ` Loris Bennett
0 siblings, 1 reply; 13+ messages in thread
From: Eric S Fraga @ 2018-11-29 9:26 UTC (permalink / raw)
To: Julius Dittmar; +Cc: emacs-orgmode
On Thursday, 29 Nov 2018 at 09:38, Julius Dittmar wrote:
> Am 29.11.18 um 09:13 schrieb Julius Dittmar:
>> Am 29.11.18 um 08:17 schrieb Loris Bennett:
>>>> #+latex_header: \makeatletter\let\mytextheight\beamer@frametexheight\makeatother
>>>> #+attr_latex: :height 0.75\mytextheight
>
> Oh, or perhaps just a typo is involved: is it really
> \beamer@frametexheight or rather \beamer@frametextheight you are chasing
> after?
Also, you may need to define your mytextheight as a length and then use \setlength instead of \let.
--
Eric S Fraga via Emacs 27.0.50, Org release_9.1.13-894-gf79545
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Placement of \makeatletter with \beamer@frametextheight
2018-11-29 9:26 ` Eric S Fraga
@ 2018-11-29 13:07 ` Loris Bennett
2018-11-29 13:24 ` Gustavo Barros
2018-11-29 13:47 ` Julius Müller
0 siblings, 2 replies; 13+ messages in thread
From: Loris Bennett @ 2018-11-29 13:07 UTC (permalink / raw)
To: emacs-orgmode
Eric S Fraga <esflists@gmail.com> writes:
> On Thursday, 29 Nov 2018 at 09:38, Julius Dittmar wrote:
>> Am 29.11.18 um 09:13 schrieb Julius Dittmar:
>>> Am 29.11.18 um 08:17 schrieb Loris Bennett:
>>>>> #+latex_header: \makeatletter\let\mytextheight\beamer@frametexheight\makeatother
>>>>> #+attr_latex: :height 0.75\mytextheight
>>
>> Oh, or perhaps just a typo is involved: is it really
>> \beamer@frametexheight or rather \beamer@frametextheight you are chasing
>> after?
>
> Also, you may need to define your mytextheight as a length and then use \setlength instead of \let.
After correcting the typo I followed Eric's and Julius's suggestions and
I tried adding
#+LATEX_HEADER: \newlength\mytextheight\makeatletter\setlength\mytextheight{\beamer@frametextheight}\makeatother
to the beginning of the Org file, but in this case
\the\mytextheight
is 0.0pt. After that I tried adding the definition on the slide itself:
#+BEGIN_SRC latex
\newlength\mytextheight\makeatletter\setlength\mytextheight{\beamer@frametextheight}\makeatother
#+END_SRC
but got the error
! Undefined control sequence.
<argument> \beamer
l.153 \end{frame}
! Missing number, treated as zero.
<to be read again>
@
l.153 \end{frame}
Any thoughts?
Cheers,
Loris
--
This signature is currently under construction.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Placement of \makeatletter with \beamer@frametextheight
2018-11-29 13:07 ` Loris Bennett
@ 2018-11-29 13:24 ` Gustavo Barros
2018-11-29 13:41 ` Joost Kremers
2018-11-29 13:47 ` Julius Müller
1 sibling, 1 reply; 13+ messages in thread
From: Gustavo Barros @ 2018-11-29 13:24 UTC (permalink / raw)
To: Loris Bennett, emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 1925 bytes --]
Louis,
a hunch, which might work.
It seems that, if you try to set the length in your preamble,
`\beamer@frametextheight` is not yet defined.
So, you might try the hook `\AtBeginDocument` to see if the definition
comes at a better timing.
#+LATEX_HEADER:
\newlength\mytextheight\AtBeginDocument{\makeatletter\setlength\mytextheight{\beamer@frametextheight}\makeatother}
As I said, it's a hunch, for I haven't tested. But I think it may be it.
Best,
Gustavo.
On 29/11/2018 11:07, Loris Bennett wrote:
> Eric S Fraga <esflists@gmail.com> writes:
>
>> On Thursday, 29 Nov 2018 at 09:38, Julius Dittmar wrote:
>>> Am 29.11.18 um 09:13 schrieb Julius Dittmar:
>>>> Am 29.11.18 um 08:17 schrieb Loris Bennett:
>>>>>> #+latex_header: \makeatletter\let\mytextheight\beamer@frametexheight\makeatother
>>>>>> #+attr_latex: :height 0.75\mytextheight
>>> Oh, or perhaps just a typo is involved: is it really
>>> \beamer@frametexheight or rather \beamer@frametextheight you are chasing
>>> after?
>> Also, you may need to define your mytextheight as a length and then use \setlength instead of \let.
> After correcting the typo I followed Eric's and Julius's suggestions and
> I tried adding
>
> #+LATEX_HEADER: \newlength\mytextheight\makeatletter\setlength\mytextheight{\beamer@frametextheight}\makeatother
>
> to the beginning of the Org file, but in this case
>
> \the\mytextheight
>
> is 0.0pt. After that I tried adding the definition on the slide itself:
>
> #+BEGIN_SRC latex
> \newlength\mytextheight\makeatletter\setlength\mytextheight{\beamer@frametextheight}\makeatother
> #+END_SRC
>
> but got the error
>
> ! Undefined control sequence.
> <argument> \beamer
>
> l.153 \end{frame}
>
> ! Missing number, treated as zero.
> <to be read again>
> @
> l.153 \end{frame}
>
> Any thoughts?
>
> Cheers,
>
> Loris
>
[-- Attachment #2: Type: text/html, Size: 3112 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Placement of \makeatletter with \beamer@frametextheight
2018-11-29 13:24 ` Gustavo Barros
@ 2018-11-29 13:41 ` Joost Kremers
2018-11-29 15:12 ` Loris Bennett
0 siblings, 1 reply; 13+ messages in thread
From: Joost Kremers @ 2018-11-29 13:41 UTC (permalink / raw)
To: emacs-orgmode; +Cc: Loris Bennett
On Thu, Nov 29 2018, Gustavo Barros wrote:
> Louis,
>
> a hunch, which might work.
> It seems that, if you try to set the length in your preamble,
> `\beamer@frametextheight` is not yet defined.
> So, you might try the hook `\AtBeginDocument` to see if the
> definition comes at
> a better timing.
>
> #+LATEX_HEADER:
> \newlength\mytextheight\AtBeginDocument{\makeatletter\setlength\mytextheight{\beamer@frametextheight}\makeatother}
>
> As I said, it's a hunch, for I haven't tested. But I think it
> may be it.
Why not put the entire thing inside \AtBeginDocument?
To the OP: \paperheight does seem to be available in Beamer.
Couldn't you use that?
--
Joost Kremers
Life has its moments
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Placement of \makeatletter with \beamer@frametextheight
2018-11-29 13:07 ` Loris Bennett
2018-11-29 13:24 ` Gustavo Barros
@ 2018-11-29 13:47 ` Julius Müller
2018-11-30 7:13 ` Loris Bennett
1 sibling, 1 reply; 13+ messages in thread
From: Julius Müller @ 2018-11-29 13:47 UTC (permalink / raw)
To: emacs-orgmode
Am 29.11.18 um 14:07 schrieb Loris Bennett:
> Eric S Fraga <esflists@gmail.com> writes:
>
>> On Thursday, 29 Nov 2018 at 09:38, Julius Dittmar wrote:
>>> Am 29.11.18 um 09:13 schrieb Julius Dittmar:
>>>> Am 29.11.18 um 08:17 schrieb Loris Bennett:
>>>>>> #+latex_header: \makeatletter\let\mytextheight\beamer@frametexheight\makeatother
>>>>>> #+attr_latex: :height 0.75\mytextheight
>>>
>>> Oh, or perhaps just a typo is involved: is it really
>>> \beamer@frametexheight or rather \beamer@frametextheight you are chasing
>>> after?
>>
>> Also, you may need to define your mytextheight as a length and then use \setlength instead of \let.
>
> After correcting the typo I followed Eric's and Julius's suggestions and
> I tried adding
>
> #+LATEX_HEADER: \newlength\mytextheight\makeatletter\setlength\mytextheight{\beamer@frametextheight}\makeatother
>
> to the beginning of the Org file, but in this case
>
> \the\mytextheight
> > is 0.0pt.
That's what I suspected. You could try to wrap this line in an
#+begin_export latex block (as I suggested), then it will be within the
document instead of in the preamble.
I usually refrain from using AtBeginDocument hooks (Gustavo Barros'
suggestion) because I do not know enough about them, so I rather add the
commands to a place I can see ;-)
> After that I tried adding the definition on the slide itself
>
> #+BEGIN_SRC latex
> \newlength\mytextheight\makeatletter\setlength\mytextheight{\beamer@frametextheight}\makeatother
> #+END_SRC
Hm, src-block? I would have thought you should wrap that in an
export-block, so those commands get added to the exported document, not
quoted within as a source code. That would mean
#+begin_export latex
\newlength\mytextheight\makeatletter\setlength\mytextheight{\beamer@frametextheight}\makeatother
#+end_export
HTH,
Julius
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Placement of \makeatletter with \beamer@frametextheight
2018-11-29 13:41 ` Joost Kremers
@ 2018-11-29 15:12 ` Loris Bennett
2018-11-29 17:50 ` Eric S Fraga
0 siblings, 1 reply; 13+ messages in thread
From: Loris Bennett @ 2018-11-29 15:12 UTC (permalink / raw)
To: emacs-orgmode; +Cc: Joost Kremers
Joost Kremers <joostkremers@fastmail.fm> writes:
> On Thu, Nov 29 2018, Gustavo Barros wrote:
>> Louis,
>>
>> a hunch, which might work.
>> It seems that, if you try to set the length in your preamble,
>> `\beamer@frametextheight` is not yet defined.
>> So, you might try the hook `\AtBeginDocument` to see if the definition comes
>> at
>> a better timing.
>>
>> #+LATEX_HEADER:
>> \newlength\mytextheight\AtBeginDocument{\makeatletter\setlength\mytextheight{\beamer@frametextheight}\makeatother}
>>
>> As I said, it's a hunch, for I haven't tested. But I think it may be it.
>
> Why not put the entire thing inside \AtBeginDocument?
>
> To the OP: \paperheight does seem to be available in Beamer. Couldn't you use
> that?
Using
#+LATEX_HEADER: \newlength\mytextheight\AtBeginDocument{\makeatletter\setlength\mytextheight{\beamer@frametextheight}\makeatother}
also leads to the error
! Undefined control sequence.
<argument> \beamer
So I went with \paperheight instead, which works fine.
Regards
Loris
--
This signature is currently under construction.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Placement of \makeatletter with \beamer@frametextheight
2018-11-29 15:12 ` Loris Bennett
@ 2018-11-29 17:50 ` Eric S Fraga
0 siblings, 0 replies; 13+ messages in thread
From: Eric S Fraga @ 2018-11-29 17:50 UTC (permalink / raw)
To: Loris Bennett; +Cc: Joost Kremers, emacs-orgmode
On Thursday, 29 Nov 2018 at 16:12, Loris Bennett wrote:
> So I went with \paperheight instead, which works fine.
:-) sometimes we get caught up with complex solutions (and fail) when
easy solutions exist!
Glad you got it sorted in any case.
--
Eric S Fraga via Emacs 27.0.50, Org release_9.1.13-894-gf79545
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Placement of \makeatletter with \beamer@frametextheight
2018-11-29 13:47 ` Julius Müller
@ 2018-11-30 7:13 ` Loris Bennett
0 siblings, 0 replies; 13+ messages in thread
From: Loris Bennett @ 2018-11-30 7:13 UTC (permalink / raw)
To: emacs-orgmode
Julius Müller <Julius.S.Mueller@eureca.de> writes:
> Am 29.11.18 um 14:07 schrieb Loris Bennett:
[snip (33 lines)]
>> After that I tried adding the definition on the slide itself
>>
>> #+BEGIN_SRC latex
>> \newlength\mytextheight\makeatletter\setlength\mytextheight{\beamer@frametextheight}\makeatother
>> #+END_SRC
>
> Hm, src-block? I would have thought you should wrap that in an
> export-block, so those commands get added to the exported document, not
> quoted within as a source code. That would mean
>
> #+begin_export latex
> \newlength\mytextheight\makeatletter\setlength\mytextheight{\beamer@frametextheight}\makeatother
> #+end_export
I tried that, but still got the error about \beamer being undefined.
However, my understanding is that, if I am exporting to LaTeX, then
BEGIN_SRC latex
and
BEGIN_EXPORT latex
do the same thing. So if I have the following in my org file:
#+BEGIN_EXPORT latex
\newlength\mytextheight\makeatletter\setlength\mytextheight{\beamer@frametextheight}\makeatother
#+END_EXPORT
#+BEGIN_SRC latex
\newlength\mytextheight\makeatletter\setlength\mytextheight{\beamer@frametextheight}\makeatother
#+END_SRC
I get
\newlength\mytextheight\makeatletter\setlength\mytextheight{\beamer@frametextheight}\makeatother
\newlength\mytextheight\makeatletter\setlength\mytextheight{\beamer@frametextheight}\makeatother
in my tex file.
Cheers,
Loris
--
This signature is currently under construction.
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2018-11-30 7:13 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-11-28 15:09 Placement of \makeatletter with \beamer@frametextheight Loris Bennett
2018-11-28 15:37 ` Eric S Fraga
2018-11-29 7:17 ` Loris Bennett
2018-11-29 8:13 ` Julius Dittmar
2018-11-29 8:38 ` Julius Dittmar
2018-11-29 9:26 ` Eric S Fraga
2018-11-29 13:07 ` Loris Bennett
2018-11-29 13:24 ` Gustavo Barros
2018-11-29 13:41 ` Joost Kremers
2018-11-29 15:12 ` Loris Bennett
2018-11-29 17:50 ` Eric S Fraga
2018-11-29 13:47 ` Julius Müller
2018-11-30 7:13 ` Loris Bennett
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).