Seiteninhalt ersetzen durch Leerseiten mit Bemerkung

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Seiteninhalt ersetzen durch Leerseiten mit Bemerkung

von Johannes_B » Do 26. Sep 2013, 09:23

Besserwisser hat geschrieben:Wissenschaftliches Arbeiten ist generell Teil einer Promotion, denn der Dr.-Titel ist in Deutschland nicht einfach nur ein Lehrer-Titel, sondern ein wissenschaftlicher Grad. Ein winziger Teil davon sollte sein, dass man eine einfache Anleitung wie "Führen Sie zunächst sämtliche LaTeX-Läufe durch, die für die endgültige Papierfassung notwendig sind. Setzen Sie erst dann Option online und führen Sie danach einen weiteren LaTeX-Lauf durch." versteht und in der Lage ist, sich daran zu halten.
Hier muss ich Besserwisser zustimmen. Stell dir vor, du defnierst ein paar Makros zum Gebrauch innerhalb deiner Klasse. Dann musst/solltest du diese auch dokumentieren. Sie bleiben dem Nutzer sonst unbekannt und werden nicht genutzt. Es hat ja nicht grundlos (fast) jedes Paket für LaTeX eine (mehr oder weniger gute) Dokumentation.
Auf der anderen Seite muss diese Dokumentation auch gelesen werden, denn das gehört nun mal dazu. Im Labor drückt man ja auch nicht irgendwelche Knöpfe nach dem Trial-and-error-Prinzip.

Doktoranden, die es ablehnen sich hinreichend über ein System zu informieren, haben [...] nicht verdient.

Beste Grüße
Johannes


PS: Obige Anmerkungen gelten nicht für selbsterklärende Systeme, wie zum Beispiel Toaster (ohne Zusatzfunktionen).

von Besserwisser » Do 26. Sep 2013, 08:56

Für die Verwendung von \chapter musst Du ja bereits alternativen Code in die Klasse einbauen. Dasselbe Problem gibt es generell für alle Befehle, die etwas in die aux-Datei (oder eine andere Datei) schreiben, außer dies geschieht \immediate, was bei der aux-Datei normalerweise nur \include selbst macht. Es sind diverse weitere denkbar. Wenn Du diese vorab alle in der Klasse behandelst, ist das ok. Wenn Du aber eine vergisst und der Anwender das nicht bemerkt …

Die \include-Idee, bei der man nur im finalen Lauf etwas nicht ausführt, halte ich deshalb für keine schlechte Idee. Dort kann man eindeutig dokumentieren, wie man es richtig macht. Der Anwender kann sich dann nicht mehr darauf rausreden, er habe nicht wissen können, wie es richtig geht.

Das Auslagern in Dateien und die \include-Anweisung selbst kann man übrigens sogar verstecken, indem man beispielsweise intern mit filecontents arbeitet, wie das in http://texwelt.de/wissen/fragen/1815/zi ... rlage/1833 gezeigt wird. Das Beispiel müsste man natürlich um einiges erweitern, damit es alles tut, was man braucht, aber der Ansatz ist schon einmal gut.

Theoretisch könnte man sogar mit Hilfe des rerunfilecheck-Pakets und \write 18 in der Klasse dafür sorgen, dass genügend LaTeX-Läufe durchgeführt werden, bevor ein finaler Lauf mit ausgenommenen Dateien stattfindet. Das funktioniert dann zwar nur, wenn shell escapes aktiviert sind, aber darauf kann man den Anwender mit der Nase stoßen, so dass gar keine online-Fassung erzeugt, sondern nur ein Fehler gemeldet wird, wenn er das versäumt.
Aufgrund gewisser Gegebenheiten klappt eben das mit den Include-Dateien für ganze Kapitel nicht in der Art und Weise, wie ich meine Klasse implementiert habe
Das verstehe ich nicht, muss es Dir aber so glauben.
Natürlich könnte das sicherlich mit einer Anleitung jeder richtig machen, sind ja alles Leute, die promovieren wollen, aber eigentlich wollen die nicht in LaTeX promovieren.
Wissenschaftliches Arbeiten ist generell Teil einer Promotion, denn der Dr.-Titel ist in Deutschland nicht einfach nur ein Lehrer-Titel, sondern ein wissenschaftlicher Grad. Ein winziger Teil davon sollte sein, dass man eine einfache Anleitung wie "Führen Sie zunächst sämtliche LaTeX-Läufe durch, die für die endgültige Papierfassung notwendig sind. Setzen Sie erst dann Option online und führen Sie danach einen weiteren LaTeX-Lauf durch." versteht und in der Lage ist, sich daran zu halten. Aber wie gesagt, das lässt sich auch automatisieren, wahlweise mit (La)TeX selbst, mit Lua(La)TeX, TeXLua oder in einer beliebigen, anderen Programmiersprache.

