Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Dynamische Tabelle

  1. #1
    Registrierter Benutzer
    Registriert seit
    13.11.2009
    Beiträge
    26

    Dynamische Tabelle

    Hallo. Eine Tabelle soll sich über die ganze Seite erstrecken und eine dynamische Anzahl Spalten haben, wobei der Tabellenkopf die Zahlen von "n" bis "m" beinhaltet.

    Bisher habe ich dies:
    Code:
    \usepackage{forloop}
    
    \newcommand{\punkteliste}[2]{\begin{tabular*}{\linewidth}[]{@{\extracolsep\fill}}
    
    		\newcounter{punktelistectr}
    		\forloop{punktelistectr}{#1}{\value{punktelistectr} < #2 } %
    		{%
    			\arabic{punktelistectr} & 
    		}
    		#2 \\
    		
    		\hline
    		
    		\forloop{punktelistectr}{#1}{\value{punktelistectr} < #2 } %
    		{%
    			&
    		} \\
    	\end{tabular*}
    }
    
    \punkteliste{5}{8}
    Da fehlt natürlich die Anzahl / Ausrichtung der Spalten. Wie kann man die dynamisch einbringen?
    Geändert von zod (23-11-2009 um 22:15 Uhr)

  2. #2
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.862
    Moin moin,
    Zitat Zitat von zod Beitrag anzeigen
    Hallo. Eine Tabelle soll sich über die ganze Seite erstrecken und eine dynamische Anzahl Spalten haben, wobei der Tabellenkopf die Zahlen von "n" bis "m" beinhaltet.

    Bisher habe ich dies:
    Code:
    \usepackage{forloop}
    
    \newcommand{\punkteliste}[2]{\begin{tabular*}{\linewidth}[]{@{\extracolsep\fill}}
    
    		\newcounter{punktelistectr}
    Afaik ist \newcounter innerhalb einer Makrodefinition unzulässig.
    Zitat Zitat von zod Beitrag anzeigen
    Da fehlt natürlich die Anzahl / Ausrichtung der Spalten. Wie kann man die dynamisch einbringen?
    Wie sollen die Spalten denn ausgerichtet werden? Zentriert?
    Code:
    \documentclass{article}
    \usepackage{forloop,tabularx}
    \newcounter{punktelistectr}
    \newcounter{punkte}
    \newcommand{\punkteliste}[2]{%
      \setcounter{punkte}{#2}%
      \addtocounter{punkte}{-#1}%
      \stepcounter{punkte}%<-- also punkte = m-n+1 = Anzahl Spalten[1]
      \begin{center}%
      \begin{tabularx}{\linewidth}[]{@{}*{\thepunkte}{>{\centering\arraybackslash}X}@{}}
          \forloop{punktelistectr}{#1}{\value{punktelistectr} < #2 } %
          {%
            \thepunktelistectr & 
          }
          #2 \\
          \hline
          \forloop{punktelistectr}{#1}{\value{punktelistectr} < #2 } %
          {%
            &
          } \\
        \end{tabularx}
      \end{center}
    }
    \begin{document}
    \punkteliste{5}{8}
    \punkteliste{12}{18}
    \end{document}
    wobei mir Dein zweiter \forloop schleierhaft ist.

    [1] m>=n vorausgesetzt, ggf. musst Du im \punkteliste-Makro den Fall m<n abfangen ... und vllt auch gleich m-n>MAXCOLUMNS, den Du Dir gleich mit ausdenken darfst.;-)

    MfG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  3. #3
    Registrierter Benutzer
    Registriert seit
    13.11.2009
    Beiträge
    26
    Das ist genau was ich wollte! Danke!

    Das abfangen der "Fehler" werde ich später machen, da ich zum einen der einzige bin der es benutzt und zum anderen es schon echt dämlich wäre wenn man so etwas einfaches falsch benutzt

    Die zweite Schleife erzeugt nur eine zweite Zeile, da es einen inneren Rahmen gibt.

    Code:
    \begin{tabularx}{\linewidth}[]{@{}*{\thepunkte}{>{\centering\arraybackslash}X|}@{}>{\centering\arraybackslash}X}
    Zudem ist eine letzte Spalte hinzugekommen in der ein Summenzeichen steht

    Vielen Dank für die Hilfe!

Lesezeichen

Berechtigungen

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