4

I ran into this problem when playing around with tables.

\documentclass{article}
\begin{document}
\begin{table}[h!]
  400 MHz \qquad 800MHz
\centering
\showthe\numexpr\textwidth\relax
\tracingall
\begin{tabular}{|0.4*\textwidth||p{0.9cm}p{0.9cm}p{0.9cm}p{0.9cm}||p{0.9cm}p{0.9cm}p{0.9cm}p{1cm}|}
\hline No. of Cells & Acc. Voltage [MV] & No. of Cavities & Cavity Length [cm] & Total Length of Cavities [m] & Acc. Voltage [MV] & No. of Cavities & Cavity Length [cm] & Total Length of Cavities\\ \hline
1& 4.63&2591&112.42&2913 &4.83&2484&56.21&1397 \\ \hline
2& 8.30&1446&149.90&2168 &8.45&1420&74.94&1064 \\ \hline
3& 12.45&964&187.37&1806 &12.67&947&93.69&887 \\ \hline
4& 16.61&723&224.84&1626 &16.91&710&112.42&798 \\ \hline
5& 20.76&578&262.34&1516 &21.13&568&131.16&745 \\
\hline
\end{tabular}
\caption{Demonstrating how the total length of RF cavities in the lattice depends on both the number of cells per cavity and on the frequency of the cavity.}
\label{tab:comparingrf}
\end{table}
\end{document}

Use of 0.4*\textwidth here causes pdflatex to take up 100% cpu and never exit. My laptop currently sounds like it is about to take off. Have I done something absolutely forbidden here that I was not aware of? I would have thought though that ideally nothing was so forbidden that it crashed the compiler rather than tell me I have done something wrong.

  • 2
    In any programming language that has counters and if statements it is impossible to automatically detect that the user has programmed an infinite (or in this case very large) loop. – David Carlisle Mar 31 '16 at 7:34
  • Note that you don't need the * when multiplying a register by some value. Use 0.4\textwidth. – Bakuriu Mar 31 '16 at 11:16
  • Where is that tex capacity exceeded error message in the only case in which it would really have been appropriate? – Federico Poloni Mar 31 '16 at 15:56
14

Werner has shown the correct syntax, but to explain what happens with your document.

Note that *\textwidth| is the same as *{\number\textwidth}{|} and denotes multiple | so it causes latex to go into a loop with a counter set to \textwidth (viewed as a number by taking the value in sp which is 22609920 at the default article text width) and then repeatedly redefining the macro that holds the array preamble in a loop adding one more | each time.

If you turn on tracing and stop it after a bit you see

\@iwhilenum #1->\ifnum #1\expandafter \@iwhilenum \else \expandafter \@gobble \
fi {#1}
#1<-\@tempcnta >\z@ \relax \edef \reserved@a {\reserved@a |}\advance \@tempcnta
 \m@ne \relax 
{\ifnum: (level 3) entered on line 8}
{true}
{\relax}
{\edef}

\reserved@a ->|0.4|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||
! Interruption.

Probably if you don't stop it you eventually run out of input buffer or some such, I didn't wait to find out.

9

You need to specify the column type, which you forgot to do. For example, use p{0.4\textwidth}.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.