PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : beamer - Leerzeichen zwischen 'Figure/Table' und Doppelpunkt



alan-g
22-04-2013, 17:45
Hallo,

ich würde gerne Folien erstellen (beamer) und haben nun leider das Problem, dass ein Leerzeichen zwischen "Figure" bzw. "Table" und dem danachfolgenden Doppelpunkt eingefügt wird, also:

Figure : Bildunterschrift
bzw.
Table : Tabellenunterschrift

und nicht

Figure: Bildunterschrift
bzw.
Table: Tabellenunterschrift

Folgendes Minimalbeispiel erzeugt diesen Fehler bei mir:



\documentclass{beamer}
\usepackage{lmodern}

\begin{document}
\begin{frame}
\begin{table}
\begin{tabular}{cc}
a & b \\
c & d
\end{tabular}
\caption{Test}
\end{table}
\end{frame}
\end{document}


Ich verwende:
This is pdfTeX, Version 3.1415926-2.4-1.40.13 (TeX Live 2012/W32TeX) (format=pdflatex 2012.11.8)
und
Document Class: beamer 2013/01/04 3.26 A class for typesetting presentations

Ich habe auch gerade MikTeX installiert und dort tritt das Problem auch auf.

Weiß jemand, ob das ein Paketfehler ist und wenn ja wie man ihn beheben kann?

Vielen Dank und viele Grüße
Alan

PS: Im Anhang meine *.log-Datei und die "Fehler"-*.pdf-Datei.

rstuby
22-04-2013, 18:02
Keine Ahnung, wo das herkommt und wieso nicht nummeriert wird (mit beamer kenne ich mich nicht aus). Verhindern kannst du es so:

\documentclass{beamer}
\usepackage{lmodern}
\usepackage{caption}
\begin{document}
\begin{frame}
\begin{tabular}{cc}
a & b \\
c & d
\end{tabular}
\captionof{table}{Test}
\end{frame}
\end{document}
Eine Gleitumgebung brauchst du bei beamer ja nicht, die sind sowieso so umdefiniert, dass sie nicht gleiten.

sommerfee
22-04-2013, 19:31
Keine Ahnung, wo das herkommt

Das wurde wohl 'mal in Beamer geändert, früher war es nach meinem Wissensstand nicht so. (Da kann ich mich aber auch irren.)

In beamerbaseauxtemplates.sty findet sich folgende Zeile:


\defbeamertemplate*{caption label separator}{colon}{ : }

Also ist es explizit so gewollt, ein Leerzeichen vor und eines nach dem Doppelpunkt.


und wieso nicht nummeriert wird

Das Default-Beamer-Caption-Template nummeriert nicht, AFAIK ist das schon immer so gewesen. Für nummerierte Abbildungen und Tabellen gibt es das Template "numbered", was man bei Bedarf mit
\setbeamertemplate{caption}[numbered] auswählen kann.


Verhindern kannst du es so:

Aber nur aufgrund eines Bugs im caption-Paket bzw. der Tatsache, daß die Sache mit dem Leerzeichen vor dem Doppelpunkt an mir vorrüber gegangen ist. Denn ist eine Philosophie des caption-Paketes, daß die Default-Einstellungen der Dokumentenklasse nicht geändert werden (was hier aber der Fall ist).


Eine Gleitumgebung brauchst du bei beamer ja nicht, die sind sowieso so umdefiniert, dass sie nicht gleiten.

Und genau deswegen verstehe ich den Bonus bei der Verwendung von \captionof hier nicht.

Ich würde einfach alles so lassen und entweder ein eigenes Beamer-Template "caption label separator" via \defbeamertemplate definieren, oder aber
\usepackage[labelsep=colon]{caption} verwenden, um explizit "Doppelpunkt, gefolgt von einem Leerzeichen" einzustellen.

(Ich persönlich würde ersteres, also die Verwendung des Template-Mechanismus von Beamer, bevorzugen, denn wozu ein extra Paket, wenn Beamer dafür eigene Mechanismen zur Verfügung stellt, und dann sogar eines extra für den Trenner bei Abbildungs-/Tabellen-Beschriftungen?)

alan-g
23-04-2013, 10:03
Hallo sommerfee,

vielen Dank für den Hinweis mit der Datei beamerbaseauxtemplates.sty. Ich habe allerdings noch eine zweite Datei (beamerinnerthemedefault.sty
) gefunden, in der auch " : " definiert ist.



\defbeamertemplate*{caption label separator}{default}{ : }


Sollte man nun beides ändern?

sommerfee
25-04-2013, 07:12
Sollte man nun beides ändern?

Wieso beides ändern? Ich muß gestehen, diese Frage nicht zu verstehen, es gibt doch nur ein "caption label separator" Template!?

Ich hatte das einfach so gedacht:


\documentclass{beamer}
\usepackage{lmodern}

\defbeamertemplate*{caption label separator}{xxx}{: }
\setbeamertemplate{caption label separator}[xxx]

\begin{document}
\begin{frame}
\begin{table}
\begin{tabular}{cc}
a & b \\
c & d
\end{tabular}
\caption{Test}
\end{table}
\end{frame}
\end{document}


Wobei der Name "xxx" von mir sehr kreativ gewählt worden ist, da würde ich lieber einen sprechenden Namen verwenden ;)

alan-g
25-04-2013, 09:50
Wieso beides ändern? Ich muß gestehen, diese Frage nicht zu verstehen, es gibt doch nur ein "caption label separator" Template!?


Gemeint war das so: Das Leerzeichenproblem interpretiere ich so, dass das ein ungewollter Fehler ist. Deshalb würde ich die Originaldateien ändern und kein neues Template erstellen. Es gibt aber zwei Dateien:

(1) beamerbaseauxtemplates.sty
mit der Zeile 633
\defbeamertemplate*{caption label separator}{colon}{ : }

(2) beamerinnerthemedefault.sty
mit der Zeile 347
\defbeamertemplate*{caption label separator}{default}{ : }

Meine Frage zielte dahin ab, dass das hier 2x "falsch" gemacht wurde. Oder sehe ich hier etwas falsch?

sommerfee
26-04-2013, 05:34
Gemeint war das so: Das Leerzeichenproblem interpretiere ich so, dass das ein ungewollter Fehler ist.

Das sehe ich nicht so, das Leerzeichen steht explizit dort. Es ist hingegen ein ungewollter Fehler im caption-Paket, daß das Leerzeichen verschwindet, wenn das caption-Paket ohne "labelsep"-Option geladen wird; dies werde ich morgen korrigieren. [1]


Deshalb würde ich die Originaldateien ändern

Originaldateien zu ändern ist keine gute Idee. Man macht dadurch die Grundidee von (La)TeX zunichte, daß das Dokument auf jedem Rechner das gleiche Ergebnis liefert.


und kein neues Template erstellen.

Wieso nicht? Du möchtest ": " als Trenner, also ist es doch nur logisch, wenn du das deshalb in deinem Dokument explizit einstellst.

[1] https://sourceforge.net/p/latex-caption/tickets/10/