goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


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

Forenstatistik:
Beiträge: 100224
Top-Poster: Johannes_B (5063)

Wir begrüßen unseren neuesten Benutzer TextersLabor.

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

Tabelle in Abhängigkeit der Anzahl von Sections/Subsections

 

rimesime
Forum-Newbie
Forum-Newbie

Beiträge: 4
Anmeldedatum: 18.04.09
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 18.04.2009, 15:09     Titel: Tabelle in Abhängigkeit der Anzahl von Sections/Subsections
  Antworten mit Zitat      
Hallo,

ich habe bisher leider überhaupt nichts finden können zu meinem Problem. Ich gebe zu es ist etwas eher Exotisches.

Ich bin gerade dabei eine Vorlage zu erstellen. Auf dem Dokument sollen mehrere Sections und Subsections zu finden sein. Ich möchte auf der ersten Seite oben eine Tabelle bauen, die mir alle Sections/Subsections horizontal Auflistet. Darunter kommt dann noch jeweils ein leeres Kästchen.

Zur Veranschaulichung:

---------------
|1 |2a|2b |3 |
---------------
| _| _ | _ | _|


Section 1
Section 2
Subsection a
Subsection b
Section 3

Ein weiteres Problem ist, dass ich Section 2 natürlich nicht erwähnt haben möchte, da diese Section Untersections besitzt, und nur diese relevant sind.

Btw, ich benutze Latex noch nicht allzu lange. Habe zwar schon einige Dokumente geschrieben, aber bei manchen Feinheiten haperts eben manchmal. Bin aber jeglicher Art von Tipps dankbar...

MfG
Simon
Private Nachricht senden Benutzer-Profile anzeigen

phi
Moderator
Moderator

Beiträge: 420
Anmeldedatum: 06.02.09
Wohnort: ---
Version: MacTeX 2012
     Beitrag Verfasst am: 19.04.2009, 19:59     Titel:
  Antworten mit Zitat      
Hallo,

hier ist ein Ansatz.
Code
\documentclass{article}

