Vorhandensein von Subsections in aktueller Section prüfen

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


McFraggle
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: So 13. Nov 2011, 14:51

Vorhandensein von Subsections in aktueller Section prüfen

Beitrag von McFraggle »

Hallo Forum! Ein offenbahr ungooglebares Problem lässt mich heute hier meinen ersten Post schreiben...

Problem: Ich muss feststellen, ob in der aktuellen Section Subsections vorhanden sind.

Kontext: Ich schreibe an einem Beamer-(Outer-)Theme, in dem eine vertikale Subsectionnavigation eingeblendet werden soll, allerdings nur dann wenn auch Subsections vorhanden sind.

Ich hoffe, jemand kann mir einen Hinweis oder eine Lösung geben... :)

guy.brush™
Forum-Century
Forum-Century
Beiträge: 185
Registriert: So 8. Aug 2010, 19:43
Wohnort: Earth

Beitrag von guy.brush™ »

Also mein Programm (Kile) hat eine Strukturübersicht, dort müsste das stehen. Ansonsten versuche doch einmal folgendes:

Gehe mit dem Cursor zu der Stelle, dessen section du meinst. Dann durchsuche das Dokument nach "subsections". Bei mir startet er dann i.d.R. an der Cursorstelle und nicht ganz am Anfang des Dokuments.

Ansonsten: Kopiere doch kurz das ganze chapter in irgendeine beliebige (am besten .txt oder neue .tex Datei) und durchsuche die Datei dort nach "subsection".
Arch Linux - KDE - TeXLive - Kile - \me = Advanced Newbie

Interessensschwerpunkte: Mathematik- und Formelsatz sowie mathematische (Mikro-)Typographie
Offenes Problem: negierte \xarrow-Pfeile beliebiger Länge

McFraggle
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: So 13. Nov 2011, 14:51

Sorry, Frage missverstanden...

Beitrag von McFraggle »

Ui! Konnte man die Frage so falsch verstehen?

Ich meine nicht, dass ich als Person dies feststellen muss. Vielmehr muss ich im Code überprüfen, ob die aktuelle Section eine oder mehrere Subsections besitzt. Also in Pseudo-Code so etwas:
if currentSection.hasSubsection then
   \meineSubsectionNavigation
else
   \kleinerAbstand
fi
Ich suche die hier angedeutete if-Abfrage.
Ich hoffe, es ist so etwas verständlicher. :)

Danke trotzdem und Grüße...

Hagbard Celine
Forum-Century
Forum-Century
Beiträge: 152
Registriert: Mi 23. Feb 2011, 22:13
Wohnort: Halle (Saale)

Beitrag von Hagbard Celine »

Du könntest section und subsection entsprechend umdefinieren:
\newif\ifsub

\let\tmpsection\section
\def\section{\subfalse\tmpsection}
\let\tmpsubsection\subsection
\def\subsection{\subtrue\tmpsubsection}
Mit \ifsub kannst du jetzt abfragen, ob es eine subsection gibt.
Je nach dem, was du vor hast, musst du evtl. auch noch die Sternvarianten umdefinieren.

Benutzeravatar
localghost
Forum-Meister
Forum-Meister
Beiträge: 826
Registriert: Di 8. Jul 2008, 15:40
Wohnort: Braunschweig

Re: Vorhandensein von Subsections in aktueller Section prüfe

Beitrag von localghost »

McFraggle hat geschrieben:[…] Problem: Ich muss feststellen, ob in der aktuellen Section Subsections vorhanden sind. […]
Das könnte auch über die Prüfung des Zählers »subsection« funktionieren. Wenn der ungleich Null ist, sind folglich Unterabschnitte vorhanden.


Thorsten
TeX und LaTeX, Fragen und Antworten – TeXwelt

¹ Es tut mir Leid. Meine Antworten sind begrenzt. Sie müssen die richtigen Fragen stellen.
² System: TeX Live 2024, TeXworks

McFraggle
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: So 13. Nov 2011, 14:51

Beitrag von McFraggle »

Lösung von localghost:
Ich denke das wird nicht funktionieren, da ich auch dann den Zählerwert 0 habe, wenn ich innerhalb einer Section VOR der ersten Subsection bin. Oder bin ich da falsch informiert?

Hagbard Celine:
Das sollte funktionieren! Sieht mir zwar etwas gebastelt aus, aber bislang ist mir kein Fall eingefallen, wo das knallen könnte. Auch wenn weitere Pakete den section-Befehl substituieren sollte das gehen... So oder so ist das übrigens ein lehrreiches Code-Schnippselchen für mich! Danke! ;) Ich werde es spätestens am WE ausprobieren.

Hagbard Celine
Forum-Century
Forum-Century
Beiträge: 152
Registriert: Mi 23. Feb 2011, 22:13
Wohnort: Halle (Saale)

Beitrag von Hagbard Celine »

Das Problem, das du bei localghosts Lösung hast, hast du bei meiner aber auch:
\documentclass{beamer}

\begin{document}
\newif\ifsub

\let\tmpsection\section
\def\section{\global\subfalse\tmpsection}
\let\tmpsubsection\subsection
\def\subsection{\global\subtrue\tmpsubsection}

\newcommand{\test}{\ifsub Ja!\else Nein!\fi}

\begin{frame}{}
\section{blub}
\test
\subsection{bla}
\test
\end{frame}
\end{document}
Der erste Test liefert ein "Nein!". Aber wenn ich dich richtig verstanden habe, möchtest du an dieser Stelle ein "Ja!".
Das wäre möglicherweise machbar, wenn man sich eines weiteren LaTeX-Durchlaufs bedient. Allerdings macht das die Sache nicht gerade einfacher.

PS: Ich habe noch zwei mal \global ergänzt (s.o.), damit es "sicherer" wird, sonst hast du Probleme bei der nächsten Folie.

McFraggle
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: So 13. Nov 2011, 14:51

Beitrag von McFraggle »

Hm, ja, Du hast mein Anliegen genau richtig verstanden. Und natürlich hast Du Recht, dass Deine Lösung genau den gleichen Mangel hat. Hatte wohl meinen Kopf nicht ganz bei der Sache... Das auf die Ergebnisse eines vorherigen Laufs zurückgegriffen werden musst, erscheint logisch. Ich habe schon im Code von Beamer nachgeschaut, werde aber nicht schlau daraus, wie es Beamer beim Aufbau der Subsection-Navigation schafft, zu jeder Section durch alle Subsections zu iterieren. Möglich muss es also sein.

Hat jemand eine weiterführende Idee oder versteht sogar die Logik hinter dem Aufbau der Beamer Subsection-Navigationen?

McFraggle
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: So 13. Nov 2011, 14:51

PUSH

Beitrag von McFraggle »

Wirklich niemand eine Idee??

Benutzeravatar
Sepp99
Forum-Meister
Forum-Meister
Beiträge: 1569
Registriert: So 29. Aug 2010, 17:26
Wohnort: Offenhausen/OÖ

Beitrag von Sepp99 »


Gesperrt