PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Voss - Präsentationen mit LaTeX



AlexS1985
06-04-2011, 19:06
Hallo Zusammen,

ich möchte mir anhand des Buches "Voss - Präsentationen mit LaTeX" eine eigene Klasse definieren. Langsam lichtet sich auch der Code, den Herbert auf den Seiten 154 - 158 verwendet. Dennoch bleiben einige Fragen:

1. Was bedeutet der Befehl \setbeamertemplate*{headline}{} auf Seite 156? Wenn ich mir \setbeamertemplate{navigation symbols}{} ansehe, löscht es mir die Navigationsleiste, aber wieso benutzt er bei 'headline' einen * und bei 'navigation symbols' nicht?

2. Verständnisfrage: der * bei \setbeamercolor*{frametitle}{fg=new_grey, bg=white} auf Seite 155 bedeutet, dass diese Farbe sofort für den Frametitle gilt, ohne jeglichen zusätzlichen Aufruf. Das funktioniert aber auch ohne *.

3. Wieso verwendet er \addtolength\textwidth{-30pt} auf Seite 156? Der Befehl bewirkt, dass das Logo von rechts nach links wandert. Aber wieso macht er das so, und verwendet keinen anderen Befehl, das ihm das Logo nach rechts schiebt.

4. Wieso definiert er sich hier \newlength\UWH@image@width\setlength\UWH@image@wid th{\textwidth} auf Seite 156 eine neue Länge, wenn er sie im folgenden nie mehr verwendet?

5. Was bedeutet ein @? Dass er das @ für seine Definitionen verwendet ist mir klar, aber gibt es eine generelle Definition für dieses Zeichen? Auf Seite 157 gibt es die if-Abfrage 'ifbeamer@inframe'. Für mich sieht das so aus, als gäbe es feste Bezeichnungen für bestimmte Bestandteile eines Frames (hier: in der Beamer-Klasse eine inframe Bezeichnung). Gibt es dazu vielleicht einen userguide, der mir sämtliche solcher Bezeichnungen erklärt?

6. Gibt es die Möglichkeit zwei colorboxes zu erstellen, und wenn ja wie kann ich diese später aufrufen?

