Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

In twocolumn mode, the baseline of the first line in a column seems to be positioned a minimum of ~10pt below the top of the column, regardless of current font size. If the font size is sufficiently large that a character on the first line is more than 10pt high, the text is shifted down just enough that the text does not overlap the top of the column. For example:

\documentclass[twocolumn]{article}
\begin{document}
Text \newpage \tiny Text \newpage
\normalsize Text \newpage \Huge Text \newpage
\Huge no ascen-ers \newpage \Huge Ascenders
\end{document} 
  • On page 1, the normal and tiny text share the same baseline, ~10pt below the top of the column
  • On page 2, the Huge text is taller than 10pt, so the baseline is shifted down relative to the normal text
  • On page 3, both columns have Huge text, but since the first column has no ascenders in the first line, the baseline does not match that of the second column.

Is it possible to start a column a set distance (for example, \baselineskip) beneath the top of the column, or otherwise avoid the position of the baseline being dependent on the size of characters that are in the first line of a column?

EDIT: Is it possible to accomplish this (getting the first-line baselines at the same level) automatically?

share|improve this question
add comment

1 Answer

the command \smash will obliterate both the height and depth of its argument. this could have consequences for the proper baseline spacing of the current line with the next if the oversize text has descenders.

the amsmath package allows just the bottom or top of an argument to be obliterated, with \smash[b] or \smash[t]. (these can be used in text as well as in math.) taking advantage of this, we get the following:

\documentclass[twocolumn]{article}
\usepackage{amsmath}
\begin{document}
Text \newpage \tiny Text \newpage
\normalsize Text \newpage \Huge Text \newpage
\Huge no ascen-ers \newpage \Huge \smash[t]{Ascenders}
\end{document}
share|improve this answer
    
This has the right effect - but is is possible to apply \smash[t] to the first line of a each column automatically? –  Chris Johnson Sep 30 '11 at 14:03
    
i don't know of a way; it would have to interact with tex's paragraph and page breaking, which is nontrivial. it's something like how to change the style of the first line of a paragraph but involves interacting with the output routine as well. but a good question; i'll edit it into your original question. –  barbara beeton Sep 30 '11 at 14:16
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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