Avatar billede Rune Sommer Mester
10. juni 2006 - 16:38 Der er 10 kommentarer og
1 løsning

raggedright i tabular

Jeg skal have lavet en tabel hvori jeg gerne vil have teksten højre-aligned samtidigt med at søjlerne har en fast lænde.

Dvs. jeg vil definere søjlebredden med p{5cm} eller evt. med m{5cm} hvori teksten ikke skal stå til venstre - men til højre. Jeg har fundet en masse eksempler som jeg bare ikke kan få til at virke. Jeg har prøvet alskins \flushright og \raggedright men uden success. Hjælp.



\documentclass[12pt,a4paper]{article}
\begin{document}

\begin{tabular}{lp{4cm}}
line 1 & {\raggedright
          blah blah blah blah blah blah blah blah
          blah blah blah blah blah
          blah blah} \\
line 2 &  {\raggedright More text here}
\end{tabular}

\end{document}
Avatar billede razor Nybegynder
10. juni 2006 - 16:49 #1
Hvad med:

\documentclass[12pt,a4paper]{article}
\begin{document}

\begin{tabular}{l r}
line 1 & \parbox{4cm}{ \flushright
          blah blah blah blah blah blah blah blah
          blah blah blah blah blah
          blah blah} \\
line 2 &  \parbox{4cm}{ \flushright
          More text here}
\end{tabular}

\end{document}
Avatar billede Rune Sommer Mester
10. juni 2006 - 18:57 #2
Den skriver teksten ganske fint til højre... dog et lidt omstændigt arbejde at skrive \parbox{}{} for hver linje...


Havde håbet på en lidt anden løsning, da jeg har ret mange linjer og tabeller at right-flushe :-)
Avatar billede texperten Nybegynder
11. juni 2006 - 13:36 #3
I forlængelse af #1, så vil jeg mene, at løsningen simpelthen er at definere en \newcommand i stil med

