Anzeige:
Ergebnis 1 bis 11 von 11

Thema: Reintext Seitenanzahl berechnen

  1. #1
    Registrierter Benutzer
    Registriert seit
    16.09.2005
    Beiträge
    35

    Reintext Seitenanzahl berechnen

    Servus,

    folgendes Problem. Ich möchte die Anzahl der Seiten berechnen die den Reintext in meiner Arbeit ausmachen. Dazu habe ich mir ein label auf die letzte und die erste Reintextseite gesetzt. Nun will ich eigentlich ganz einfach \pageref{lastpage} minus \pageref{firstpage} rechnen um die seitenzahl rauszubekommen. Offensichtlich ist das garnich so einfach. Ich hab mir erstmal so behelfen wollen mit dieser Struktur:

    Code:
    \newcount\added
    \added=\pageref{lastpage}
    \newcount\myval \myval=-\pageref{firstpage}
    \advance\added by \myval
    added = \the\added
    Die Ausgabe von \the\added soll die Zahl liefern. Leider funktionert das ganze nicht wenn ich die pagerefs als vermeintliche Zahlenwerte einsetze. Wenn ich richtige numerische Zahlen verwende gehts.

    Nun die Frage, wie kann ich das ganze mit den pagerefs realisieren?

    Bin für jeden Vorschlag dankbar.

  2. #2
    Registrierter Benutzer Avatar von localghost
    Registriert seit
    01.11.2006
    Ort
    Braunschweig
    Beiträge
    3.413

    Question Paket einsetzen

    Kann man das nicht mit dem Paket calc erledigen? Alles was Du brauchst, steht bestimmt in der Dokumentation.
    TeX und LaTeX, Fragen und Antworten – TeXwelt

    ¹ Es tut mir Leid. Meine Antworten sind begrenzt. Sie müssen die richtigen Fragen stellen.
    ² System: openSUSE 13.1 (Linux 3.11.10), TeX Live 2013, TeXworks 0.5 (r1351)

  3. #3
    Registrierter Benutzer
    Registriert seit
    16.09.2005
    Beiträge
    35
    Mit calc würde ich es so machen:

    Code:
    \newcounter{reintext} 
    \setcounter{reintext}{\pageref{lastpage}}
    \setcounter{reintext}{(\value{reintext})-\value{\pageref{firstpage}}}
    
    %Ausgabe
    \thereintext
    Nur leider funktioniert das nicht richtig weil LaTex die pagerefs nicht numerisch auswertet in dieser Rechnung und somit keine Subktraktion durchführen kann. Das ist das generelle Problem, was auch bei anderen Methoden zum tragen kommt. Ähnliches Spiel hatte ich mit dem fp Package.

  4. #4
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.862
    Zitat Zitat von ice8878 Beitrag anzeigen
    Mit calc würde ich es so machen:

    Code:
    \newcounter{reintext} 
    \setcounter{reintext}{\pageref{lastpage}}
    \setcounter{reintext}{(\value{reintext})-\value{\pageref{firstpage}}}
    
    %Ausgabe
    \thereintext
    Nur leider funktioniert das nicht richtig weil LaTex die pagerefs nicht numerisch auswertet in dieser Rechnung und somit keine Subktraktion durchführen kann. Das ist das generelle Problem, was auch bei anderen Methoden zum tragen kommt. Ähnliches Spiel hatte ich mit dem fp Package.
    kannst Du Dir nicht einfach zwei Zähler dafür definieren? Also auf den entsprechenden Seiten \setcounter{firstpage}{\value{page}} bzw. \setcounter{lastpage}{\value{page}} ? Dann gibt es zmindest keine Konvertierprobleme...
    Allerdings solltest Du so die Differenz wohl erst am Ende (sprich: wenn lastpage bekannt ist) ausrechnen und in eine Datei schreiben, wenn Du den Wert weiter vorne im Text auslesen willst.
    MfG,
    Rainer
    There's nothing a good whack with a hammer won't fix!

  5. #5
    Registrierter Benutzer
    Registriert seit
    16.09.2005
    Beiträge
    35
    k, also das rechnen haut jetzt hin - allerdings nur am Ende des Textes. Habs jetzt so gemacht:

    Code:
    \newcounter{firstpage}
    \setcounter{firstpage}{\value{page}}
    
    [...]
    
    \newcounter{lastpage}
    \setcounter{lastpage}{\value{page}}
    
    \newcounter{reintext} 
    \setcounter{reintext}{(\thelastpage)-(\thefirstpage)}
    \thereintext
    Wie kann ich in eine Datei ausgeben und dann vorne wieder einlesen?

  6. #6
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.862
    Zitat Zitat von ice8878 Beitrag anzeigen
    Wie kann ich in eine Datei ausgeben und dann vorne wieder einlesen?
    Mit
    Code:
     \immediate\openout0=\jobname.rtx\immediate\write0{\arabic{reintext}}\closeout0
    am Dokumentende könntest Du den Zählerinhalt in eine Datei foo.rtx schreiben (wenn Dein Dokument denn foo.tex heißt) und mit
    Code:
    \renewcommand{\thereintext}{\input{\jobname.rtx}}
    könntest Du \thereintext so umbiegen, daß der Dateiinhalt auch ausgelesen wird, d.h. dann solltest Du auch irgendwo im Text auf \thereintext zugreifen können.
    Im ersten LaTeX-Lauf sollte es dann noch eine Meldung "No file: foo.rtx" geben, aber damit ist zu rechnen, wenn man aus einer Datei etwas auslesen will, die man hinterher erst anlegt.
    Schlimmstenfalls ist "0" bereits offen, dann kannst Du einfach ne andere ausprobieren (\openout, \write und \closeout) -- afaik gibt es 16 davon.
    Hmm, besser wäre vllt \newwrite\bla \openout\bla=\jobname.rtx... etc.
    MfG,
    Rainer
    There's nothing a good whack with a hammer won't fix!

  7. #7
    Registrierter Benutzer
    Registriert seit
    27.12.2006
    Beiträge
    12
    Da ich gerade ein ähnliches Problem hatte bei dem die Treffsicherheit von \page leider nicht ausreicht, hier nochmal ein Vorschlag für eine "saubere" Lösung. Angeblich stammt sie von Heiko Oberdiek, man kann also davon ausgehen dass man das tatsächlich so macht. Das wiederum macht mir LaTeX in dieser Beziehung (was saubere Programmierfähigkeit angeht) aber auch nicht sympatischer

    http://www.mrunix.de/forums/showthre...d=1#post224276

  8. #8
    Registrierter Benutzer
    Registriert seit
    16.09.2005
    Beiträge
    35
    Soo, kurz zu meiner Lösung die endlich den gewünschten Erfolg bescherte:

    Diesen Code habe ich auf der ersten Reintext Seite gesetzt:

    Code:
    \newcounter{firstpage}
    \setcounter{firstpage}{\value{page}}
    Dieser Code steht auf der letzten Seite des Reintextes:

    Code:
    %Berechnung der letzten Reintext Seite, die folgenden Kommandos sollten am Ende der Arbeit stehen
    \newcounter{lastpage}
    \setcounter{lastpage}{\value{page}}
    %
    \newcounter{reintext} 
    \setcounter{reintext}{(\thelastpage)-(\thefirstpage)}
    
    %Wert der berechneten Reintext Seiten in die Datei Jobname.tc schreiben (wird in der Einführung wieder eingelesen)
    \newwrite\reintextfile
    \immediate\openout\reintextfile=\jobname.tc\relax
    \immediate\write\reintextfile{\arabic{reintext}}
    \immediate\closeout\reintextfile
    Da ich die Seitenzahl am Anfang der Arbeit brauchte, im Autorenreferat sozusagen, habe ich folgenden Code an der jener Stelle eingefügt:

    Code:
    \makeatletter\@input{\jobname.tc}\makeatother
    Alles zusammen lieferte mir exakt die Zahl des Reintextes exkl. aller anderen "Rahmenseiten"

    Danke an alle, die zur Lösung beigetragen haben.

  9. #9
    Registrierter Benutzer
    Registriert seit
    03.01.2007
    Beiträge
    93
    Hallo,


    habe eine ähnliche Frage.

    Ist es möglich, dass Latex die Anzahl des wirklich reinen Textes, also ohne Abbildungen und Tabellen ausgibt??

  10. #10
    Registrierter Benutzer Avatar von daswaldhorn
    Registriert seit
    31.07.2003
    Ort
    Voerde
    Beiträge
    888
    Hallo,

    möglicherweise nützt dir das Paket endfloat was. Damit kannst du deine Bilder und Tabellen ans Ende schieben, und dann wie oben die reinen Textseiten berechnen.

    Grüße, Carsten

  11. #11
    Registrierter Benutzer
    Registriert seit
    03.01.2007
    Beiträge
    93
    guter Hinweis, danke. Allerdings hat endfloat ein Problem mit Umlauten und scharfen s in der Caption. Gibt es da noch ne Lösung

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •