IT

Tabel i LaTeX

27. marts 2005 af Export (Slettet)
Jeg vil gerne have lavet en tabel, hvor alle kolonner har samme bredde og hvor jeg samtidig kan både højre-/venstrejustere eller centrere teksten i hver kolonne efter behag.
Jeg har prøvet med

\\begin{center}
\\begin{tabular} {p{4.5mm}|p{4.5mm}|p{4.5mm}|p{4.5mm}|p{4.5mm}|p{4.5mm}|p{4.5mm}}
$x$ & $1$ & $2$ & $3$ & $4$ & $5$ & $6$\\\\
\\hline
$y$ & $1$ & $4$ & $9$ & $16$ & $25$ & $36$\\\\
\\end{tabular}
\\end{center}

for at få en ens kolonnebredde, men så bliver det hele venstrejusteret, og det er noget hø.

Svar #1
27. marts 2005 af Export (Slettet)

Er der ikke nogen, som kan hjælpe mig?

Brugbart svar (1)

Svar #2
27. marts 2005 af NuclearWarhead (Slettet)

Når du bruger p, er det lige højremargen. Venstrejustering er l, højrejustering er r, centrering er vist c.

Svar #3
27. marts 2005 af Export (Slettet)

Nøøøj, har du overhovedet læst hvad jeg har skrevet? Hvis jeg bruger l, c eller r, så er det jo netop at kolonnebredden ikke bliver ens.

Svar #4
27. marts 2005 af Export (Slettet)

Er der ikke en, som faktisk har styr på det, der gider hjælpe mig?

Brugbart svar (1)

Svar #5
27. marts 2005 af 404error (Slettet)

Hvorfor vil du have kolonnerne lige brede? Man får normalt de pæneste resultater, hvis man selv lader LaTeX styre den slags detaljer. Jeg plejer selv at definere den samlede bredde af tabellen, og så lade LaTeX allokere plads til de enkelte kolonner. Det kan gøres med følgende

\\begin{tabular*}{\\textwidth}[c]{@{\\extracolsep{\\fill}}|l|c|c|c|c|c|c|c|} \\hline
$x$ & 0 & 1 & 2 & 3 & 4 & 5 & 6 \\\\
\\hline
$y$ & 422 & 27 & 5 & 0 & 0 & 0 & 1 \\\\
\\hline
\\end{tabular*}

Ændr \\textwidth til den ønskede længde (f.eks. i cm) for at kontrollere tabelbredden. I ovenstående er tabellen lige så bred som siden.

Hvis du insisterer på selv at kontrollere kolonnebredden, er det naturligvis også muligt. Skriv

\\usepackage{array}

i preamble, samt

\
ewcommand{\\PBS}[1]{\\let\\temp=\\\\#1\\let\\\\=\\temp}

også i preamble. Sidstnævnte er et uelegant lille hack, som er nødvendigt, fordi array-pakken omdefinerer \\\\.

Definér da en ny kolonnetype

\
ewcolumntype{P}[1]{>{\\PBS\\centering}p{#1}}

og lav slutteligt tabellen a la

\\begin{tabular}
{|P{2cm}|P{2cm}|P{2cm}|} \\hline
$x$ & 966 & 148\\\\ \\hline
$y$ & 1066 & 48\\\\ \\hline
\\end{tabular}

Højre- og venstrejustering opnås ved at anvende \aggedleft, hhv. \aggedright i stedet for \\centering i definitionen på søjletypen. Du kan også definere flere nye søjletyper for at håndtere forskellige tekstjusteringer.

Svar #6
27. marts 2005 af Export (Slettet)

Det er altså respekt til dig, 404error.

Lige en sidste ting (det er godt nok kun i såmtingsafdelingen, men alligevel): Hvad skal jeg gøre for at kontrollere afstanden fra den linje, der deler de to rækker og så ned til teksten (eller hvad det nu end er) i den nederste række? Jeg synes nemlig, at den nederste række er for tæt på "midterlinjen".

Brugbart svar (1)

Svar #7
27. marts 2005 af 404error (Slettet)

Du kan lave noget i stil med

\\begin{tabular}{c}
1 \\\\ \\hline \\\\[10pt]
2 \\\\ \\hline \\\\[10pt]
3
\\end{tabular}

hvor du erstatter 10pt med en for dit behov passende afstand. Det kan muligvis være nødvendigt at bruge negative afstande, men det kan du jo eksperimentere lidt med. Er det, hvad du tænkte på?

Svar #8
27. marts 2005 af Export (Slettet)

Det er næsten helt perfekt ... det eneste lille problem er bare, at det kun er den lodrette streg mellem første og anden kolonne, der bliver forlænget når teksten rykkes ned, de andre lodrette streger bliver kun flyttet ned (altså så de ikke hænger sammen med den vandrette streg, der adskiller de to rækker).

Brugbart svar (1)

Svar #9
27. marts 2005 af 404error (Slettet)

Nej, det fungerer ikke godt med array-pakken. Brug i stedet en usynlig boks af en passende højde, a la

\ule[-10pt]{0pt}{50pt}

hvor denne kommando indsættes i hver række i tabellen. Højden er den sidste parameter og modificeres efter behov. Hvis du bruger dette mange gange, kan du jo lave en newcommand med en sådan usynlig boks. Det sparer lidt arbejde. Løsningen er ikke synderligt elegant, men det er nu næppe heller meningen, at man skal rode alt for meget med rækkehøjden i tabeller.

Svar #10
27. marts 2005 af Export (Slettet)

Mange tak!

Skriv et svar til: Tabel i LaTeX

Du skal være logget ind, for at skrive et svar til dette spørgsmål. Klik her for at logge ind.
Har du ikke en bruger på Studieportalen.dk? Klik her for at oprette en bruger.