Avatar billede connorz Nybegynder
05. juni 2007 - 12:28 Der er 7 kommentarer og
1 løsning

Bruger boks giver "underfull \hbox"

Jeg har lavet en brugerdefineret kommando, der sætter en boks ind på siden med tekst i. Kommandoen bruger jeg til at lave bokse med generel information om et emne, så jeg senere i teksten kan referere til denne information. Jeg benytter følgende til at generere boksen:

\newfloat{boks}{ht}{lob}

\renewcommand{\fboxrule}{0.4mm}
\renewcommand{\fboxsep}{5mm}
\newcounter{boxcount}
\newcommand{\createbox}[2]{
\begin{boks}
\refstepcounter{boxcount}
\begin{center} \fbox{\begin{minipage}{0.8\textwidth} \label{box:#1}
\huge \textbf{Boks \theboxcount: #1} \\ \normalsize \\ #2
\end{minipage}} \end{center}
\end{boks}
}

Det virker også fint. Der kommer en boks på siden og jeg kan referere til boksen med \ref{box:navn}. Men for hver boks jeg indsætter får jeg følgende tre bad boxes:

Underfull \hbox (badness 10000) in paragraph at lines X--X
Underfull \hbox (badness 1270) in paragraph at lines X--X
Underfull \hbox (badness 1048) in paragraph at lines X--X

Er der nogen, der kan forklare mig, hvad de betyder og hvordan jeg evt. kan slippe af med dem? Jeg kunne jo bare ignorere dem, da boksene kommer fint ind i teksten, men jeg mener generelt, at warnings o.l. skal udryddes, da de jo nok er der af en grund! Desuden kunne jeg jo risikere at lære noget om Latex :)
Avatar billede barklund Nybegynder
05. juni 2007 - 12:39 #1
Fejlene stammer fra TeX - ikke LaTeX. Så det ville være TeX du lærte noget om, hvis du fik fejlene rettede. En badness på 10000 er den maksimale badness. Problemet opstår sandsynligvis fordi du har en center rundt om det hele, men første linje (med overskriften) ikke kan strækkes, så den fylder hele linjen. En mulighed ville derfor være at smide noget \hfil ind før og efter den første \huge overskrift.

Generelt har du blandet TeX og LaTeX markup. I TeX skriver man ofte en kommando i samme blok som den skal gælde og så en anden kommando, når den skal gælde - som du fx har gjort med \huge og \normalsize. Men i LaTeX vil man ofte putte dem i hver sin blok som \huge{noget stort} og \normalsize{noget almindeligt}.

Men for at forstå fejlen helt i detaljer, så skal du have fat i Knuths oprindelige TeX-guide, som er en kolos af uforståelige algoritmer. Men underholdende læsning, hvis man keder sig i en måneds tid :)

--
Morten Barklund
Avatar billede Slettet bruger
05. juni 2007 - 13:07 #2
Saadan noget vroevl!

Koden ovenfor ER LaTeX, der er ingen af de anvendte makroer som faktisk fungerer i TeX! og desuden er dine kommentarer er forkerte. F.eks. tager hverken \huge eller \normalsize noget argument, men er deklarations makroer, dvs. hvis man vil beskydde deres effekt fra verden uden om saa skal man skrive

{\huge tekst}

Problemet er stykket

\\ \normalsize \\

Saadan noget goer man ikke! Hvis du oensker at have lidt luft til teksten under saa anvend:

\textbf{\huge Boks \theboxcount: #1} \\[\baselineskip] #2

Denne underfull \hbox kommer af din brug af \\ ... \\ uden noget tekst i mellem. Det er desvaerre en af de mest almindelige grunde til at man faar en underfull \hbox. Og generelt skal denne konstruktion slet ikke anvendes. Vi anbefaler normalt at man ALDRIG anvender \\ i teksten, hvilket ogsaa er grunden til at \\ slet (naesten) ikke beskrives i min LaTeXbog til andet end at skrive raekke med i tabeller og i matematik konstruktioner.
Avatar billede connorz Nybegynder
05. juni 2007 - 13:16 #3
Ja, det er jo altid godt at få sider af sagen. Men det ser ud til, at daleif har ret (som sædvanlig!) Havde vist egentlig også læst i din bog, at \\ er no-go!! Så jeg stiller mig lige i krogen i 5 min og skammer mig :| Ændringen virkede og nu er der 0 bad boxes i mit 150 siders projekt - nice! Nu mangler jeg bare 5 warnings også, så det tror jeg lige, jeg opretter et spørgsmål (mere) til :)

Mange tak for hjælpen begge to! daleif får dog pointene, da hans løsning virkede - det havde jo ikke noget med centreringen at gøre. I øvrigt er jeg glad for at slippe for at bruge en måned på Knuth - selvom han lyder som en flink fyr. Afleverer speciale om 10 dage, så det må jeg hellere få pudset færdigt i stedet :)
Avatar billede Slettet bruger
05. juni 2007 - 13:23 #4
TeXbook er heller ikke verdens mest letlaeselige bog.

Hvilken type af warnings er der tale om? (kune jo vaere det var ngoet jeg kunne bruge til min bog)
Avatar billede connorz Nybegynder
05. juni 2007 - 13:27 #5
Min warnings er beskrevet i spørgsmålet:
http://www.eksperten.dk/spm/781791
Avatar billede connorz Nybegynder
05. juni 2007 - 13:40 #6
For god orden skyld kan jeg lige poste kommandoen, som den kom til se ud - så kan andre jo få glæde af den:
\newfloat{boks}{ht}{lob}

\renewcommand{\fboxrule}{0.4mm}
\renewcommand{\fboxsep}{5mm}
\newcounter{boxcount}
\newcommand{\createbox}[2]{
\begin{boks}
\refstepcounter{boxcount}
\begin{center} \fbox{\begin{minipage}{0.8\textwidth} \label{box:#1}
\huge \textbf{Boks \theboxcount: #1} \normalsize
\\[\baselineskip]
%\vspace{0.5cm} \\
#2
\end{minipage}} \end{center}
\end{boks}
}
Avatar billede Slettet bruger
05. juni 2007 - 13:50 #7
Linien

\huge \textbf{Boks \theboxcount: #1} \normalsize

kan optimeres til

\textbf{\huge Boks \theboxcount: #1}

saa fungerer \huge kun inden i \textbf
Avatar billede barklund Nybegynder
05. juni 2007 - 15:03 #8
Hm, skal gerne indrømme jeg husker meget lidt LaTeX og TeX, men "underfull \hbox" er da ikke en LaTeX-fejl men en TeX-fejl. Men derudover har du ganske ret :)
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
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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