\setbeamercolor{colorblock_grey}{fg=black,bg=new_g rey}
\setbeamercolor{colorblock_light_grey}{fg=black,bg =new_light_grey}
%
\newenvironment{colorblock}[2] % Defines colored blocks for a "Business Snapshot" in the Hull book
{
\setbeamercolor{item}{fg=black,bg=black}
\begin{beamerboxesrounded}[upper=#1,lower=#2,shadow=false]
}
{\end{beamerboxesrounded}}

Vielleicht so etwas wie defbeamertemplate und setbeamertemplate? Was bedeutet [2] hinter {colorblock}?


Vielen herzlichen Dank für eure Hilfe.

Schöne Grüße,
Alex

voss
07-04-2011, 20:35
1. Was bedeutet der Befehl \setbeamertemplate*{headline}{} auf Seite 156? Wenn ich mir \setbeamertemplate{navigation symbols}{} ansehe, löscht es mir die Navigationsleiste, aber wieso benutzt er bei 'headline' einen * und bei 'navigation symbols' nicht?

Die Sternversion setzen zuerst alles auf den Standard zurück. So bin ich sicher, dass nichts von irgendeiner anderen Definition übrig bleibt. Bei der Navigationsleiste kann man davon ausgehen, dass sie eh nicht modifiziert wurde.



2. Verständnisfrage: der * bei \setbeamercolor*{frametitle}{fg=new_grey, bg=white} auf Seite 155 bedeutet, dass diese Farbe sofort für den Frametitle gilt, ohne jeglichen zusätzlichen Aufruf. Das funktioniert aber auch ohne *.

Stern heißt auch hier, zuerst alles auf den STandard zurücksetzen, genau wie oben.


3. Wieso verwendet er \addtolength\textwidth{-30pt} auf Seite 156? Der Befehl bewirkt, dass das Logo von rechts nach links wandert. Aber wieso macht er das so, und verwendet keinen anderen Befehl, das ihm das Logo nach rechts schiebt.

Nein, diese Anweisung verringert die zur Verfügung stehende Textbreite, damit Logo und die darunter liegende Grafik an derselben Stelle ende.


4. Wieso definiert er sich hier \newlength\UWH@image@width\setlength\UWH@image@wid th{\textwidth} auf Seite 156 eine neue Länge, wenn er sie im folgenden nie mehr verwendet?

Ich hatte erst ein Logo mit eienr durchgehenden Linie.


5. Was bedeutet ein @? Dass er das @ für seine Definitionen verwendet ist mir klar, aber gibt es eine generelle Definition für dieses Zeichen? Auf Seite 157 gibt es die if-Abfrage 'ifbeamer@inframe'. Für mich sieht das so aus, als gäbe es feste Bezeichnungen für bestimmte Bestandteile eines Frames (hier: in der Beamer-Klasse eine inframe Bezeichnung). Gibt es dazu vielleicht einen userguide, der mir sämtliche solcher Bezeichnungen erklärt?

Damit kann ich sicherstellen, dass mir Makros vom Anwender nicht versehentlich überschrieben werden, denn der müsste vorher ein \makeatletter
machen, bevor der derartige Namen verwenden kann, sonst gibt es eine Fehlermeldung.


6. Gibt es die Möglichkeit zwei colorboxes zu erstellen, und wenn ja wie kann ich diese später aufrufen?

\setbeamercolor{colorblock_grey}{fg=black,bg=new_g rey}
\setbeamercolor{colorblock_light_grey}{fg=black,bg =new_light_grey}
%
\newenvironment{colorblock}[2] % Defines colored blocks for a "Business Snapshot" in the Hull book
{
\setbeamercolor{item}{fg=black,bg=black}
\begin{beamerboxesrounded}[upper=#1,lower=#2,shadow=false]
}
{\end{beamerboxesrounded}}

Vielleicht so etwas wie defbeamertemplate und setbeamertemplate? Was bedeutet [2] hinter {colorblock}?

Die Anzahl der Parameter

Herbert

AlexS1985
08-04-2011, 07:09
Servus Herbert,

vielen Dank für deine Antworten. Es kommt Licht in mein Dunkel.

Ich hätte noch weitere Fragen:

1. Der Header der titlepage ist vertikal leicht nach unten verschoben im Vergleich zu den darauffolgenden Slides. Auch ist sie in der horizontalen nicht so lang wie meine Textframes. Ist das das typische Layout von titlepage?
Gibt es für \defbeamertemplate*{title page}{FU_title_page} vielleicht eine [t] Option, mit der ich den Header auf top setze?

2. Der Befehl
\def\maketitle{\ifbeamer@inframe\titlepage\else\fr ame[t]{\titlepage}\fi%
\setbeamertemplate{frametitle}[FU]\setbeamertemplate{footline}[FU]}
definiert mir maketitle neu, und sollte nach der titlepage die beiden templates aufrufen. Selbst wenn ich das mit deinem Minimalbeispiel mache, wird mir keine Fußzeile angezeigt und das frame sieht auch nicht so aus, wie ich es definiert habe. Funktioniert das bei dir? Im Buch passt das, ich weiß.

3. Warum benutzt du hier
\expandafter\pgfdeclareimage\expandafter[height=\the\FU@image@height]{bib}{FUbib}
ein expandafter? Das funktioniert bei mir auch nur mit \pgfdeclareimage[height=\the\FU@image@height]{bib}{FUbib}?

4. Kennst du eine Möglichkeit zwei Colorboxes zu definieren und später aufzurufen?

Vielen Dank für deine Hilfe Herbert, das Buch ist super!

Schöne Grüße,
Alex

voss
08-04-2011, 21:09
1. Der Header der titlepage ist vertikal leicht nach unten verschoben im Vergleich zu den darauffolgenden Slides. Auch ist sie in der horizontalen nicht so lang wie meine Textframes. Ist das das typische Layout von titlepage?
Gibt es für \defbeamertemplate*{title page}{FU_title_page} vielleicht eine [t] Option, mit der ich den Header auf top setze?
Nein, dann hätte ich eine Option vorsehen müssen.



2. Der Befehl
\def\maketitle{\ifbeamer@inframe\titlepage\else\fr ame[t]{\titlepage}\fi%
\setbeamertemplate{frametitle}[FU]\setbeamertemplate{footline}[FU]}
definiert mir maketitle neu, und sollte nach der titlepage die beiden templates aufrufen. Selbst wenn ich das mit deinem Minimalbeispiel mache, wird mir keine Fußzeile angezeigt und das frame sieht auch nicht so aus, wie ich es definiert habe. Funktioniert das bei dir? Im Buch passt das, ich weiß.

Ja, es gibt das FU-Thema auch auf CTAN. HAst du dir denn die Beispiele alle von CTAN geholt? Da müsste ja auch ein lauffähiges dabei sein.



3. Warum benutzt du hier
\expandafter\pgfdeclareimage\expandafter[height=\the\FU@image@height]{bib}{FUbib}
ein expandafter? Das funktioniert bei mir auch nur mit \pgfdeclareimage[height=\the\FU@image@height]{bib}{FUbib}?

Weil ich sicher gehen will, dass \the\FU@image@height durch seinen Wert ersetzt wird.



4. Kennst du eine Möglichkeit zwei Colorboxes zu definieren und später aufzurufen?


sieh mal hier: http://tex.stackexchange.com/questions/11211/can-i-have-framed-blocks-in-beamer

Herbert

AlexS1985
11-04-2011, 20:51
Servus Herbert,

vorab schon mal recht herzlichen Dank für Deine bisherige Hilfe.




Zitat:
2. Der Befehl
\def\maketitle{\ifbeamer@inframe\titlepage\else\fr ame[t]{\titlepage}\fi%
\setbeamertemplate{frametitle}[FU]\setbeamertemplate{footline}[FU]}
definiert mir maketitle neu, und sollte nach der titlepage die beiden templates aufrufen. Funktioniert aber mit dem Beispiel aus dem Buch nicht.

Ja, es gibt das FU-Thema auch auf CTAN. HAst du dir denn die Beispiele alle von CTAN geholt? Da müsste ja auch ein lauffähiges dabei sein.

Dieses Beispiel läuft ohne Probleme. An alle: die Footline wird bei
\begin{frame}
\maketitle
\end{frame}
nicht angegeben. Um die Footline zu aktivieren, muss man die frame-Umgebung weglassen und nur \maketitle benutzen.



sieh mal hier: http://tex.stackexchange.com/questions/11211/can-i-have-framed-blocks-in-beamer

Herbert
Guter Tipp!


Dennoch bleiben wieder einmal Fragen:

1. Die Titlepage ist kleiner als die darauffolgenden Slides. Ich erstelle diese über folgenden Befehl:

\def\maketitle
{
\ifbeamer@inframe
\titlepage
\else
\frame[t]{\titlepage}
\fi
}

Wie kann ich die Titlepage größer machen? Und was machst du in dem if-Clause? Was bedeutet die if-Anweisung 'ifbeamer@inframe'? Wie ich das verstehe sind doch 'beamer' und 'inframe' feststehende Ausdrücke, da du sie sonst nirgends definiert hast. Hast du dazu vielleicht einen guten Userguide zur Hand, damit ich mir solche Befehle auch mal selbst erklären oder selbst programmieren kann? Außerdem scheint es für mich, als würdest du in beiden if-Fällen nur die Titlepage aufrufen. Ist das so, und wenn ja, warum?

2. Was machst du in folgendem Befehl:

\ifx\insertsubtitle\@empty\else\vskip0.25em%

{\usebeamerfont{subtitle}\insertsubtitle\par}%

\fi}

Geht in die selbe Richtung wie Frage 1, weil ich nicht weiß, wie die Befehle ifx, @empty definiert sind.

3. Was macht der Befehl:
\newsavebox\FU@box\savebox\FU@box{\pgfuseimage{FUi mage}}
Wie ich es in der Anleitung von savebox verstehe, müsste doch dann noch der Aufruf \usebox kommen. Diesen verwendest du jedoch nirgends.


Herbert, wieder einmal vielen Dank für Deine Unterstützung.

Schöne Grüße,
Alex

voss
12-04-2011, 12:48
1. Die Titlepage ist kleiner als die darauffolgenden Slides. Ich erstelle diese über folgenden Befehl:

\def\maketitle
{
\ifbeamer@inframe
\titlepage
\else
\frame[t]{\titlepage}
\fi
}

Wie kann ich die Titlepage größer machen? Und was machst du in dem if-Clause? Was bedeutet die if-Anweisung 'ifbeamer@inframe'? Wie ich das verstehe sind doch 'beamer' und 'inframe' feststehende Ausdrücke, da du sie sonst nirgends definiert hast. Hast du dazu vielleicht einen guten Userguide zur Hand, damit ich mir solche Befehle auch mal selbst erklären oder selbst programmieren kann? Außerdem scheint es für mich, als würdest du in beiden if-Fällen nur die Titlepage aufrufen. Ist das so, und wenn ja, warum?

beamer lässt beides zu, also muss man auch beide Fälle beachten, wenn die Lösung nicht nur von einem selbst benutzt wird. Denn dann könnte man ja immer das Richtige machen.


2. Was machst du in folgendem Befehl:

\ifx\insertsubtitle\@empty\else\vskip0.25em%

{\usebeamerfont{subtitle}\insertsubtitle\par}%

\fi}

