goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Direktlinks:
Zuletzt aktive Beiträge
Unbeantwortete Beiträge
[Erweitert]

Forenstatistik:
Beiträge: 97668
Top-Poster: Johannes_B (5052)

Wir begrüßen unseren neuesten Benutzer F.S 89.

Links:


Mit Unterstützung von DANTE e.V.: Deutschsprachige Anwendervereinigung TeX. Danke den Mitgliedern!





Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

protect befehl bei \section bzw. wie schütze ich \section?

 

aasaa00
Forum-Anfänger
Forum-Anfänger

Beiträge: 38
Anmeldedatum: 01.03.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2019, 15:06     Titel: protect befehl bei \section bzw. wie schütze ich \section?
  Antworten mit Zitat      
Hallo, meine Arbeit besteht aus mehreren Kapiteln, die ich durch mehrere \include-Befehle in meine Hauptdatei eingebaut habe.
Nun erhalte ich bei einem dieser Kapitel die Fehlermeldung "tex capacity exceeded, sorry [input stack size=50000] --\protect ->\noexpand \protect". Ich benutze XeLaTeX (wegen der Verwendung mehrerer Sprachen) und konnte den Fehler eingrenzen: Anscheinend ist hängt es mit dem \section bzw- \subsection Befehl zusammen; Wenn ich \section bzw- \subsection weglasse, werden keine Fehler angezeigt und das Programm erstellt die pdf-Datei.

Ich habe jetzt mehrere Stunden recherchiert und weiß, dass "\section" ein fragiler Befehl ist. Ich verstehe nicht, wie ich es schützen kann, z.B.:

\protect\section{Überschrift XYZ}

hat nicht die Lösung gebracht; das Dokument bricht ab und zeigt mir den gleichen Fehler an. Könnt Ihr mir (immernoch ein Latex-Anfänger) sagen, wie ich diesen \section Befehl schütze?

Ich habe es auch mit dem \usepackage{MakeRobust} und \MakeRobustCommand\section{Überschrift XYZ} versucht - hier wird der Text als Überschrift zwar angezeigt, aber leider nicht formatiert wie die anderen Überschriften mit \section.

Ich habe auf die Erstellung eines MWE verzichtet, weil ich nicht weiß - so verstehe ich die Fehlermeldung - wie die hohe Anzahl der \section-Befehle dargestellt werden kann.

Ich würde mich daher freuen, wenn mir sagen kann, wie ich den \section Befehl schützen kann und was ich beim protect-Befehl falsch mache.
Private Nachricht senden Benutzer-Profile anzeigen

Bartman
Forum-Meister
Forum-Meister


Beiträge: 1664
Anmeldedatum: 16.07.09
Wohnort: Hessische Provinz
Version: ---
     Beitrag Verfasst am: 04.04.2019, 16:29     Titel:
  Antworten mit Zitat      
Vielleicht liegt es am erforderlichen oder optionalen Argument eines Gliederungsbefehls. Näheres lässt sich ohne ein möglichst minimales Beispiel schwer ergründen.
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2019, 16:48     Titel:
  Antworten mit Zitat      
Man muss fragile Befehle nur in bestimmten Situationen, beispielsweise innerhalb eines moving arguments schützen. \section müsste also nur geschützt werden, wenn es beispielsweise selbst im Argument eines \section-Befehls stehen würde. Die reine Anzahl an Befehlen hat dagegen eher keinen Einfluss (außer eventuell, wenn Du eine sehr, sehr große Zahl an \section-Befehlen nacheinander stehen hast, ohne Text dazwischen).

Daher: Mach ein InfoMinimalbeispiel nach der verlinkten Anleitung. Dann sollte sich der Fehler eingrenzen und das Problem lösen lassen.

aasaa00
Forum-Anfänger
Forum-Anfänger

Beiträge: 38
Anmeldedatum: 01.03.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2019, 16:52     Titel:
  Antworten mit Zitat      
Wie gesagt, ich habe zig Kapitel mit dem Befehl "\section" in meinem Dokument, aber in einem chapter wird er mir als Fehler angelastet ("tex capacity exceeded, sorry [input stack size=50000] --\protect ->\noexpand \protect").

Obwohl ich weiß, dass das MWE (mit \section-Einstellungen) hier funktioniert, wird es vielleicht jetzt deutlicher:

Code • Öffne in Overleaf