Wenn Du aber überzeugt bist, dass Deine Lösung, die bisher möglicherweise nicht allgemein funktioniert und bei der der Anwender ggf. selbst darauf kommen muss, ob sich funktioniert oder nicht, aus Anwendersicht trotzdem besser ist, dann verstehe ich nicht, wo genau Dein Problem liegt. Vielleicht kannst Du Deine Frage dann noch einmal konkretisieren oder falls die Frage beantwortet ist, den Status entsprechend anpassen?

von MichaelB » Mi 25. Sep 2013, 18:59

Aufgrund gewisser Gegebenheiten klappt eben das mit den Include-Dateien für ganze Kapitel nicht in der Art und Weise, wie ich meine Klasse implementiert habe, ansonsten wäre ein Teil nicht automatisiert, und dann könnte man die Klasse ganz lassen. Natürlich könnte das sicherlich mit einer Anleitung jeder richtig machen, sind ja alles Leute, die promovieren wollen, aber eigentlich wollen die nicht in LaTeX promovieren. Meiner Ansicht nach sollte ein Tool so einfach wie möglich sein.

Der Unterschied im Aufwand beim Implementieren in der Klasse ist relativ egal (beide Lösungen liegen ja jetzt vor), darum ging es mir nicht, aber für den Anwender ist die Lösung so definitiv weniger aufwändig bzw. weniger anfällig für Flüchtigkeitsfehler in der (wenn einmal veröffentlicht nicht mehr revidierbaren) Online-Version durch zu wenige LaTeX-Durchläufe.

Ich habe ja bereits gesagt, dass die Lösung leider nicht so allgemein ist wie ich es mir gewünscht hätte, die andere Vorgeschlagene Lösung ist sicher allgemeiner, erfüllt aber nicht meinen "Komfort-Anspruch" aus Anwendersicht.

Was Du mit "alternativem Code" meinst habe ich leider nicht verstanden, bei meiner Lösung schreibt der Anwender eigentlich nur noch die Inhalt in Dateien, die als Vorlage vorliegen, bzw. eigene leere Dateien für die "normalen" Kapitel. Den Code für das Unterdrücken habe ich ja in der Klasse.

von Besserwisser » Di 17. Sep 2013, 17:26

Mit den ganzen Zusätzen, die bei Dir gemacht werden müssen, damit es funktioniert, sehe ich ehrlich gesagt nicht mehr, dass die (um die \nofiles-Zeile ergänzte) Lösung von "Noch so einer" aufwändiger wäre. Eigentlich sollte jeder Anfänger in der Lage sein, genügend LaTeX-Läufe durchzuführen und dann eine Zeile auszukommentieren und noch einen LaTeX-Lauf zu machen. Wenn man den Code außerdem in einem Paket verbirgt und das \PaperPagetrue von einer Option abhängig macht und dem Anwender sagt, dass er nur für den finalen Lauf beispielsweise die Option "finalonline" setzen muss, dann ist das ein Kinderspiel.

Auch die alternative Idee, den Leuten zu sagen, dass die optionalen Teile in eine eigene Dateien sollen, und dann mit einem modifizierten \include zu arbeiten, das für nicht geladene Dateien entsprechende Dummy-Seiten erzeugt, wäre für den Anwender sicher leicht zu verstehen, jedenfalls leichter als dass er ständig alternativen Code schreiben und ggf. dabei auf alle möglichen Seiteneffekte achten muss.

von MichaelB » Di 17. Sep 2013, 15:41

Hallo nochmal,

nach einigen weiteren Überlegungen habe ich für meine spezielle Problemstellung das Problem mit dem Eintrag ins Inhaltsverzeichnis nun lösen können und möchte die (zugegebenermaßen spezielle) Lösung nicht vorenthalten.