Geht in die selbe Richtung wie Frage 1, weil ich nicht weiß, wie die Befehle ifx, @empty definiert sind.

Wenn das Makro \insertsubtitle _nicht_ leer ist, also {}, dann mache einen vertikalen Vorschub und füge den Inhalt von \insertsubtitle ein.


3. Was macht der Befehl:
\newsavebox\FU@box\savebox\FU@box{\pgfuseimage{FUi mage}}
Wie ich es in der Anleitung von savebox verstehe, müsste doch dann noch der Aufruf \usebox kommen. Diesen verwendest du jedoch nirgends.


Damit kann ich die Maße der Abbildung jederzeit abfragen: \wd\FU@Box,
\ht\FU@Box und \dp\FU@Bpx, so sie auch eine Tiefe hat.

Herbert

AlexS1985
13-04-2011, 00:38
beamer lässt beides zu, also muss man auch beide Fälle beachten, wenn die Lösung nicht nur von einem selbst benutzt wird. Denn dann könnte man ja immer das Richtige machen.
Herbert

Diese Antwort hat die ??? in meinem Kopf leider nur erhöht. Was frägst du denn mit ifbeamer@inframe überhaupt ab? Für mich hört sich das an, als ob du, abhängig von der if-Abfrage, eine titlepage erstellst. Einmal mit \frame[t]{\titlepage}, einmal nur mit \titlepage. Darauf hat doch der Anwender keinen Einfluss.