\RequirePackage[patch]{kvoptions}
\documentclass[openany]{book}

\usepackage[a4paper,left=2.5cm,right=2.5cm,top=2.5cm,bottom=2cm]{geometry}

\usepackage{setspace}
\onehalfspace
%\usepackage[style=authoryear, backend=biber]{biblatex}
% [style=iest] authoryear=Angenedt 2002
% Festlegung Art der Zitierung - Havardmethode: Abkuerzung Autor + Jahr
%\bibliographystyle{alphadin}

\makeatletter %Abstände Text zu section
\renewcommand\section{\@startsection
   {section
}{1}{0mm}%         % name, ebene, einzug
   {4\baselineskip}%            % vor-abstand
   {2\baselineskip}%            % nach-abstand
   {\bfseries\Large}%      % layout
   }
\makeatother
\makeatletter %Abstände Text zu subsection
\renewcommand\subsection{\@startsection
   {subsection
}{2}{0mm}%      % name, ebene, einzug
   {4\baselineskip}%            % vor-abstand
   {2\baselineskip}%            % nach-abstand
   {\bfseries\large}%           % layout
   }
\makeatother
\makeatletter %Abstände Text zu subsection
\renewcommand\subsubsection{\@startsection
   {subsubsection
}{2}{0mm}%      % name, ebene, einzug
   {3\baselineskip}%            % vor-abstand
   {1\baselineskip}%            % nach-abstand
   {\bfseries\large}%           % layout
   }
\makeatother

\makeatletter% siehe De-TeX-FAQ
\g@addto@macro\quotation{\setstretch{1}\noindent\ignorespaces}
\makeatother% siehe \makeatletter


\renewenvironment{quote}
{\small\list{}{\rightmargin=0.9cm \leftmargin=0.9cm}%
\item\relax}
{\endlist}


\begin{document}


\chapter{Die Briefe}


\section{Brief 1}

Das ist ein Brief...

\end{document}

 


In einem Unterkapitel ist der \section Befehl genauso angegeben und wird mir als Fehler angegeben, während in den anderen Unterkapiteln derselbe Befehl funktioniert.
Daher meine generelle Frage: Wie kann ich den zerbrechlichen \section-Befehl schützen?
Private Nachricht senden Benutzer-Profile anzeigen

aasaa00
Forum-Anfänger
Forum-Anfänger

Beiträge: 38
Anmeldedatum: 01.03.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2019, 17:10     Titel:
  Antworten mit Zitat      
Anonymous hat Folgendes geschrieben:
Man muss fragile Befehle nur in bestimmten Situationen, beispielsweise innerhalb eines moving arguments schützen. \section müsste also nur geschützt werden, wenn es beispielsweise selbst im Argument eines \section-Befehls stehen würde. Die reine Anzahl an Befehlen hat dagegen eher keinen Einfluss (außer eventuell, wenn Du eine sehr, sehr große Zahl an \section-Befehlen nacheinander stehen hast, ohne Text dazwischen).

Daher: Mach ein InfoMinimalbeispiel nach der verlinkten Anleitung. Dann sollte sich der Fehler eingrenzen und das Problem lösen lassen.


Danke für die Erklärung. Damit scheidet die reine Anzahl als Grund aus, da nach dem \section Befehl stets Text folgt. Ich verstehe dann aber nicht die Fehlermeldung: ("tex capacity exceeded, sorry [input stack size=50000] --\protect ->\noexpand \protect"). Ich weiß, dass man das \section in meinem MWE eigentlich nicht schützen bräuchte; aber das Beispiel ist (beinahe) originalgetreu wiedergegeben und der \section-Befehl wird mir als Fehler angezeigt: Ich frage mich daher wie man den \section Befehl in meinem Beispiel schützen könnte?
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2019, 17:35     Titel:
  Antworten mit Zitat      
Höchstwahrscheinlich tut es nichts zur Sache, aber mit dem Paket setspace ist onehalfspacing eine Umgebung, die obendrein zusätzlich (zu der eh impliziten, wenn es denn als Umgebung genutzt wird) noch eine Gruppe öffnet. Daher verursacht der Aufruf von \onehalfspacing, der schon einen kleinen Syntax-Abuse beinhaltet, dann auch eine nicht geschlossene Gruppe:
Code • Öffne in Overleaf
(\end occurred inside a group at level 1)

### semi simple group (level 1) entered at line 7 (\begingroup)
### bottom level

Wahrscheinlich möchtest Du eigenlich den Befehl \onehalfspacing (mit ing). Der Produziert diese Probleme nämlich nicht.

Ansonsten wird mir zumindest aus dem bis jetzt gezeigten Code absolut nicht klar, wie das Problem bei Dir auftritt. Ich bin mir auch nicht ganz sicher, ob Dein Problem überhaupt ist, dass \section nicht geschützt ist, da es bei normalem Gebrauch eigentlich nicht geschützt werden müsste. Deine Fehlermeldung ist ja auch nur eine gute alte Endlosschleife, die TeX dann irgendwann aus Speicherproblemen abbrechen muss.

Der LaTeX Kern hat \def\@unexpandable@protect{\noexpand\protect\noexpand} und nutzt diese Definition für \protect z.B. in \protected@edef. Eventuell ist da etwas in die falsche Ecke gerutscht. Was kann ich Dir ohne InfoMinimalbeispiel, das den Fehler reproduziert, aber beim besten Willen nicht sagen. Nach meiner Erfahrung ist es aber bei solchen Fehlern fast immer möglich, mit etwas Arbeit auch große Dokumente auf ein einfaches Minimalbeispiel herunterzubrechen, das das Problem reproduziert. Die Halbierungssuche, bei der Du immer die Hälfte Deines Dokuments löschst/auskommentierst und überprüfst, ob der Fehler noch da ist, kann auch sehr große Dokument recht schnell herunterbrechen.

Wann genau tritt der Fehler denn auf? Bei allen \sections? Nur bei einer? Geht der Fehler weg, wenn Du das vorheriger Kapitel auskommentierst? Hast Du vielleicht am Ende des Kapitels vor dem problematischen Befehl besonderen Code stehen?

aasaa00
Forum-Anfänger
Forum-Anfänger

Beiträge: 38
Anmeldedatum: 01.03.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2019, 22:40     Titel:
  Antworten mit Zitat      
Danke für den Hinweis. Zum Problem: Ich habe mehrere Chapter, die ich durch \include in das Hauptdokument eingebunden sind. Beim letzten Chapter ist die genannte Fehlermeldung plötzlich aufgeteilt, obwohl es sich um copy+paste handelt. In dem genannten Chapter steht wirklich nur:

Code • Öffne in Overleaf


\chapter{Die Briefe des ...}


\section{Brief XY...}

Text xyz

 


So beginne ich auch alle anderen Chapter und da ist es kein Fehler - nur in diesem Chapter gibt es eine Fehlermeldung. Wenn ich aber in dem besagten Chapter den Befehl \section lösche, verschwindet die Fehlermeldung und das Dokument wird fehlerlos (also ohne Fehlermeldung) erstellt.
Es muss also von diesem \section-Befehl herkommen. Ich habe jetzt den Problem-chapter vor den funktionierenden Chaptern gestellt, aber die Fehlermeldung bleibt, d.h. es kann nicht von einem Chapter kommen, der vorher auftritt;
Ich gehe das Latex-Dokument durch und versuche ein MWE zu erstellen; aber ich verstehe nicht, wie ein identischer Befehl in unterschiedlichen Kapiteln mit der gleichen Umgebung in einem Chapter eine Fehlermeldung verursacht, aber in den anderen einwandfrei funktioniert.
Private Nachricht senden Benutzer-Profile anzeigen

aasaa00
Forum-Anfänger
Forum-Anfänger

Beiträge: 38
Anmeldedatum: 01.03.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2019, 23:27     Titel:
  Antworten mit Zitat      
Manchmal konzentriert man sich auf einen Punkt zu stark und vergisst das offensichtliche:

Die Endlosschleife wurde nicht durch \section, sondern durch einen \index-Befehl in \chapter ausgelöst. Da sich nur in diesem Kapitel der Name einer Person auffindet, hatte ich den \index-Befehl in die Kapitelüberschrift eingefügt. Seitdem ich diesen Befehl gelöscht habe, klappt alles wunderbar. Wenn man den \index-Befehl in einem \section-Befehl setzt, wird dieser Fehler komischerweise nicht angezeigt.
Sei's drum, Problem gelöst und vielen Dank für die hilfreichen Beiträge!
Private Nachricht senden Benutzer-Profile anzeigen

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de


  Datenschutzerklärung | Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2019 goLaTeX.de