5

Given some text, I want to centrally align this text on a given amount of lines.

For example,

\documentclass{article}
\begin{document}
Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi
auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et,
tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna. 
\end{document}

gives enter image description here However, I would like to advise LaTeX to distributed this text among 12 lines, whereby all lines (including the last one) have roughly the same width. Additionally, the output should be centered.

Florian
  • 945
  • Is the number of lines known as a fixed amount in advance or is it in some way dynamic? – Joseph Wright Mar 04 '15 at 14:43
  • @JosephWright The number of lines is fixed and known in advance. – Florian Mar 04 '15 at 14:54
  • This is somewhat related to this question (regarding last line extending to right margin): http://tex.stackexchange.com/questions/230840/artificially-improving-default-tex-algo-results-for-balancing-interword-spacing. – Steven B. Segletes Mar 04 '15 at 15:12

1 Answers1

10

enter image description here

\documentclass{article}
\usepackage[latin]{babel}
\begin{document}
\sbox0{\indent Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi
auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et,
tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna.}
\begin{center}
\dimen0=\dimexpr\wd0/12\relax
\loop
\sbox2{\parbox[b]{\dimen0}{\parfillskip=0pt plus .1\hsize\unhcopy0}}
\ifdim\ht2>12\baselineskip
\advance\dimen0 1em
\repeat
\usebox2
\end{center}
\end{document}

If you change to

\documentclass{article}
\usepackage[latin]{babel}
\begin{document}
\sbox0{Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi
auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et,
tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna.}
\begin{center}
\dimen0=\dimexpr\wd0/12\relax
\loop
\sbox2{\parbox[b]{\dimen0}{\centering\parfillskip=0pt \unhcopy0}}
\ifdim\ht2>12\baselineskip
\advance\dimen0 .5em
\repeat
\usebox2
\end{center}
\end{document}

Then you get

enter image description here

David Carlisle
  • 757,742