Hallo zusammen,
um meine Hypothesen automatisch durchzählen zu lassen, habe ich ein kleines Skript programmiert. Es funktioniert auch wunderbar, das Problem liegt an der Formatierung. Ich möchte gerne den gesamten Absatz der Hypothese eingerückt erscheinen lassen. Dies habe ich mit dem Attribut \leftmargin20pt
nach \list
versucht. Allerdings wird der Befehl nicht beachtet, der Rand bleibt unverändert. Wende ich genau denselben Code in der \teaser-Umgebung an, funktioniert er einwandfrei (s. ebenfalls Minimalbeispiel).
Anmerkung: Im Minimalbeispiel sind Teile des \hypothesen-Skripts nicht enthalten, da der Code eigentlich komplexer ist. Aufgrund verschiedener if-Abfragen kann ich auch nicht die Theorem-Umgebung benutzen.
Es wäre wirklich super, wenn jemand von euch eine Idee hätte. Ich möchte es für meine Diplomarbeit verwenden und die Abgabe rückt stetig näher...
Vielen Dank
fredo77
\documentclass[a4paper,10pt]{scrreprt} \usepackage[latin1]{inputenc} \usepackage[ngerman]{babel} \usepackage[T1]{fontenc} \usepackage{blindtext} % Anfang Skript für Hypothese \newcounter{hypothesenzahl} \newcommand{\hypothese}[1]% % Hier folgt die entscheidende Zeile: {{{\list{}{\rightmargin0pt\leftmargin20pt}\item\relax\bfseries % Hypothese \thehypothesenzahl: % \stepcounter{hypothesenzahl}% }\textit{#1} \endlist}} % Ende Hypothese % Teaser für Zitat zum Anfang eines Kapitels % s. http://forum.de.selfhtml.org/archiv/2005/12/t120634/ % 1. Parameter: Zitattext, 2.: Quelle, hintendran: großer Abstand zum Folgetext \newcommand{\teaser}[2]% {{\list{}{\rightmargin0pt\leftmargin200pt}\item\relax\textit{#1}\endlist% \begin{flushright}#2\end{flushright}\list{}{}\item\relax\endlist}} % Ende Teaser \begin{document} \hypothese{\blindtext} \teaser{\blindtext}{Eine kleine Zeile.} \end{document}
Müll rein, Müll raus
Korrekte LaTeX-Syntax wäre
\begin{list}{...}{...}...\end{list}
statt{\list{...}{...}...\endlist}
. Wenn Du das machst, wird Dir auch der Fehler, den Du gemacht hast, gemeldet. Wenn Du ihn trotzdem nicht findest, melde Dich nochmal.Bei der Gelegenheit solltest Du Dir dann auch noch korrekte LaTeX-Syntax für Längenzuweisungen angewöhnen, also die Verwendung von
\setlength
. Auch das ist in diversen Fällen von Vorteil und deshalb ist es sinnvoll das einfach grundsätzlich zu machen. Früher gab es ja mal das Argument Tokenzahl oder Geschwindigkeit. Bei heutigen TeX-Distributionen ist Token-Speicher normalerweise kein Problem und der Geschwindigkeitsunterschied ist lachhaft.Und um das Ganze jetzt doch noch on-topic zu machen: Warum verwendest Du nicht einfach die
addmargin-
Umgebung. Die ist genau für solche Dinge gemacht.Sehr gerne würde ich es mit der \list-Umgebung machen...
... aber da kommt in der Tat eine Fehlermeldung, die ich nicht verstehe. Sie sagt, es fehle eine geschweifte Klammer:
Dem ist aber nicht so. Alle geöffneten Klammern sind korrekt geschlossen.
Gleiches passiert, wenn ich die
addmargin
-Umgebung benutzen möchte. Demnach liegt das Problem irgendwie an der Verwendung von\begin{...}
und\end{...}
in dem Skript.Vielen Dank an der Stelle für deine tollen Hinweise!
Du klammerst falsch
Du kannst nicht eine Gruppe öffnen und darin eine Gruppe öffnen und dann erst die äußere und dann die innere Gruppe schließen. Genau das machst Du aber (hier mal mit anderer Formatierung):
Wenn man
\begin{list}...\end{list}
verwendet, bemerkt LaTeX diesen Fehler und meldet ihn in der angegebenen Weise.Korrekt wäre wohl:
Oder eben gleich richtig:
Und dann gibt es bei KOMA-Script auch noch
\dictum
, so dass man\teaser
normalerweise nicht brauchen dürfte. Wenn es wirklich am Kapitelanfang verwendet werden soll, kann man das auch gleich noch mit\setchapterpreamble
kombinieren. Das liest Du aber bitte in der Anleitung nach.Ich verstehe
das ist wirklich super! Da wäre ich selbst nie drauf gekommen. Vielen Dank für diese ausführliche Antwort, Markus. Ich habe auch gleich die Idee mit dem
\label
übernommen. Allerdings wird bei mir immer die Abschnittsnummerierung ausgegeben, wenn ich mit\ref
auf eine Hypothese zugreifen möchte. Ich versuche noch, ein Minimalbeispiel hierfür zu bauen, das den Fehler repliziert. Gleichzeitig käme dann noch die Schwierigkeit hinzu, dass ich einen zusammengesetzten Counter habe (also bspw. "Hypothese 1.a").Ich habe
\teaser
vorerst beibehalten, habe allerdings nun die Längenangaben mit\setlength
gesetzt :-) Werde mich noch in den Abschnitt über\dictum
des scrguide einlesen.\label bezieht sich auf
den Zähler, der in der aktuellen Gruppe zuletzt (bezogen auf die
\label-
Anweisung) mit\refstepcounter
erhöht wurde. LaTeX-Umgebungen stellen ebenfalls eine Gruppe dar. Auch in Anweisungen können sich Gruppen verstecken. So steckt das das Argument von\text...
(also beispielsweise\textbf
) etwa in einer impliziten Gruppe.Man muss also etwas aufpassen, wo man ein
\label
unterbringt, damit es sich auf den richtigen Zähler bezieht.Ich habe einen zusammengesetzen Zähler
In der Tat, es kommt ziemlich darauf an, wo man
\label
bei der Verwendung im Fließtext benutzt. Es kommt aber auch darauf an, wo geschweifte Klammern und welche Umgebungen im Skript benutzt werden. Herzlichen Dank für deine super Hilfe, Markus!Habe nun das Problem mit
\label
im Griff, allerdings gibt es beim Verweis darauf mit\ref
noch andere Probleme. Dies liegt einmal daran, dass ich eine zusammengesetzten Zähler verwende, zum anderen an der Benutzung der Hypothesen in unterschiedlichen Abschnitten.Zum ersten Problem: Bei Verwendung eines zusammengesetzten Zählers (bspw. "Hypothese 1.a") soll er beim Aufruf über
\ref
"1.a" zurückgeben und nicht alleine "1" (wie im Minimalbeispiel). Wie könnte ich das Problem lösen?Das zweite Problem zeigt sich leider nicht in dem hier eingefügten Minimalbeispiel. Es besteht darin, dass beim Aufruf einer Hypothese mit
\ref
in einem neuen Abschnitt "1" zurückgegeben wird. Die Nummerierung allerdings funktioniert, es wird also die nächsthöhere Zahl ausgegeben (bspw. "Hypothese 2"), wenn die Hypothese generiert wird.Vielleicht ist das alles auch zu komplex und ich muss doch auf
theorem
zurückgreifen. Allerdings kann ich hier keine Unter-Hypothesen generieren, die nicht aneinander hängen und durch Fließtext getrennt sind.\thehypothesenzahlin umdefinieren
\ref
verwendet das, was in\the
<Zähler> steht und setzt noch das davor, was in\p@
<Zähler> steht. Näheres ist source2e zu entnehmen oder einer der Definition von\theenumi
bis\theenumiv
und\p@enumii
bis\p@enumiv
(z. B. in scrsource.pdf oder classes.dtx) für das, was bei Referenzen auf geschachtelteenumerate-
Umgebungen herauskommen soll.Eventuell habe ich dazu im Forum auch schon etwas erklärt. Ansonsten sprengt das eigentlich den Rahmen hier, da es eine Einführung in den LaTeX-Kern und nicht in KOMA-Script bedeutet.
Außerdem solltest Du in der De-TeX-FAQ (siehe Grundlagenliteratur) nachschauen, wie man Zähler an andere Zähler koppelt. Wenn ich Deine Frage richtig verstanden habe, solltest Du den Hypothesenzähler an
section
koppeln.Vielen Dank
für die tolle Hilfe bis hierher. Du hast recht, das geht wohl über den Rahmen hinaus. Ich werde die von dir angegebenen Quellen durchsehen. Auf jeden Fall komme ich sehr gerne hierher zurück, wenn ich mal wieder etwas zu KOMA-Script suche :)
Wie man in den Wald hineinruft ...
Der Spruch gilt nicht nur für diejenigen, die sich wie die Axt im Wald benehmen. Wer sich ein wenig Mühe bei den Fragen gibt und nicht erwartet, dass man ihm den Hinten hinterherträgt, kann diese Regel eben auch zum Vorteil nutzen.
Wenn ich im Augenblick nicht so knapp an Zeit wäre, hätte ich auch noch etwas genauer geantwortet, statt nur auf weitere Literatur zu verweisen.
Da stimme ich dir zu
... auch der Fragende sollte sich die größte Mühe bei der Formulierung und Genauigkeit der Formulierung geben.
Denn man kann nur das von anderen erwarten, was man ihnen selbst gibt. Das gilt im Umfeld des Internets, in dem man sich nicht einmal zu Gesicht bekommt, einmal mehr als im Face-to-Face-Kontakt.
Viele Grüße und vielen Dank!
fredo77
Jetzt hab ich's
Mir fehlte die Verkopplung des äußeren Zählers
hypothesenzahl
mit dem innerenhypothesenzahlin
durch\def\thehypothesenzahlin{\thehypothesenzahl.\alph{hypothesenzahlin}}
Beim Aufruf einer Hypothese mit dem
\ref
-Befehl wird nun der volle Zähler ausgegeben und nicht nur allein der innerehypothesenzahlin
.Nun funktioniert's und ich bin glücklich :)
Oder eben
(ungetestet):
wenn außer in Querverweisen der innere Zähler ohne den äußeren ausgegeben werden soll. Wegen des
@
im Befehlsname siehe ggf.\makeatletter
in der De-TeX-FAQ (Link in den Grundlageninfos).