\underline in Caption tut nich < LaTeX < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 18:06 Mo 17.09.2007 | Autor: | Schroen |
Ich möchte in LaTeX Figures darstellen und mit einer entsprechenden Caption versehen. In der Kurzfassung der Caption möchte ich "$\underline u$" benutzen.
Zum Beispiel:
1: | \begin{figure}
| 2: | \caption[Kurzfassung: Die Variable $\underline u$.]{Langfassung: In dieser Abbildung sehen wir die Variable $\underline u$.}
| 3: | ...
| 4: | \end{figure}
|
Das Problem ist jedoch, dass der Compiler das nicht richtig übersetzen kann. Nach zweimaligem Kompilieren werden mir Fehler angezeigt.
Genau genommen gibt es in der .lof-Datei ein Problem: "\underline u" wird durch "\relax $\@@underline {\hbox {u}}\mathsurround \z@ $\relax" ersetzt.
Das führt zu zwei Fehlermeldungen "missing $ inserted" an der Stelle hinter "\relax" (beide Fehlermedungen sind identisch).
Das Problem tritt _nicht_ auf wenn:
(1) ... ich in der Kurzfassung der Caption kein "\underline" benutze. In der Langfassung funktioniert es also.
(2) ... ich statt "\underline" den Befehl "\overline" benutze. In der .lof-Datei steht dann ganz normal "\overline u".
(3) ... ich nach dem ersten Mal kompilieren in der .lof-Datei den langen "\relax blabla..." String durch "\underline" von Hand ersetze. Nach dem zweiten Mal übersetzen wird das Dokument korrekt erzeugt. (Allerdings wird dann die .lof-Datei wieder ersetzt.)
Meine Frage ist, wie ich es verhindern kann, dass in der .lof-Datei der Befehl "\underline" ersetzt wird.
Gruß
/Schrön
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo!
So direkt kann ich dein Problem nicht nachvollziehen. Ich habe mal
1: | \begin{figure}
| 2: | \centering
| 3: | \caption {bla $\underline u$}
| 4: | \includegraphics[width=.5\textwidth]{Datenpunkte}
| 5: | \label{fig:Datenpunkte}
| 6: | \end{figure} |
ausprobiert, das kompilliert bei mir ohne Probleme. (Abgesehen davon, daß caption ÜBER der Grafik verhindert, daß die Breite richtig gesetzt wird - aber Bildbeschriftungen kommen eigentlich immer drunter...)
Kannst du vielleicht mal ein Minimalbeispiel angeben, also ein Dokument, das nur deine ganzen packages und dann eben dein Bild enthält? So ein einzelnes Stück Code kann eben bei anderen Leuten keine Probleme verursachen, weil die andere Packages etc. benutzen.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 12:48 Di 18.09.2007 | Autor: | Schroen |
Ich benutze die folgenden Packages:
1: | \usepackage[latin1]{inputenc}
| 2: | \usepackage{ISASPackages/DietrichsMatheMacros}
| 3: | \usepackage{SchreiterAbk}
| 4: | \usepackage{tikz}
| 5: | \usepackage{pgflibrarysnakes}
| 6: | \usepackage{pgflibraryshapes}
| 7: | \usepackage{cancel} |
Ich benutze außerdem .sty-Dateien, die die folgenden Packages benutzen:
1: | \RequirePackage{stmaryrd} % additional math symbols
| 2: | \RequirePackage{mathtools}
| 3: | \RequirePackage{ifthen}
| 4: | \mathtoolsset{showonlyrefs}
| 5: | \RequirePackage{bm} % correct bold symbols, like \bm
| 6: | \RequirePackage{amsmath}
| 7: | \RequirePackage{amsfonts}
| 8: | \RequirePackage{amssymb}
| 9: | \RequirePackage{mathrsfs}
| 10: | \RequirePackage{dsfont} % double stroke symbols like IR
| 11: | \RequirePackage[single]{accents} % own accents |
In meinem Quelltext benutze ich ein Figure wie zum Beispiel
1: | \begin{figure}
| 2: | \caption[Das hier geht nicht: $\underline u$]{Das hier geht $\underline u$}
| 3: | (1) Aber dieses Beispiel kompiliert nicht.
| 4: | \end{figure}
| 5: |
| 6: | \begin{figure}
| 7: | \caption[Das geht]{Das geht, weil in der Kurzfassung kein $\underline u$ vorkommt.}
| 8: | (2) Dieses Beispiel tut.
| 9: | \end{figure}
| 10: |
| 11: | \begin{figure}
| 12: | \caption{Kurzfassung und Langfassung sind die selben. Beide enthalten $\underline u$}
| 13: | (3) Dieses Beispiel tut nicht.
| 14: | \end{figure} |
Einmal kompilieren geht. Aber das bringt noch nichts. Beim zweiten Mal kompilieren werden Fehler angezeigt. Hier der Ausschnitt aus der .lof-Datei (zur besseren Lesbarkeit habe ich Zeilenumbrüche eingefügt):
1: | \contentsline {figure}{\numberline {A.9}
| 2: | {\ignorespaces Das hier geht nicht: $\relax $\@@underline {\hbox {u}}\mathsurround \z@ $\relax $}}
| 3: | {45}{figure.A.9}
| 4: | \contentsline {figure}{\numberline {A.10}
| 5: | {\ignorespaces Das geht}}
| 6: | {45}{figure.A.10}
| 7: | \contentsline {figure}{\numberline {A.11}
| 8: | {\ignorespaces Kurzfassung und Langfassung sind die selben. Beide enthalten $\relax $\@@underline {\hbox {u}}\mathsurround \z@ $\relax $}}
| 9: | {45}{figure.A.11} |
Interessant sind hier die Zeilen 2, 5 bzw. 8.
Grüße
/Schrön
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:18 Di 18.09.2007 | Autor: | Schroen |
Ich habe noch etwas herum experimentiert.
Hier ist ein Minimalbeispiel, das den Fehler zeigt:
1: | \documentclass{article}
| 2: | \begin{document}
| 3: |
| 4: | \begin{figure}
| 5: | \caption[$\underline u$]{foobar}
| 6: | \end{figure}
| 7: |
| 8: | \listoffigures % wichtig, damit die .lof-Datei generiert wird
| 9: |
| 10: | \end{document} |
Wie aber in einem anderen Artikel in diesem Diskussionsbaum erklärt wurde, lässt sich das Problem mit dem Befehl \protect lösen.
Grüße
/Schrön
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 13:00 Di 18.09.2007 | Autor: | rainerS |
Hallo!
Erst einmal: \underline ist ein fragiles Kommando, du musst es in moving arguments wie denen von \caption mit \protect schützen.
Zweitens musst du es nicht im Mathemodus tun, das macht \underline automatisch.
Also:
1: | \begin{figure}
| 2: | \caption[Kurzfassung: Die Variable \protect\underline{u}.]{Langfassung: In dieser Abbildung sehen wir die Variable \protect\underline{u}.}
| 3: | ...
| 4: | \end{figure} |
Wenn du längere Texte unterstreichen willst, ist vielleicht das ulem-Paket etwas für dich.
Viele Grüße
Rainer
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:21 Di 18.09.2007 | Autor: | Schroen |
Hallo!
Vielen Dank für eure Hilfe.
Mit \protect tut es.
Ich hatte auch ein ähnliches Problem mit bei TikZ, Beamer und Ifthen. Das ist damit auch gelöst.
Grüße
/Schrön
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:27 Di 18.09.2007 | Autor: | rainerS |
Nachtrag: es gibt doch einen Unterschied zwischen \underline{u} und $\underline{u}$: Das Kommando erkennt, ob es im Text- oder Mathemodus benutzt wird und setzt sein Argument entsprechend.
Viele Grüße
Rainer
|
|
|
|