\thepage gibt falsche Seite aus

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


eFCiKay
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Di 26. Jan 2010, 00:04

\thepage gibt falsche Seite aus

Beitrag von eFCiKay »

Hallo,

ganz kleine Frage hätte ich nur:
kann mir jemand sagen, warum in dem Minimalbeispiel in der großen Schrift nicht
Dies ist die Seite: 2
steht? :D
Und klar: ich würd auch gern wissen, wie ich dem Problem abhelfen kann ;)
\documentclass[a4paper]{scrreprt}

\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}

\usepackage[demo]{graphicx}

\begin{document}

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.   

Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.   

Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.   
Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.   

Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.   

At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur  

Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. 

Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. 
\LARGE Dies ist die Seite: \thepage \normalsize

Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.  

Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.  

Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.    

Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. 

\begin{figure}[t]
\centering
\includegraphics[height=10cm]{Test}
\caption{Test}
\end{figure}

\end{document}
edit: ich habe das Beispiel noch verkleinern können.

eFCiKay
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Di 26. Jan 2010, 00:04

Beitrag von eFCiKay »

Ich konnte mir soeben selbst helfen:

anstatt
\thepage
oder
\pagemark
verwende ich nun:
\label{p1}\pageref{p1}
Quelle: http://www.latex-project.org/guides/lb2-ch4.pdf :)

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Um noch die Frage nach der Ursache zu beantworten: Wie hier schon häufiger erwähnt wurde, hat LaTeX einen asynchronen Seitenumbruch. Das liegt u. a. daran, dass immer komplette Absätze umbrochen und in eine sogenannte vertikale Liste (so etwas ähnliches wie eine vertikale Box) geschrieben werden. Ist diese Liste größer als eine Seite, so wird aus dem oberen Teil dieser Box und einigen zusätzlichen Teilen, wie dem Seitenkopf, dem Seitenfuß und Fußnoten eine neue Seite gebaut und ausgegeben. Der Rest der Box bildet die Grundlage für die neue Box.

Natürlich müssen bereits beim Umbruch des Absatzes, also nicht erst beim Seitenumbruch alle Makros (Also auch \thepage) aufgelöst werden, da diese ja einen Einfluss auf den Umbruch haben können. Der Boxrest kann auch nicht neu umbrochen werden, weil TeX bereits beim Absatzumbruch diverse Informationen, die es für die Ausgabe der Box nicht mehr benötigt, wegwirft und auch kein Rückbezug zum Quelltext mehr besteht (davon abgesehen, dass TeX keine Möglichkeit bietet im Quelltext rückwärts zu gehen).

Damit wird \thepage also immer zu Ausgabe der Seitenzahl expandiert, auf der der Absatz umbrochen wird und nicht auf der der Absatz ausgegeben wird. Hat man einen Absatz, der über 100 Seiten umbrochen wird, so sind alle \thepage-Ausgaben auf diesen 100 Seiten gleich.

BTW: Das ist auch der Grund, warum ich immer und immer wieder schreibe, dass man im Seitenkopf \thesection etc. nicht direkt verwenden soll. Dort gibt es nämlich das quasi umgekehrte Problem: der Zähler kann bereits größer geworden sein, wenn der Kopf zusammengebaut wird. Stattdessen sollte man hier immer über den Mark-Mechanismus von TeX gehen, der genau dieses Problem löst (vorausgesetzt, man verwendet nicht \protect innerhalb der Mark-Anweisung).

Und das ist auch der Grund, warum auf einer Seite etwas wie \ifodd\value{page} nicht funktioniert (wohl aber im Kopf) und KOMA-Script deshalb \ifthispageodd anbietet, das wie \label/\pageref min. einen LaTeX-Lauf zusätzlich benötigt.

PS: Auch wenn diverse Rechtschreibkorrekturen »umbrochen« als Fehler markieren: Das ist genau richtig.

Antworten