Center with equal amount of text per line

The following centereq takes as an optional parameter the required fraction of the text width to fill (default 0.8) and makes lines that differ as much as 2em (one on either side) from the target width.

For a long enough paragraphs there should be no real problem in using whatever fraction you like. Short paragraph will need an educated guess.

\documentclass{article}
\usepackage{kantlipsum}

\newenvironment{centereq}[1][0.8]
 {%
  \trivlist
  \centering
  \setlength{\leftskip}{\dimexpr(\columnwidth-#1\columnwidth)/2\relax plus 1em}%
  \setlength{\rightskip}{\leftskip}%
  \item\relax
 }
 {\endtrivlist}

\begin{document}

\begin{centereq}
\kant[2]
\end{centereq}

\begin{centereq}[0.6]
\kant[2]
\end{centereq}

\begin{centereq}[1]
\kant[2]
\end{centereq}

\end{document}

enter image description here


Here I provide \centerlines[<delta length>]{<n>}{<content>} to assist in the process of setting content over n lines. It sets the content in an hbox, and divides the content width by n. It then creates a parbox of that width + delta length (default 5pt) and resets the content in that \parbox, which has been centered.

\documentclass{article}
\usepackage[showframe,pass]{geometry}
\usepackage{fp}
\makeatletter
\newcommand\centerlines[3][5pt]{%
  \sbox0{#3}%
  \FPdiv\result{\strip@pt\wd0}{#2}
  {\noindent\hfill
  \parbox{\dimexpr #1+\result pt}{\centering\strut#3\strut}%
  \hfill\mbox{}\par}
}
\makeatother
\begin{document}
\centerlines{2}{To be or not to be, that is the question}

\centerlines[9pt]{8}{When in the Course of human events, it becomes necessary
 for one people to dissolve the political bands which have connected them 
with another, and to assume among the powers of the earth, the separate 
and equal station to which the Laws of Nature and of Nature's God entitle 
them, a decent respect to the opinions of mankind requires that they 
should declare the causes which impel them to the separation.}
\end{document}

enter image description here


Here is a slightly different take on it. With this verion, a \parbox is not used. Rather, \leftskip nad \rightskip are employed, and so the result can break across pages. However, each line of the \centerlines output will be forced to the same width, and hyphenation is now active.

\documentclass{article}
\usepackage[showframe,pass]{geometry}
\usepackage{fp}
\makeatletter
\newcommand\centerlines[3][5pt]{%
  \sbox0{#3}%
  \FPdiv\result{\strip@pt\wd0}{#2}
  \FPdiv\theskip{\strip@pt\dimexpr\linewidth-\result pt-#1\relax}{2}%
  {\centering\leftskip\theskip pt\rightskip\theskip pt#3\par}
}
\makeatother
\begin{document}
\centerlines{2}{To be or not to be, that is the question}

\centerlines[1pt]{8}{When in the Course of human events, it becomes necessary
 for one people to dissolve the political bands which have connected them 
with another, and to assume among the powers of the earth, the separate 
and equal station to which the Laws of Nature and of Nature's God entitle 
them, a decent respect to the opinions of mankind requires that they 
should declare the causes which impel them to the separation.}

Back to normal
\end{document}

enter image description here