\newcommand\hest[3]{#1&\parbox{#2cm}{\flushright #3}}

\begin{tabular}{l r}
  \hest{Linje 1}{4}{Æsel, gnu, emu.}\\
  \hest{Linje 2}{4}{Giraf, elefant, mammut.}
\end{tabular}

Det letter i hvert tilfælde arbejdet en smule.

NB! Jeg har ikke testet det, men umiddelbart tror jeg det virker.

Hvis du ved, at du vil have \parbox{4cm} hver gang og der skal stå ``Linje'' hver gang, kan du bruge den endnu kortere variant

\newcommand\hest[2]{Linje #1&\parbox{4cm}{\flushright #2}}

\begin{tabular}{l r}
  \hest{1}{Æsel, gnu, emu.}\\
  \hest{2}{Giraf, elefant, mammut.}
\end{tabular}
Avatar billede texperten Nybegynder
11. juni 2006 - 13:45 #4
Jeg er vist ikke rigtig vågen endnu! Nu har jeg fået læst #0, og så ser jeg at længden skal være fast samt at der ikke skal stå ``Linje'' hver gang -- og desuden er det også forkert det jeg skrev i #3. Du kan vist bruge noget i stil med

\newcommand\hest[2]{#1&\parbox{4cm}{\flushright #2}}

\begin{tabular}{l r}
  \hest{Linje 1}{Gnu, emu.}\\
  \hest{Linje 2}{Elefant, mammut.}
\end{tabular}

Igen; jeg har ikke selv testet det.
Avatar billede Rune Sommer Mester
12. juni 2006 - 15:44 #5
Jeg har testet dine forslag - texperten. Jeg synes ikke det er optimalt at definere en newcommand til at lave tabeller i. Og så er der også det minus, at parbox ødelægger formatteringen af tabellen.

Jeg synes der bør findes en løsning i stil med

\begin{tabular}{l>{\raggedright}p{4cm}}
venstrejusteret tekst & højrejusteret tekst\\\hline
\end{tabular}
Avatar billede Rune Sommer Mester
13. juni 2006 - 00:47 #6
Her er lige et par eksempler som der kan kigges på. \centering virker ganske fint, men flushright virker ikke! Og det er noget hø. For det tvinger mig til at lave denne kommando i  hver eneste tekst-boks. Og det gider jeg næsten ikke at rode med.
\raggedright laver nemlig en ekstra linje i tabellen. Men bortset fra det, gør den det rigtige.


\newcommand{\vsp}{\vspace{-21.3pt}}
\newcommand{\tnl}{\tabularnewline\hline}

\begin{tabular}{|l|>{\flushright}p{4cm}|}\hline
  Linje 1  & \vsp Tekst 1\tnl
  Linje 2  & \vsp Linje 3\tnl
  Linje 3  & \vsp tekst\tnl
\end{tabular}

\begin{tabular}{|l|>{\centering}p{4cm}|}\hline
  Linje 1  &  Tekst 1\tnl
  Linje 2  &  Linje 3\tnl
  Linje 3  &  tekst\tnl
\end{tabular}
Avatar billede Slettet bruger
27. juni 2006 - 22:11 #7
Det er fordi \flushright er et environment ikke en makro. Problemet er her at den efterlader ekstra vertikal spacing.

Der skal anvendes \raggedleft

Jeg vil nu mene at det nemmeste nok er (anvender array pakken, eller memoir klassen)

\newcolumntype{a}{>{\raggedleft\arraybackslash}p{4cm}}

\begin{tabular}{|l| a |}
  Linje 1  &  Tekst 1\\ \hline
  Linje 2  &  Linje 3\\ \hline
  Linje 3  &  tekst\\ \hline
\end{tabular}

Jeg ville nok overveje om hvorvidt de vandrette linier er nødvendige. Men det er i vissse sammenhænge en smags sag.

/daleif
Avatar billede Rune Sommer Mester
28. juni 2006 - 20:45 #8
Hej daleif.

Jeg fandt rent faktisk samme løsning på nettet efter længere tids søgning (timer...) og må bukke under for en misforståelse fra min side om at "raggedleft" ikke venstrejusterer teksten, men højrejusterer. Så er det jo klart, at raggedright ikke gør det jeg tror den gør.

Hvis du giver et svar, får du points for det svar jeg søgte. Som et lille tillægsspørgsmål vil jeg også høre, om du ved hvorfor der skal stå \arraybackslash bagefter  \raggedleft ?

Vh. Rune.
Avatar billede Slettet bruger
28. juni 2006 - 23:20 #9
\raggedright, \centering etc. omdefinerer \\ og jo i en tabel ikke betyder ny linie, men i stedet ny række. Det er derfor du skal skrive \tabularnewline

Ved at anvende >{\raggedright\arraybackslash} i stedet så vil \arraybackslash sørge for at omgøre \raggedright's omdefinering af \\, så den nu igen betyder ny række.

Teknisk set behøver man kun \arraybackslash i den sidste søjle, men der sker jo ikke noget ved at have den med.

som navnet antyder så betyder \raggedright at man har en ujævn højre, så navnet siger faktisk sig selv.
Avatar billede Rune Sommer Mester
29. juni 2006 - 16:44 #10
Takker for den meget gode forklaring!
Jeg vidste heller ikke det med ny linje / ny række og har til tider undret mig noget over hvorfor \\ kun virker nogen gange hvor \tabularnewline kun virker andre gange.

Points hermed givet.
\Rune.
Avatar billede Slettet bruger
29. juni 2006 - 17:12 #11
Inden for tabeller er problemet jo netop dobbelt.

Hvis man har en p{10cm} søljle så kan denne jo skrive i flere linier, men problemet kommer jo så når man gerne vil fremtvinge et linie skift. Her dur \\ jo ikke idet det er ny linie, så her skal man netop anvende \newline i stedet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester