PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabellenzeilen nummerieren



Nasenbärnase
16-11-2005, 09:47
Wie kann man die Zeilen einer Tabelle in der Spalte ganz links nummerieren (außer der ersten Zeile).

Sowas etwa:

| | Überschrift 1 | Überschrift 2 |
| 1. | bla | bla |
| 2. | bla | bla |
| 3. | bla | bla |
...

countbela666
16-11-2005, 12:17
Hallöchen,

Das folgende Minimalbeispiel definiert einen Befehl \rowno, der bei Bedarf einen neuen Zähler anlegt, diesen hochzählt und ausgibt. Wie dargestellt kannst du den Befehl in jeder Zeile aufrufen, was dann das Zählen der Zeilen produzieren würde.

Am Anfang einer neuen Tabelle (oder auch zu jedem beliebigen anderen Zeitpunkt) kannst du den Zähler mit einem optionalen Parameter zurück- bzw. auf einen anderen beliebigen Wert setzen.

\documentclass{article}
\usepackage{ifthen}
\makeatletter
\providecommand{\rowno}[1][__empty__]{%
\ifthenelse{\isundefined{\c@rowno}}{%
\newcounter{rowno}}{}%
\ifthenelse{\equal{#1}{__empty__}}{%
\stepcounter{rowno}%
}{%
\setcounter{rowno}{#1}%
}%
\therowno%
}
\makeatother
\begin{document}
\begin{tabular}{|*{4}{c|}}\hline
& bla & bla & blupp \\\hline
\rowno & bla & bla & blupp \\\hline
\rowno & bla & bla & blupp \\\hline
\rowno & bla & bla & blupp \\\hline
\end{tabular}\hfill
\begin{tabular}{|*{4}{c|}}\hline
& bla & bla & blupp \\\hline
\rowno[1] & bla & bla & blupp \\\hline
\rowno & bla & bla & blupp \\\hline
\rowno & bla & bla & blupp \\\hline
\end{tabular}
\end{document}Grüße,
Marcel

Nasenbärnase
16-11-2005, 12:30
Danke, das ist soweit ja schon mal ganz nett. Jetzt müsste ich nur noch auf die Zahl referenzieren können. Mit \label scheint das nicht zu gehen.

countbela666
16-11-2005, 12:33
Da brauchst du nur eine kleine Änderung vorzunehmen: ersetze das \stepcounter in dem Befehl durch \refstepcounter, dann müsste es mit einem Label dahinter klappen.

Nasenbärnase
16-11-2005, 12:37
Supi, danke, das funzt :-)

Nasenbärnase
16-11-2005, 12:59
noch 'ne Frage:

meine Tabelle wird mit
\begin{tabular}{p{0.04\textwidth}p{0.42\textwidth} p{0.42\textwidth}}
festgelegt.

damit definiere ich ja eine feste spaltenbreite. kann ich dennoch sagen, dass die einträge (wenigstens die der ersten zeile) zentriert positioniert werden sollen?

Salnic
16-11-2005, 13:05
Hast Du es schon mal probiert? Vielleicht klappt es ja? Ich sehe keinen Grund, warum nicht!

Salnic

Nasenbärnase
16-11-2005, 13:09
normalerweise definiert man eine zentrierung doch durch ...{|c|c|c|}
dann hätte ich aber wieder eine variable spaltenbreite.
wenn ich in der ersten zeile um die einzelenen spalteneinträge jeweils \begin{center} und \end{center} schreibe, erzeugt latex plötzlich komischerweise vertikale freiräume. so geht es also schon mal nicht :-(

countbela666
16-11-2005, 13:12
kann ich dennoch sagen, dass die einträge (wenigstens die der ersten zeile) zentriert positioniert werden sollen?Klar, versuch's mal so:

\begin{tabular}{>{\centering}p{0.04\textwidth}p{0.42\textwidth}p{0. 42\textwidth}}Übrigens, wenn du den \rowno-Befehl folgendermaßen anpasst, kannst du auch Zeilen referenzieren, die du mit dem optionalen Parameter initialisiert hast:

\providecommand{\rowno}[1][__empty__]{%
\ifthenelse{\isundefined{\c@rowno}}{%
\newcounter{rowno}}{}%
\ifthenelse{\equal{#1}{__empty__}}{%
\refstepcounter{rowno}%
}{%
\setcounter{rowno}{#1}%
\addtocounter{rowno}{-1}%
\refstepcounter{rowno}%
}%
\therowno%
}Grüße,
Marcel

Edit: Fast hätt ich's vergessen: für das >{befehl} vor einer Spaltenpositionierungsangabe muss das Paket array geladen werden.

Nasenbärnase
16-11-2005, 13:25
Klar, versuch's mal so:

\begin{tabular}{>{\centering}p{0.04\textwidth}p{0.42\textwidth}p{0. 42\textwidth}}

Hm, bei mir zentriert er so nichts :confused:

Edit: Doch, scheinbar zentriert er die erste Spalte, aber nicht die Zeile. Habe also mal versucht, alle Spalten zentrieren zu lassen:

\begin{tabular}{>{\centering}p{0.04\textwidth}>{\centering}p{0.42\textwidth}>{\centering}p{0.42\textwidth}}

wenn ich so aber auch die 3. spalte zentrieren möchte, bekomme ich eine fehlermeldung: misplaced \noalingn.

countbela666
16-11-2005, 13:28
sicher?

\documentclass{article}
\usepackage{array}
\begin{document}
\begin{tabular}{|>{\centering}p{0.04\textwidth}|p{0.42\textwidth}|p{ 0.42\textwidth}|}
a&b&c
\end{tabular}\par
\begin{tabular}{|p{0.04\textwidth}|p{0.42\textwidt h}|p{0.42\textwidth}|}
a&b&c
\end{tabular}
\end{document}

Nasenbärnase
16-11-2005, 13:34
siehe edit voriger beitrag

countbela666
16-11-2005, 13:37
Wie sieht's aus, wenn du an Stelle des \\ zum Zeilenumbruch ein \cr nimmst?

Edit:

Moment, noch besser: füge nach dem \centering noch ein \arraybackslash ein, oder definiere dir gleich einen neuen Spaltentyp:

\newcolumntype{C}[1]{%
>{\centering\arraybackslash}%
p{#1}%
}
...
\begin{tabular}{C{0.04\textwidth}C{0.42\textwidth} C{0.42\textwidth}}
a&b&c\\
d&e&f\\
g&h&i
\end{tabular}

Nasenbärnase
16-11-2005, 13:47
\begin{tabular}{>{\centering}p{0.05\textwidth} >{\centering}p{0.42\textwidth} >{\centering}p{0.42\textwidth}}
\hline
Regel & Aktivitätsdiagramm & Petri-Netz\\

\hline
\hline

\rowno.\label{reftest} & test & test\\
\hline
\end{tabular}

countbela666
16-11-2005, 13:49
s. edit obiger Post :D

Nasenbärnase
16-11-2005, 14:06
juchu, es klappt :-) thx