4

How can i make (force) a paragraph to be justified and have a specified number of lines? Intra-line spacing is not important, but the paragraph should be completely rectangular.

Below is a minimal example. I tried to create 15 lines following the suggested answer from another question, but the result is not as I've expected.

Minimal example

%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode

\documentclass{article}
\usepackage[paperwidth=4.96in,paperheight=6.82in,margin=0mm]{geometry}
\usepackage{fontspec}
\usepackage[RTLdocument]{bidi}
\setmainfont[
Script=Arabic, Scale=1.5
]
 {Scheherazade-R.ttf}
\begin{document}
\sbox0{أي أعلنت ولاتّساع بال, ان فرنسا الحيلولة
قام, إيو نقطة الأهداف ما. أحدث إنطلاق بالتوقيع
على عن, ٣٠ شمال الشرق، الوراء يبق. لم حيث
الإقتصادي وبالتحديد،, الضروري الوزراء الولايات
مما في. ذلك حاول غريمه والفلبين و, أم وصل بمحاولة
ايطاليا،, ٢٠٠٤ وكسبت أخذ مع. تونس تشيكوسلوفاكيا
مدن أي, الشهير ومطالبة بالولايات مع وصل. دنو
منتصف السادس أن. ان ومطالبة الأمريكية عدد, شيء
ان بقعة وحلفاؤها. عل تشكيل الأوضاع واستمرت الى,
حيث إذ أوسع الإكتفاء. بهيئة لهيمنة كل تلك, دنو
مقاطعة الجديدة، ثم. إذ مسرح قدما على, حين قائمة
أفريقيا و, بخطوط وقدّموا لتقليعة لم أضف. اليها
بمباركة المتّبعة من عدم, أن المحيط الاندونيسية
مما, ان المدن الشهيرة كما.}
\begin{center}
\dimen0=\dimexpr\wd0/15\relax
\loop
\sbox2{\parbox[b]{\dimen0}{\parfillskip=0pt plus .1\hsize\unhcopy0}}
\ifdim\ht2>15\baselineskip
\advance\dimen0 1em
\repeat
\usebox2
\end{center}
\end{document}
  • Please help us to help you and add a minimal working example (MWE) that illustrates your problem. It will be much easier for us to reproduce your situation and find out what the issue is when we see compilable code, starting with \documentclass{...} and ending with \end{document}. – user31729 Mar 9 '15 at 23:00
  • 3
    Is this a duplicate of this (if not, please clarify the question) tex.stackexchange.com/questions/231329/… – David Carlisle Mar 9 '15 at 23:02
6

enter image description here

Not sure I used quite the same font, but anyway I made some assumptions in the referenced answer that were invalidated by the Arabic text. Specifically that the total height of the text is dominated by the height rather than depth of the letters, and that the height plus depth is less than baselineskip. that last was the main problem, as shown in the typeout using the font I used at least height + depth is around 17pt on a 12pt baseline.

increasing the baseline spacing by an arbitrary 1.5 times lets the loop settle on a better final value:

\documentclass{article}
\usepackage[paperwidth=4.96in,paperheight=6.82in,margin=0mm]{geometry}
\usepackage{fontspec}
\usepackage[RTLdocument]{bidi}
\setmainfont[
Script=Arabic, Scale=1.5
]
 {Scheherazade}
\begin{document}
\sbox0{أي أعلنت ولاتّساع بال, ان فرنسا الحيلولة قام, إيو نقطة الأهداف ما. أحدث إنطلاق بالتوقيع على عن, ٣٠ شمال الشرق، الوراء يبق. لم حيث الإقتصادي وبالتحديد،, الضروري الوزراء الولايات مما في. ذلك حاول غريمه والفلبين و, أم وصل بمحاولة ايطاليا،, ٢٠٠٤ وكسبت أخذ مع. تونس تشيكوسلوفاكيا مدن أي, الشهير ومطالبة بالولايات مع وصل. دنو منتصف السادس أن. ان ومطالبة الأمريكية عدد, شيء ان بقعة وحلفاؤها. عل تشكيل الأوضاع واستمرت الى, حيث إذ أوسع الإكتفاء. بهيئة لهيمنة كل تلك, دنو مقاطعة الجديدة، ثم. إذ مسرح قدما على, حين قائمة أفريقيا و, بخطوط وقدّموا لتقليعة لم أضف. اليها بمباركة المتّبعة من عدم, أن المحيط الاندونيسية مما, ان المدن الشهيرة كما.}
\begin{center}
\dimen0=\dimexpr\wd0/15\relax



\typeout{\the\dimexpr\ht0+\dp0\relax}
\typeout{\the\baselineskip}

\linespread{1.5}\selectfont

\loop
\sbox2{\parbox[b]{\dimen0}{\linespread{1.5}\selectfont\parfillskip=0pt plus .1\hsize\unhcopy0}}
\ifdim\ht2>15\baselineskip
\advance\dimen0 .1em
\repeat
\usebox2
\end{center}
\end{document}

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.