\strut
¶Synopsis:
\strut
Ensure that the current line has height at least 0.7\baselineskip
and depth at least 0.3\baselineskip
. Essentially, LaTeX
inserts into the line a rectangle having zero width,
\rule[-0.3\baselineskip]{0pt}{\baselineskip}
(see \rule
).
The \baselineskip
changes with the current font or fontsize.
In this example the \strut
keeps the box inside the frame from
having zero height.
\setlength{\fboxsep}{0pt}\framebox[2in]{\strut}
This example has four lists. In the first there is a much bigger gap
between items 2 and 3 than there is between items 1 and 2.
The second list fixes that with a \strut
at the end of its first
item’s second line.
\setlength{\fboxsep}{0pt} \noindent\begin{minipage}[t]{0.2\linewidth} \begin{enumerate} \item \parbox[t]{15pt}{test \\ test} \item test \item test \end{enumerate} \end{minipage}% \begin{minipage}[t]{0.2\linewidth} \begin{enumerate} \item \parbox[t]{15pt}{test \\ test\strut} \item test \item test \end{enumerate} \end{minipage}% \begin{minipage}[t]{0.2\linewidth} \begin{enumerate} \item \fbox{\parbox[t]{15pt}{test \\ test}} \item \fbox{test} \item \fbox{test} \end{enumerate} \end{minipage}% \begin{minipage}[t]{0.2\linewidth} \begin{enumerate} \item \fbox{\parbox[t]{15pt}{test \\ test\strut}} \item \fbox{test} \item \fbox{test} \end{enumerate} \end{minipage}%
The final two lists use \fbox
to show what’s happening. The
first item \parbox
of the third list goes only to the bottom of
its second ‘test’, which happens not have any characters that
descend below the baseline. The fourth list adds the strut that gives
the needed extra below-baseline space.
The \strut
command is often useful in graphics, such as in
TikZ
or Asymptote
. For instance, you may have a command
such as \graphnode{node-name}
that fits a circle around
node-name. However, unless you are careful the node-name’s
‘x’ and ‘y’ will produce different-diameter circles because
the characters are different sizes. A careful \graphnode
might
insert a \strut
, then node-name, and then draw the circle.
The general approach of using a zero width \rule
is useful in
many circumstances. In this table, the zero-width rule keeps the top of
the first integral from hitting the \hline
. Similarly, the
second rule keeps the second integral from hitting the first.
\begin{tabular}{rl} \textsc{Integral} &\textsc{Value} \\ \hline $\int_0^x t\, dt$ &$x^2/2$ \rule{0em}{2.5ex} \\ $\int_0^x t^2\, dt$ &$x^3/3$ \rule{0em}{2.5ex} \end{tabular}
(Although the line-ending double backslash command has an available
optional argument to change the corresponding baseline skip, that won’t
solve this issue. Changing the first double backslash to something like
\\[2.5ex]
will put more room between the header line and the
\hline
rule, and the integral would still hit the rule.)