![如果两列线条非常接近,如何平衡它们](https://linux22.com/image/362959/%E5%A6%82%E6%9E%9C%E4%B8%A4%E5%88%97%E7%BA%BF%E6%9D%A1%E9%9D%9E%E5%B8%B8%E6%8E%A5%E8%BF%91%EF%BC%8C%E5%A6%82%E4%BD%95%E5%B9%B3%E8%A1%A1%E5%AE%83%E4%BB%AC.png)
如果两列之间的线条非常接近,如何使用 multicol 包来平衡两列?顶部和底部对齐,但中间的线条通常不对齐。
本练习的实际目的是乌尔都语 nastaleeq 脚本,这很有意义。但是,为了简化问题,我在以下代码中使用了拉丁脚本。
\documentclass[14pt]{memoir}
\usepackage{multicol}
\linespread{.4}
\raggedcolumns
\maxsecnumdepth{none}
\setsecheadstyle{\centering\normalsize\bfseries}
\setbeforesecskip{-1\onelineskip}
\setlength\aftersecskip{ 1sp}
\begin{document}
\begin{multicols}{2}
\section{Lorem ipsum}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam congue dolor nec placerat laoreet. Nullam ut est vel arcu consequat viverra in ut nisi. Pellentesque ac nisl eu sem dapibus congue. Mauris non varius tortor, sit amet molestie lacus. Nulla sagittis eu metus molestie tempor. Proin vitae risus neque. Etiam urna elit, auctor viverra semper a, convallis eu ante. Duis iaculis turpis quis sem vestibulum ultricies eu vel est. Sed congue nunc eu eleifend iaculis. Vestibulum tortor lectus, suscipit et metus sit amet, cursus feugiat arcu.
\section{Section}
Etiam vulputate nibh a lorem consequat euismod. Nam vitae velit pellentesque, viverra purus sed, ultrices dui. Morbi et lorem ac felis suscipit viverra. Sed tempor ligula et dictum suscipit. Sed ac eleifend tortor. Pellentesque non augue nibh. Maecenas hendrerit lectus purus, ac viverra lacus tristique ut. Ut a lorem eros. Nunc ultricies pharetra sapien non convallis. Etiam ullamcorper finibus lectus, non tristique diam hendrerit at. Fusce eleifend lectus eu ex tempus, vitae mollis magna feugiat. Nullam ut odio consectetur, egestas odio in, porta velit.
Maecenas id consequat felis, eget lacinia libero. Proin congue interdum dolor, at rhoncus tortor consequat sit amet. Sed ex ante, consectetur et eros sed, consectetur tempus tellus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Maecenas vel metus eu elit sollicitudin sagittis. Phasellus accumsan, ex a accumsan malesuada, sem augue mollis nisi, ut aliquam lorem magna id neque. Ut sagittis sem vitae elit rutrum, id condimentum augue rutrum. Cras id iaculis leo. Nullam ut vehicula tellus. Sed pulvinar lectus nunc, et pellentesque neque tristique vitae. Nunc maximus odio felis, ut ullamcorper nulla porttitor sed. Fusce et ultrices mauris, non scelerisque dolor. Mauris ac imperdiet arcu.
\section{Section}
Suspendisse potenti. Maecenas ultrices sem non volutpat venenatis. Praesent consequat ante non consectetur porta. Cras elementum, ante id sollicitudin aliquet, mi neque vulputate nunc, vitae fringilla enim nulla sed risus. Vivamus nulla nulla, blandit at arcu sit amet, sollicitudin dictum neque. Praesent nec sodales enim. Integer lobortis eu purus non euismod. Donec nec pretium nulla, eget tempus augue. Nulla facilisi. Donec at tellus orci. Cras eleifend, ex id consectetur accumsan, ipsum lacus elementum nibh, tincidunt cursus elit leo sodales sapien. Etiam faucibus tristique metus eu malesuada. Vestibulum et turpis id sapien varius molestie sit amet eget arcu. Sed auctor nisi nec magna tempus congue.
Morbi turpis tellus, ullamcorper eget magna ac, semper elementum metus. Morbi sit amet tellus a diam condimentum hendrerit. Sed faucibus a dui et tempor.
\end{multicols}
\end{document}
(好的,对于任何感兴趣的人,这里有一个乌尔都语的例子。请注意,由于“正常”阿拉伯字体的水平性质,它们不会出现这个问题:)
%run with xelatex
\documentclass[12pt]{memoir}
\usepackage{multicol}
\usepackage{fontspec}
\setmainfont[AutoFakeBold=2.0,Script=Arabic,Scale=1, WordSpace=6]{Jameel Noori Nastaleeq}
\usepackage[RTLdocument,extrafootnotefeatures]{bidi}
\OnehalfSpacing
\raggedcolumns
\setsecnumdepth{none}
\setsecheadstyle{\centering\normalsize\bfseries}
\setbeforesecskip{-1\onelineskip}
\setlength\aftersecskip{1sp}
\begin{document}
\begin{multicols}{2}
. برصغیر پاک و ہند کے اکثر علاقوں میں بولی اور سمجھی جانے والی زبان جس کے لغات میں پراکرت نیز غیر پراکرت، دیسی لفظوں کے ساتھ ساتھ عربی فارسی ترکی اور کچھ یورپی زبانوں کے الفاظ بھی شامل ہیں اور جس کی قواعد میں عہد بہ عہد تصرفات اور مقامی اختلافات کے باوجود آریائی اثر غالب ہے۔ (ابتداءً ہندوی یا ہندی کے نام سے متعارف رہی۔ ابتدا یا آغاز کے بارے میں مختلف نظریات ہیں : بعض لوگ سورسینی یا اب بھرنش کی جدید ترقی یافتہ یا ترمیم شدہ شکل بتاتے ہیں جس نے عہد غزنوی کے لگ بھگ نیا روپ نکالنا شروع کیا اور جو تقریباً چودھویں صدی سے ضبط تحریر میں آئی۔ منظوم اردو کو ریختہ کہتے تھے۔
"اردو کی ابتدائی نشوونما میں صوفیا کرام کا کام" (کتاب کا نام)۔،
\section{ایک}
دہلی کے محاورے کے مستند ہونے کی سند قلعہ معلٰی کی زبان ہوئی؛ اس بنا پر زبان اردوئے معلٰی کہلائی جو کثرت استعمال سے اردو ہو گئی۔ بعض مغربی مصنفوں نے اسے مورز کا نام بھی دیا۔ جدید ہندی سے عربی فارسی الفاظ کی فراوانی تدھبو کے رجحان اور عربی رسم الخط کی بنا پر متمیز؛ عربی رسم الخط میں لکھی جاتی ہے جس میں اردو کی مخصوص آوازوں کیلئے کچھ اضافے کر لیے گئے ہیں۔ کئی سو سال کا ادبی اور علمی ذخیرہ اس میں موجود ہے۔ خصوصاً بیسویں صدی میں جدید علوم و فنون کی بکثرت کتابیں اس میں تصنیف و تالیف اور ترجمہ ہوئیں، اور بے شمار علمی اصطلاحات وضع ہوئیں؛ اس طرح یہ اعلٰی تعلیم کے مختلف درجات میں انگریزی کی جگہ برصغیر کے دفتروں میں رائج ہوئی، بیسویں صدی کے آغاز سے کچھ پہلے اردو ہندی کا قضیہ شروع ہوا اور ایک نئی زبان ہندی بنائی گئی، برصغیر پاک و ہند کی سیاسی جدوجہد آزادی میں اردو کا بڑا حصّہ ہے)۔
\section{دو}
دہلی کے محاورے کے مستند ہونے کی سند قلعہ معلٰی کی زبان ہوئی؛ اس بنا پر زبان اردوئے معلٰی کہلائی جو کثرت استعمال سے اردو ہو گئی۔ بعض مغربی مصنفوں نے اسے مورز کا نام بھی دیا۔ جدید ہندی سے عربی فارسی الفاظ کی فراوانی تدھبو کے رجحان اور عربی رسم الخط کی بنا پر متمیز؛ عربی رسم الخط میں لکھی جاتی ہے جس میں اردو کی مخصوص آوازوں کیلئے کچھ اضافے کر لیے گئے ہیں۔ کئی سو سال کا ادبی اور علمی ذخیرہ اس میں موجود ہے۔ خصوصاً بیسویں صدی میں جدید علوم و فنون کی بکثرت کتابیں اس میں تصنیف و تالیف اور ترجمہ ہوئیں، اور بے شمار علمی اصطلاحات وضع ہوئیں؛ اس طرح یہ اعلٰی تعلیم کے مختلف درجات میں انگریزی کی جگہ برصغیر کے دفتروں میں رائج ہوئی، بیسویں صدی کے آغاز سے کچھ پہلے اردو ہندی کا قضیہ شروع ہوا اور ایک نئی زبان ہندی بنائی گئی، برصغیر پاک و ہند کی سیاسی جدوجہد آزادی میں اردو کا بڑا حصّہ ہے)۔
\end{multicols}
\end{document}
(文字取自乌尔都语维基词典,“乌尔都语”)
我一直在处理使用 \columnbreak\vspace* 对齐列和列内 vspace 的问题。我本以为,由于前面有空格,部分标题总会得到适当调整,但事实往往并非如此。这种“解决方案”当然违背了 latex 的初衷,而且无论如何都很麻烦。
答案1
使用 latex 进行网格排版并不容易。但对于您而言,由于行的内容(字母)大于基线跳跃(由于拉丁文示例中的 \linespread 较小,而另一种情况下则是由于脚本的性质),因此您会得到不均匀的行距。TeX 会尽力避免两条线重叠,因此会将线推开。您可以通过设置为\lineskiplimit
合适的负长度来避免这种情况。然后您将获得均匀的行距,但您也会得到重叠的行。如果我添加以下内容,这里是您的拉丁文脚本示例的输出\lineskiplimit=-\maxdimen
:
因此,您必须尝试使用您的真实示例会发生什么——如果您得到重叠的线条并且您想避免它,您将必须扩大行距,或者忍受不均匀的外观。
编辑
对于乌尔都语脚本,由于使用了 \OnehalfSpacing,因此部分间距不均匀。这意味着行间距不是 14.5pt( 的值\onelineskip
),而是接近 18pt。如果在部分前的空间使用 \baselineskip,则所有内容都可以很好地对齐:
\documentclass[12pt]{memoir}
\usepackage{multicol}
\usepackage{fontspec,tikz}
\setmainfont[AutoFakeBold=2.0,Script=Arabic,Scale=1, WordSpace=6]{Jameel Noori Nastaleeq}
\usepackage[RTLdocument,extrafootnotefeatures]{bidi}
\OnehalfSpacing
\raggedcolumns
\setsecnumdepth{none}
\setsecheadstyle{\centering\normalsize\bfseries}
\setbeforesecskip{-1\baselineskip}
\setlength\aftersecskip{1sp}
\begin{document}\lineskiplimit=-\maxdimen
\begin{multicols}{2}
. برصغیر پاک و ہند کے اکثر علاقوں میں بولی اور سمجھی جانے والی زبان جس کے لغات میں پراکرت نیز غیر پراکرت، دیسی لفظوں کے ساتھ ساتھ عربی فارسی ترکی اور کچھ یورپی زبانوں کے الفاظ بھی شامل ہیں اور جس کی قواعد میں عہد بہ عہد تصرفات اور مقامی اختلافات کے باوجود آریائی اثر غالب ہے۔ (ابتداءً ہندوی یا ہندی کے نام سے متعارف رہی۔ ابتدا یا آغاز کے بارے میں مختلف نظریات ہیں : بعض لوگ سورسینی یا اب بھرنش کی جدید ترقی یافتہ یا ترمیم شدہ شکل بتاتے ہیں جس نے عہد غزنوی کے لگ بھگ نیا روپ نکالنا شروع کیا اور جو تقریباً چودھویں صدی سے ضبط تحریر میں آئی۔ منظوم اردو کو ریختہ کہتے تھے۔
"اردو کی ابتدائی نشوونما میں صوفیا کرام کا کام" (کتاب کا نام)۔،
\section{ایک}
دہلی کے محاورے کے مستند ہونے کی سند قلعہ معلٰی کی زبان ہوئی؛ اس بنا پر زبان اردوئے معلٰی کہلائی جو کثرت استعمال سے اردو ہو گئی۔ بعض مغربی مصنفوں نے اسے مورز کا نام بھی دیا۔ جدید ہندی سے عربی فارسی الفاظ کی فراوانی تدھبو کے رجحان اور عربی رسم الخط کی بنا پر متمیز؛ عربی رسم الخط میں لکھی جاتی ہے جس میں اردو کی مخصوص آوازوں کیلئے کچھ اضافے کر لیے گئے ہیں۔ کئی سو سال کا ادبی اور علمی ذخیرہ اس میں موجود ہے۔ خصوصاً بیسویں صدی میں جدید علوم و فنون کی بکثرت کتابیں اس میں تصنیف و تالیف اور ترجمہ ہوئیں، اور بے شمار علمی اصطلاحات وضع ہوئیں؛ اس طرح یہ اعلٰی تعلیم کے مختلف درجات میں انگریزی کی جگہ برصغیر کے دفتروں میں رائج ہوئی، بیسویں صدی کے آغاز سے کچھ پہلے اردو ہندی کا قضیہ شروع ہوا اور ایک نئی زبان ہندی بنائی گئی، برصغیر پاک و ہند کی سیاسی جدوجہد آزادی میں اردو کا بڑا حصّہ ہے)۔
\section{دو}
دہلی کے محاورے کے مستند ہونے کی سند قلعہ معلٰی کی زبان ہوئی؛ اس بنا پر زبان اردوئے معلٰی کہلائی جو کثرت استعمال سے اردو ہو گئی۔ بعض مغربی مصنفوں نے اسے مورز کا نام بھی دیا۔ جدید ہندی سے عربی فارسی الفاظ کی فراوانی تدھبو کے رجحان اور عربی رسم الخط کی بنا پر متمیز؛ عربی رسم الخط میں لکھی جاتی ہے جس میں اردو کی مخصوص آوازوں کیلئے کچھ اضافے کر لیے گئے ہیں۔ کئی سو سال کا ادبی اور علمی ذخیرہ اس میں موجود ہے۔ خصوصاً بیسویں صدی میں جدید علوم و فنون کی بکثرت کتابیں اس میں تصنیف و تالیف اور ترجمہ ہوئیں، اور بے شمار علمی اصطلاحات وضع ہوئیں؛ اس طرح یہ اعلٰی تعلیم کے مختلف درجات میں انگریزی کی جگہ برصغیر کے دفتروں میں رائج ہوئی، بیسویں صدی کے آغاز سے کچھ پہلے اردو ہندی کا قضیہ شروع ہوا اور ایک نئی زبان ہندی بنائی گئی، برصغیر پاک و ہند کی سیاسی جدوجہد آزادی میں اردو کا بڑا حصّہ ہے)۔
\end{multicols}
\begin{tikzpicture}[remember picture,overlay]
\foreach\x in {1,2,...,24}
{\draw[red] ([yshift=\dimexpr-3cm -\x\normalbaselineskip]current page.north west) --++(\paperwidth,0);}
\end{tikzpicture}
\end{document}