\makeatletter
\newcommand*{\tabulartoc@contentsline}[3]{\tabulartoc@parse{#1}#2\@nil}
\newcommand*{\tabulartoc@parse}{}
\def\tabulartoc@parse#1#2#3#4\@nil{\csname tabulartoc@#1\endcsname{#3
}}
\newcommand*{\tabulartoc@lastsection}{}
\newcommand*{\tabulartoc@section
}[1]{%
  \ifx\tabulartoc@lastsection\@empty\else
  \tabulartoc@cell{\tabulartoc@lastsection}%
  \tabulartoc@separator
  \fi
  \renewcommand*{\tabulartoc@lastsection}{#1}%
}
\newcommand*{\tabulartoc@subsection}[1]{%
  \tabulartoc@cell{#1}%
  \tabulartoc@separator
  \renewcommand*{\tabulartoc@lastsection}{}%
}
\newcommand*{\tabulartoc@subsubsection}[1]{}
\newlength{\tabulartoc@cellwidth
}
\setlength{\tabulartoc@cellwidth}{8mm}
\newlength{\tabulartoc@cellheight}
\setlength{\tabulartoc@cellheight}{12pt}
\newlength{\tabulartoc@celldepth}
\setlength{\tabulartoc@celldepth}{3pt}
\newcommand*{\tabulartoc@cell}[1]{\makebox[\tabulartoc@cellwidth]{#1}}
\newcommand*{\tabulartoc@separator}{%
  \@tempdima\tabulartoc@cellheight
  \advance\@tempdima2\tabulartoc@celldepth
  \vrule\@height\tabulartoc@cellheight\@depth\@tempdima
}
\newsavebox{\tabulartoc@box}
\newcommand*{\tabulartoc}{%
  \begingroup
  \makeatletter
  \catcode`\^^M=9 %
  \let\contentsline\tabulartoc@contentsline
  \begin{lrbox}{\tabulartoc@box}%
    \input{\jobname.toc}%
    \ifx\tabulartoc@lastsection\@empty\else
    \tabulartoc@cell{\tabulartoc@lastsection}%
    \fi
    \kern\z@
  \end{lrbox}%
  \setlength{\fboxsep}{0pt}%
  \fbox{%
    \vbox{%
      \hbox{\usebox{\tabulartoc@box}}
      \@tempdima\tabulartoc@cellheight
      \advance\@tempdima\tabulartoc@celldepth
      \vskip-\@tempdima
      \hrule
      \advance\@tempdima-0.4pt %
      \vskip\@tempdima
    }%
  }%
  \endgroup
}
\makeatother


\begin{document}

\tabulartoc
\tableofcontents

\section{}
\section{}
\subsection{}
\subsection{}
\section{}

\end{document}
Private Nachricht senden Benutzer-Profile anzeigen

rimesime
Forum-Newbie
Forum-Newbie

Beiträge: 4
Anmeldedatum: 18.04.09
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 19.04.2009, 21:43     Titel:
  Antworten mit Zitat      
hallo,

wow, das sieht schon mal vielversprechend aus, versteh zwar höchstens die hälfte, bin aber dabei mich durchzukämpfen, wills ja auch verstehn...

also dein vorschlag funktioniert soweit super, bis auf die tatsache, dass die toc datei wohl erst erzeugt wird wenn man das inhaltsverzeichnis anzeigt. da es sich bei meiner vorlage jedoch um ein übungsblatt für die uni handelt, brauche ich hier natürlich kein inhaltsverzeichnis. gibt es vlt eine möglichkeit die toc datei zu erzeugen, ohne das inhaltsverzeichnis auch anzuzeigen?

soweit aber schon mal einen großen dank!
Private Nachricht senden Benutzer-Profile anzeigen

phi
Moderator
Moderator

Beiträge: 420
Anmeldedatum: 06.02.09
Wohnort: ---
Version: MacTeX 2012
     Beitrag Verfasst am: 19.04.2009, 22:26     Titel:
  Antworten mit Zitat      
Wenn du kein Inhaltsverzeichnis haben willst, füge am Ende von \tabulartoc folgendes ein (ungetestet):
Code
\if@filesw
  \newwrite\tf@toc
  \immediate\openout\tf@toc\jobname.toc\relax
\fi
\@nobreakfalse
Private Nachricht senden Benutzer-Profile anzeigen

rimesime
Forum-Newbie
Forum-Newbie

Beiträge: 4
Anmeldedatum: 18.04.09
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 20.04.2009, 05:39     Titel:
  Antworten mit Zitat      
hey,

funktioniert super, genauso wie ich es haben möchte!

allerdings gibts noch ein klitzekleines manko, nämlich dass ein fehler beim ersten durchlaufen geschmissen wird da noch keine toc datei vorhanden ist. benutze led (für mich als quasi noch neuling eben vorteilhaft), falls das von bedeutung ist.

Fehler:
Zitat:
! LaTeX Error: File ´test.toc´ not found. Type X to quit or <RETURN> to proceed, or enter new name. (Default extension: toc)

wenn man enter drückt läufts auch dementsprechend richtig durch sodass nach nochmaligem durchlauf auch die gewünschte tabelle erscheint.

könnte man latex irgendwie sagen dass dieser error gleich übersprungen werden soll?
Private Nachricht senden Benutzer-Profile anzeigen

phi
Moderator
Moderator

Beiträge: 420
Anmeldedatum: 06.02.09
Wohnort: ---
Version: MacTeX 2012
     Beitrag Verfasst am: 20.04.2009, 08:40     Titel:
  Antworten mit Zitat      
Ersetze dazu \input durch \@input.
Private Nachricht senden Benutzer-Profile anzeigen

KOMA
TeX-Entwickler
TeX-Entwickler


Beiträge: 2637
Anmeldedatum: 04.07.08
Wohnort: ---
Version: Ich bin hier nicht mehr zu erreichen!
     Beitrag Verfasst am: 20.04.2009, 08:58     Titel:
  Antworten mit Zitat      
Wenn Du tatsächlich kein Inhaltsverzeichnis haben willst, dann geht das ganze eigentlich noch viel einfacher:
Code
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{blindtext}

\makeatletter
\renewcommand*{\tableofcontents}{%
  \begingroup
    \raggedright\@starttoc{toc}%
    \par
  \endgroup
}
\newcommand*{\tab@entry}{}
\renewcommand*{\l@section
}[2]{%
    \renewcommand{\numberline}[1]{\xdef\tab@entry{##1}}%
    \sbox\@tempboxa{#1}%
    \begin{tabular}{|c|}\hline \tab@entry\\\hline \\\hline\end{tabular}%
    \kern-.5\arrayrulewidth\hskip 0pt
}
% Falls nicht alle Ebenen aufgeführt werden sollen,
% kann bei den folgenden Zeilen \l@section ab
% dem entsprechenden Eintrag einfach durch
% \@gobbletwo ersetzt werden:
\let\l@subsection\l@section
\let\l@subsubsection\l@section
\let\l@paragraph\l@section
\let\l@subparagraph\l@section
\makeatother

\begin{document}
\tableofcontents
\blinddocument
\blinddocument
\end{document}

Wie man am Beispiel sieht, funktioniert dabei sogar der Umbruch, falls die Tabelle zu breit wird.

Der eigentliche Trick bei der Sache ist, dass man das erste Argument \l@section etc. gar nicht komplett haben will, sondern nur die Nummer. Die Nummer wird üblicherweise per \numberline gesetzt. Also wird diese Anweisung so umdefiniert, dass sie ihr Argument expandiert und zur (globalen) Definition von \tab@entry verwendet. Damit das Argument von \l@section überhaupt verarbeitet wird, wird es zur Definition einer Box verwendet. Diese Box wird jedoch selbst gar nicht verwendet, sie muss nur gefüllt aber nicht genutzt werden.
_________________

goLaTeX-Knigge (mit Themen Minimalbeispiel und So stellst Du Deine Frage richtig)
DE-TeX-FAQ, UK-FAQ, l2kurz, l2tabu, CTAN, The TeX Catalogue
KOMA-Script
Ich bin hier nicht mehr zu erreichen!

Zuletzt bearbeitet von KOMA am 20.04.2009, 09:11, insgesamt 6-mal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen

KOMA
TeX-Entwickler
TeX-Entwickler


Beiträge: 2637
Anmeldedatum: 04.07.08
Wohnort: ---
Version: Ich bin hier nicht mehr zu erreichen!
     Beitrag Verfasst am: 20.04.2009, 09:01     Titel:
  Antworten mit Zitat      
phi hat Folgendes geschrieben:
Ersetze dazu \input durch \@input.

Ich würde eher zu
Code
\InputIfFileExists{\jobname.toc}{}{}
raten. Wenn schon eine Anwenderanweisung existiert, würde ich die auch verwenden.
_________________

goLaTeX-Knigge (mit Themen Minimalbeispiel und So stellst Du Deine Frage richtig)
DE-TeX-FAQ, UK-FAQ, l2kurz, l2tabu, CTAN, The TeX Catalogue
KOMA-Script
Ich bin hier nicht mehr zu erreichen!
Private Nachricht senden Benutzer-Profile anzeigen

rimesime
Forum-Newbie
Forum-Newbie

Beiträge: 4
Anmeldedatum: 18.04.09
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 22.04.2009, 10:35     Titel:
  Antworten mit Zitat      
So,

wollte mich nochmal bedanken für die schönen und ziemlich flotten (Komplett-)Lösungen...

Habe mich für Phi's Variante entschieden, weil ich da mehr meine kleinen Wünsche reineditieren konnte.

Hier mal der (Minimal-)Code den ich jetzt benutze, vielleicht interessiert es ja noch andere:
Code
\documentclass{article}

%%%%%%%%%%%%%%%%%%% ANFANG CODE FÜR PACKAGES %%%%%%%%%%%%%%%%%%
\usepackage[ngerman]{babel}

%%%%%%%%%%%%%%%%% ANFANG CODE FÜR EIGENE BEFEHLE %%%%%%%%%%%%%%
\renewcommand{\thesection}{\arabic{section}.}
\renewcommand{\thesubsection}{\alph{subsection})}
\newcommand{\aufgabe}{\section{\hspace{-0.4cm}Aufgabe}}
\newcommand{\teil}{\subsection{}}
\newcommand{\teilohnetoc}{
         \stepcounter{subsection
}
         \subsection*{\thesubsection}
}

%%%%%%%%%%%%%%%%%%% ANFANG CODE FÜR TABLETOC %%%%%%%%%%%%%%%%%%
\makeatletter
\newcommand*{\tabulartoc@contentsline}[3]{\tabulartoc@parse{#1}#2\@nil}
\newcommand*{\tabulartoc@parse}{}
\def\tabulartoc@parse#1#2#3#4\@nil{\csname tabulartoc@#1\endcsname{#3
}}
\newcommand*{\tabulartoc@lastsection}{}
\newcommand*{\tabulartoc@section
}[1]{%
  \renewcommand*{\tabulartoc@lastsection}{#1}%
 
  \ifx\tabulartoc@lastsection\@empty\else  
  \tabulartoc@separator
  \tabulartoc@separator
  \tabulartoc@separator
  \tabulartoc@cell{\tabulartoc@lastsection}%
  \tabulartoc@separator
  \fi

  \renewcommand*{\tabulartoc@lastsection}{}%
}
\newcommand*{\tabulartoc@subsection}[1]{%
  \tabulartoc@cell{#1}%
  \tabulartoc@separator
}
\newcommand*{\tabulartoc@subsubsection}[1]{}
\newlength{\tabulartoc@cellwidth
}
\setlength{\tabulartoc@cellwidth}{15mm}
\newlength{\tabulartoc@cellheight}
\setlength{\tabulartoc@cellheight}{7mm}
\newlength{\tabulartoc@celldepth}
\setlength{\tabulartoc@celldepth}{10pt}
\newcommand*{\tabulartoc@cell}[1]{\makebox[\tabulartoc@cellwidth]{#1}}
\newcommand*{\tabulartoc@separator}{%
  \@tempdima\tabulartoc@cellheight
  \advance\@tempdima2\tabulartoc@celldepth
  \vrule\@height\tabulartoc@cellheight\@depth\@tempdima
}
\newsavebox{\tabulartoc@box}
\newcommand*{\tabulartoc}{%
  \begingroup
  \makeatletter
  \catcode`\^^M=9 %
  \let\contentsline\tabulartoc@contentsline
  \begin{lrbox}{\tabulartoc@box}%
    \InputIfFileExists{\jobname.toc}{}{}%
    \ifx\tabulartoc@lastsection\@empty\else
    \tabulartoc@cell{\tabulartoc@lastsection}%
    \fi
\tabulartoc@separator
\tabulartoc@separator
\tabulartoc@separator
\tabulartoc@cell{$\sum$}
    \kern\z@
  \end{lrbox}%
  \setlength{\fboxsep}{-0.7pt}%
  \fbox{%
    \vbox{%
      \hbox{\usebox{\tabulartoc@box}}
      \@tempdima\tabulartoc@cellheight
      \advance\@tempdima\tabulartoc@celldepth
      \vskip-\@tempdima
      \hrule
\hrule
\hrule
\hrule
\hrule
      \advance\@tempdima-0.4pt %
      \vskip\@tempdima
    }%
  }%
\      \if@filesw
        \newwrite\tf@toc
        \immediate\openout\tf@toc\jobname.toc\relax
      \fi
      \@nobreakfalse
  \endgroup
}
\makeatother

\begin{document}

%%%%%%%%%%%%%%%%%%%%%%%% TableToc bauen %%%%%%%%%%%%%%%%%%%%%%%
\begin{center}
    \tabulartoc
\end{center}

%%%%%%%%%%%%%%%%%%%%%%%%%%% Dokument %%%%%%%%%%%%%%%%%%%%%%%%%%
\aufgabe
\teil
\teil
\aufgabe
\teilohnetoc
\teilohnetoc
\aufgabe

\end{document}


MfG Simon
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