Der Lebenslauf wird bei mir sowieso schon mit einem speziellen Befehl eingefügt, der einmal die Kapitelüberschrift und dann den Inhalt als Optionen bekommt. Soll der Lebenslauf nicht angezeigt werden, dann wird zusätzlich zum bereits bekannten Code von oben nach dem Setzen von
\setboolean{supresspagecontent}{true}
folgender Befehl ausgeführt.
\AtBeginShipoutNext{%
                        \AtBeginShipoutUpperLeft{\phantomsection\addcontentsline{toc}{chapter}{#2}}%
                        }
Danach folgt dann das einfügen des Inhalts, der aufgrund der gesetzten Variable supresspagecontent aber nicht gesetzt sondern durch den die entsprechende Bemerkung ersetzt wird. Die \phnatomsection ist notwendig, damit auch der Link in der PDF auf die richtige Seite zeigt. Wie gesagt, funktioniert bei mir, da der zu ersetzende Inhalt immer über einen selbst definierten Befehl übergeben wird, in dessen Definition ich das aufnehmen kann.

Wie "Besserwisser" schon angemerkt hat, hat die Lösung einige unschönen Nebeneffekte, die jedoch in meinem Anwendungsszenario nicht auftreten sollten und daher kein Rolle spielen. Falls noch jemand eine bessere und allgemeiner funktionierende Lösung hat wäre ich sehr interessiert, diese kennenzulernen und dann auch bei mir umzusetzen.

Danke und viele Grüße,
Michael[/code]

von MichaelB » Di 17. Sep 2013, 12:26

Hallo,

sorry für die Verzögerung, da kam mir der Urlaub dazwischen.

Du hast recht, dass prinzipiell diese Probleme auftreten. Es ist sogar noch eine Ecke schlimmer, anstatt nur der Vakat-Seite fehlt auch die letzte Seite des vorangegangenen Kapitels und wird ersetzt (zumindest bei meinem Test, wo das vorangegangene Kapitel, die Biblatex-Bibliopraphie, nur eine Seite hatte und diese dann fehlt).

Hättest Du einen Vorschlag, wie man die Probleme oder das ursprüngliche Problem anderweitig lösen kann?

Allerdings kann ich das Vakatseiten-Problem generell ausschließen, da ich entsprechend selbst ein \cleardoublepage for den entsprechenden Passagen einfügen kann, bevor das Ersetzen der Seiteninhalte aktiv wird.

Da es in meinem speziellen Fall zum Einen um die Widmung und die Danksagung (beides noch vor dem Inhaltsverzeichnis und üblicherweise ohne Querverweise darauf) geht, treten hier die Probleme nicht auf.
Beim wissenschaftlichen Lebenslauf, dem letzten der drei betroffenen "Kapitel", ganz hinten (im backmatter nach der Bibliography) könnte es evtl. gewünscht sein, diesen auch im Inhaltsverzeichnis zu haben. Hatte ich bisher als \chapter*, aber da tritt tatsächlich das Inhaltsverzeichnisproblem zu Tage, wenn man den Lebenslauf darin haben möchte. Daher wäre ich hier über Lösungsmöglichkeiten oder auch einen grundsätzlich anderen (besseren?) Ansatz wie meinen über die ShipoutBox dankbar.

Viele Grüße,
Michael

von Besserwisser » Sa 31. Aug 2013, 12:55

Undschön an der Lösung ist, dass wenn am Anfang des unterdrückten Textes eine Vakatseite eingefügt wird, beispielsweise von \chapter, diese Vakatseite bereits dem unterdrückten Text zugeordnet wird. Außerdem sind Labels aller Art, die im unterdrückten Text vorkommen nicht mehr definiert. Dadurch bekommt man für Querverweise von außerhalb des unterdrückten Textes nicht mehr den Querverweis angezeigt, sondern die üblichen Fragezeichen. In den Verzeichnissen (auch im Literaturverzeichnis)( fehlen die entsprechenden Einträge ebenfalls. Das wiederum kann dazu führen, dass ein Verzeichnis kürzer wird, was zu einem anderen Seitenumbruch führen könnte.

Folgendes Beispiel (Code mangels vollständigen Minimalbeispiels einfach nur zusammenkopiert statt mit Befehlen oder – besser – Umgebungen zu arbeiten) zeigt, was ich meine:
\documentclass{scrbook}
\usepackage{selinput}
\SelectInputMappings{
  adieresis={ä},
  germandbls={ß}
}
\usepackage{atbegshi}
\usepackage{ifthen}
\usepackage{blindtext}
\newboolean{supresspagecontent}
\setboolean{supresspagecontent}{false}
\newcommand{\supresspagecontentnotice}{\relax}

\AtBeginShipout{%
  \ifthenelse{\boolean{supresspagecontent}}{%
    \setbox\AtBeginShipoutBox=\hbox{\ } %setze leeren Text statt des ursprünglichen Seiteninhalts
    \AtBeginShipoutAddToBox{%
      \begin{minipage}{\textwidth}%
        \centering%
        \supresspagecontentnotice%
      \end{minipage}%
    }%
  }%
  {\relax}%
}

\begin{document}

\tableofcontents

\clearpage
\renewcommand{\supresspagecontentnotice}{\rmfamily\normalsize Die Danksagung wurde aus Gründen des Datenschutzes in der Online-Version entfernt.\\[10pt]%
  The acknowledgment was removed in the online version for privacy reasons.}%
\setboolean{supresspagecontent}{false}% HIER UMSCHALTEN
\addchap{Personal Information}
\label{pers.info}
\blindtext
\clearpage
\renewcommand{\supresspagecontentnotice}{\relax}%
\setboolean{supresspagecontent}{false}

\chapter{More Chapters}

See also the information on page~\pageref{pers.info}

\makeatletter
\@whilenum \value{chapter}<11\do {\blinddocument}
\makeatother

\end{document}
Wenn Du das so laufen lässt, bekommst Du 48 Seiten mit aufgelösten Querverweisen. Wenn Du hingegen bei HIER UMSCHALTEN true statt false einsetztt, dann sind es nach zwei bis drei LaTeX-Läufen nur noch 46 Seiten mit unaufgelöstem Querverweis. Der unaufgelöste Querverweis kann in Extremfällen (nicht im Beispiel) auch zu einem anderen Absatz- und Seitenumbruch führen.

von MichaelB » Sa 31. Aug 2013, 11:33

Hallo nochmal, hallo Ulrike,

das mit den ganzen Seiten steht im Titel sowie in meiner Anfrage, sorry dass das nicht gut genug rauskam. Es ging natürlich immer nur um das ersetzen ganzer Seiten, allerdings eben unabhängig davon, wie der konkrete Inhalt der Seite aufgebaut ist (Text, floats, Gleichungen,...).

Und Ulrike hat mir Ihrer Antwort natürlich vollkommen recht.

Anstatt den Ersatztext mit "\AtBeginShipoutAddToBox" dem Hintergund hinzuzufügen, hätte ich vermutlich (oder?) auch gleich den entsprechenden Text in die ShipoutBox schreiben können...

@Ulrike: Hat eines der Vorgehen Vor-/Nachteile? Ist das erste Mal, dass ich an den Boxen herummanipuliere...

Im Beispiel oben wird der Text auf Höhe der Kopfzeile gesetzt, was ich persönlich für die Bemerkung gut finde, Mitte der Seite wäre sicherlich aber auch eine Alternative.

Danke und Grüße,
Michael

von u_fischer » Fr 30. Aug 2013, 18:02

Noch so einer hat geschrieben:Kannst Du das mal an einem vollständigen Beispiel zeigen. Mir ist nämlich absolut nicht klar, wie dabei der Inhalt selbst nicht aber stattdessen Freiraum in genau der richtigen Größe ausgegeben wird.
Michael hat dich in die Irre geführt: Er will nicht beliebigen Inhalt sondern immer nur ganze Seiten ersetzen, und das ist ja ziemlich trivial, weil man dann nur die Box beim \shipout ändern muss.

von Noch so einer » Fr 30. Aug 2013, 17:12

Kannst Du das mal an einem vollständigen Beispiel zeigen. Mir ist nämlich absolut nicht klar, wie dabei der Inhalt selbst nicht aber stattdessen Freiraum in genau der richtigen Größe ausgegeben wird.

Nach oben