Hast du eine Befehlsübersicht, mit der ich mir u.a. solche if-Abfragen selbst nachbauen kann? Z.B. interessiert mich, wann ich \ifx nehme, wann \ifbeamer, welche vordefinierten Begriffe wie @empty es noch gibt.

Vielen Dank Herbert.

Schöne Grüße,
Alex

voss
13-04-2011, 08:30
Diese Antwort hat die ??? in meinem Kopf leider nur erhöht. Was frägst du denn mit ifbeamer@inframe überhaupt ab? Für mich hört sich das an, als ob du, abhängig von der if-Abfrage, eine titlepage erstellst. Einmal mit \frame[t]{\titlepage}, einmal nur mit \titlepage. Darauf hat doch der Anwender keinen Einfluss.


Du kannst

\titlepage
schreiben, oder

\frame{\titlepage}
oder

\begin{frame}{foo}{bar}
\titlepage
\end{frame}

_Alle_ drei Fälle muss man erfassen, wenn man einen Stil definiert und nicht weiß, was der User nun davon nehmen wird ... denn _der_ hat hier großen Einfluss

Herbert

AlexS1985
19-04-2011, 12:55
Servus Miteinander,

ich bin's mal wieder. Hauptsächlich ist dieser Thread an Herbert Voss gerichtet, doch es gibt auch Fragen, die nicht explizit an ihn gerichtet sind.

Es wird besser, und ich bin mit meiner Klasse schon weitergekommen. Dennoch möchte ich alles verstehen, was du machst.

Deshalb:

1. Was bedeuten die Ausdrücke, die ich fett markiert habe?

\renewcommand\titlegraphic[2][]{
\edef\inserttitlegraphic{
\ifx\relax#2\relax\else
\noexpand\includegraphics[height=\FU@image@height,
width=\the\numexpr\textwidth-\wd\FU@box\relax sp,
keepaspectratio=false,#1]{#2} \fi}}
\titlegraphic{}
}


2. Du benutzt den Befehl \begingroup. Warum hast du nicht { } genommen, bzw. gibt es einen gravierenden Unterschied zwischen beiden Ausdrücken?

3. Wozu dienen dir die Ausdrücke \vbox{} und \hbox{}, wenn du sie leer lässt?

4. Du wechselst zwischen \vspace und \vskip. Wirken die Befehle unterschiedlich?

5. Wozu verwendest du den Befehl \leavevmode in deiner Footline? Was ist standardmäßig und wieso verwendest du ihn nur in der Footline?

6. Gibt es einen Unterschied zwischen \par und \\?


7. Hast du vielleicht zu folgenden zwei Problemen eine Lösung?

http://www.mrunix.de/forums/showthread.php?t=70939

http://www.mrunix.de/forums/showthread.php?t=70898


An alle Helfer schon mal vorab vielen Dank.
Schöne Grüße,
Alex

rais
19-04-2011, 21:54
Moin moin,


1. Was bedeuten die Ausdrücke, die ich fett markiert habe?

\renewcommand\titlegraphic[2][]{

die zwei eckigen Klammern gehören eigentlich zum \renewcommand: \titlegraphic soll nach Umdefinition 2 Parameter kennen, von denen der erste optional (und nicht bzw. leer vorbelegt) ist.


\edef

ist afaik die Kurzform für \expandafter\def, findest Du im TeXbook; im TeXbyTopic fehlt es sicher auch nicht.


\ifx\relax#2\relax\else

\ifx vergleicht zwei Tokens miteinander, siehe TeXbyTopic.
#2 ist hier der zweite Parameter zu \titlegraphic. Sollte dieser Parameter leer sein, vergleicht \ifx hier \relax mit \relax (was wahr wäre), demnach der \else-Zweig gar nicht zur Ausführung käme ... anders gesagt: dieses


\ifx\relax#2\relax\else

kannst Du Dir übersetzen mit
``wenn Parameter #2 nicht leer''


\noexpand\includegraphics[height=\FU@image@height,

der \includegraphics-Befehl soll an dieser Stelle nicht expandiert werden


width=\the\numexpr\textwidth-\wd\FU@box\relax sp,

was \numexpr, \dimexpr und wie sie alle heißen genau macht, schaust Du besser im e-TeX-Manual nach (texdoc etex bzw. texdoc etex_man)


6. Gibt es einen Unterschied zwischen \par und \\?

ja: \\ beendet idR nur eine Zeile, \par beendet den ganzen Absatz.

MfG