如何在 scriptio continua 中自动换行

如何在 scriptio continua 中自动换行

如何为连续脚本(没有分隔不同单词的设备的环境)自动换行?我正在使用 XeLaTeX。

例如,以下代码由于以下错误而无法生成 PDF:段落第 14-15 行的 \hbox 过满(11856.81178pt 太宽)

\documentclass{book}
\usepackage{geometry}
\usepackage[skip=0pt, indent=20pt]{parskip}
\usepackage{microtype}
\usepackage[english,greek]{babel}
\usepackage{fontspec}

\setmainfont{Times New Roman}

\emergencystretch 30pt

\begin{document}

ΑΜΕΝΑΡΤΑΣΤΟΥΒΑΣΙΛΙΚΟΥΓΕΝΟΥΣΤΟΥΑΙΓΥΠΤΙΟΥΗΤΟΥΚΑΛΛΙΚΡΑΤΟΥΣΙΣΙΔΟΣΙΕΡΕΩΣΗΝΟΙΜΕΝΘΕΟΙΤΡΕΦΟΥΣΙΤΑΔΕΔΑΙΜΟΝΙΑΥΠΟΤΑΣΣΕΤΑΙΗΔΗΤΕΛΕΥΤΩΣΑΤΙΣΙΣΘΕΝΕΙΤΩΠΑΙΔΙΕΠΙΣΤΕΛΛΕΙΤΑΔΕΣΥΝΕΦΥΓΟΝΓΑΡΠΟΤΕΕΚΤΗΣΑΙΓΥΠΤΙΑΣΕΠΙΝΕΚΤΑΝΕΒΟΥΜΕΤΑΤΟΥΣΟΥΠΑΤΡΟΣΔΙΑΤΟΝΕΡΩΤΑΤΟΝΕΜΟΝΕΠΙΟΡΚΗΣΑΝΤΟΣΦΥΓΟΝΤΕΣΔΕΠΡΟΣΝΟΤΟΝΔΙΑΠΟΝΤΙΟΙΚΑΙΚΔΜΗΝΑΣΚΑΤΑΤΑΠΑΡΑΘΑΛΑΣΣΙΑΤΗΣΛΙΒΥΗΣΤΑΠΡΟΣΗΛΙΟΥΑΝΑΤΟΛΑΣΠΛΑΝΗΘΕΝΤΕΣΕΝΘΑΠΕΡΠΕΤΡΑΤΙΣΜΕΓΑΛΗΓΛΥΠΤΟΝΟΜΟΙΩΜΑΑΙΘΙΟΠΟΣΚΕΦΑΛΗΣΕΙΤΑΗΜΕΡΑΣΔΑΠΟΣΤΟΜΑΤΟΣΠΟΤΑΜΟΥΜΕΓΑΛΟΥΕΚΠΕΣΟΝΤΕΣΟΙΜΕΝΚΑΤΕΠΟΝΤΙΣΘΗΜΕΝΟΙΔΕΝΟΣΩΙΑΠΕΘΑΝΟΜΕΝΤΕΛΟΣΔΕΥΠΑΓΡΙΩΝΑΝΘΡΩΠΩΝΕΦΕΡΟΜΕΘΑΔΙΑΕΛΕΩΝΤΕΚΑΙΤΕΝΑΓΕΩΝΕΝΘΑΠΕΡΠΤΗΝΩΝΠΛΗΘΟΣΑΠΟΚΡΥΠΤΕΙΤΟΝΟΥΡΑΝΟΝΗΜΕΡΑΣΙΕΩΣΗΛΘΟΜΕΝΕΙΣΚΟΙΛΟΝΤΙΟΡΟΣΕΝΘΑΠΟΤΕΜΕΓΑΛΗΜΕΝΠΟΛΙΣΗΝΑΝΤΡΑΔΕΑΠΕΙΡΟΝΑΗΓΑΓΟΝΔΕΩΣΒΑΣΙΛΕΙΑΝΤΗΝΤΩΝΞΕΝΟΥΣΧΥΤΡΑΙΣΣΤΕΦΑΝΟΥΝΤΩΝΗΤΙΣΜΑΓΕΙΑΜΕΝΕΧΡΗΤΟΕΠΙΣΤΗΜΗΔΕΠΑΝΤΩΝΚΑΙΔΗΚΑΙΚΑΛΛΟΣΚΑΙΡΩΜΗΝΑΓΗΡΩΣΗΝΗΔΕΚΑΛΛΙΚΡΑΤΟΥΣΤΟΥΣΟΥΠΑΤΡΟΣΕΡΑΣΘΕΙΣΑΤΟΜΕΝΠΡΩΤΟΝΣΥΝΟΙΚΕΙΝΕΒΟΥΛΕΤΟΕΜΕΔΕΑΝΕΛΕΙΝΕΠΕΙΤΑΩΣΟΥΚΑΝΕΠΕΙΘΕΝΕΜΕΓΑΡΥΠΕΡΕΦΙΛΕΙΚΑΙΤΗΝΞΕΝΗΝΕΦΟΒΕΙΤΟΑΠΗΓΑΓΕΝΗΜΑΣΥΠΟΜΑΓΕΙΑΣΚΑΘΟΔΟΥΣΣΦΑΛΕΡΑΣΕΝΘΑΤΟΒΑΡΑΘΡΟΝΤΟΜΕΓΑΟΥΚΑΤΑΣΤΟΜΑΕΚΕΙΤΟΟΓΕΡΩΝΟΦΙΛΟΣΟΦΟΣΤΕΘΝΕΩΣΑΦΙΚΟΜΕΝΟΙΣΔΕΔΕΙΞΕΦΩΣΤΟΥΒΙΟΥΕΥΘΥΟΙΟΝΚΙΟΝΑΕΛΙΣΣΟΜΕΝΟΝΦΩΝΗΝΙΕΝΤΑΚΑΘΑΠΕΡΒΡΟΝΤΗΣΕΙΤΑΔΙΑΠΥΡΟΣΒΕΒΗΚΥΙΑΑΒΛΑΒΗΣΚΑΙΕΤΙΚΑΛΛΙΩΝΑΥΤΗΕΑΥΤΗΣΕΞΕΦΑΝΗΕΚΔΕΤΟΥΤΩΝΩΜΟΣΕΚΑΙΤΟΝΣΟΝΠΑΤΕΡΑΑΘΑΝΑΤΟΝΑΠΟΔΕΙΞΕΙΝΕΙΣΥΝΟΙΚΕΙΝΟΙΒΟΥΛΟΙΤΟΕΜΕΔΕΑΝΕΛΕΙΝΟΥΓΑΡΟΥΝΑΥΤΗΑΝΕΛΕΙΝΙΣΧΥΕΝΥΠΟΤΩΝΗΜΕΔΑΠΩΝΗΝΚΑΙΑΥΤΗΕΧΩΜΑΓΕΙΑΣΟΔΟΥΔΕΝΤΙΜΑΛΛΟΝΗΘΕΛΕΤΩΧΕΙΡΕΤΩΝΟΜΜΑΤΩΝΠΡΟΙΣΧΩΝΙΝΑΔΗΤΟΤΗΣΓΥΝΑΙΚΟΣΚΑΛΛΟΣΜΗΟΡΩΗΕΠΕΙΤΑΟΡΓΙΣΘΕΙΣΑΚΑΤΕΓΟΗΤΕΥΣΕΜΕΝΑΥΤΟΝΑΠΟΛΟΜΕΝΟΝΜΕΝΤΟΙΚΛΑΟΥΣΑΚΑΙΟΔΥΡΟΜΕΝΗΕΚΕΙΘΕΝΑΠΗΝΕΓΚΕΝΕΜΕΔΕΦΟΒΩΙΑΦΗΚΕΝΕΙΣΣΤΟΜΑΤΟΥΜΕΓΑΛΟΥΠΟΤΑΜΟΥΤΟΥΝΑΥΣΙΠΟΡΟΥΠΟΡΡΩΔΕΝΑΥΣΙΝΕΦΩΝΠΕΡΠΛΕΟΥΣΑΕΤΕΚΟΝΣΕΑΠΟΠΛΕΥΣΑΣΑΜΟΛΙΣΠΟΤΕΔΕΥΡΟΑΘΗΝΑΖΕΚΑΤΗΓΑΓΟΜΗΝΣΥΔΕΩΤΙΣΙΣΘΕΝΕΣΩΝΕΠΙΣΤΕΛΛΩΜΗΟΛΙΓΩΡΕΙΔΕΙΓΑΡΤΗΝΓΥΝΑΙΚΑΑΝΑΖΗΤΕΙΝΗΝΠΩΣΤΟΤΟΥΒΙΟΥΜΥΣΤΗΡΙΟΝΑΝΕΥΡΗΣΚΑΙΑΝΑΙΡΕΙΝΗΝΠΟΥΠΑΡΑΣΧΗΔΙΑΤΟΝΣΟΝΠΑΤΕΡΑΚΑΛΛΙΚΡΑΤΗΝΕΙΔΕΦΟΒΟΥΜΕΝΟΣΗΔΙΑΑΛΛΟΤΙΑΥΤΟΣΛΕΙΠΕΙΤΟΥΕΡΓΟΥΠΑΣΙΤΟΙΣΥΣΤΕΡΟΝΑΥΤΟΤΟΥΤΟΕΠΙΣΤΕΛΛΩΕΩΣΠΟΤΕΑΓΑΘΟΣΤΙΣΓΕΝΟΜΕΝΟΣΤΩΠΥΡΙΛΟΥΣΑΣΘΑΙΤΟΛΜΗΣΕΙΚΑΙΤΑΑΡΙΣΤΕΙΑΕΧΩΝΒΑΣΙΛΕΥΣΑΙΤΩΝΑΝΘΡΩΠΩΝΑΠΙΣΤΑΜΕΝΔΗΤΑΤΟΙΑΥΤΑΛΕΓΩΟΜΩΣΔΕΑΑΥΤΗΕΓΝΩΚΑΟΥΚΕΨΕΥΣΑΜΗΝ

\end{document}

答案1

我会使用\XeTeXinterchartoks它来让你自动在字符之间插入允许中断的内容。

% TeX Program = xelatex

\documentclass{book}
\usepackage{geometry}
\usepackage[skip=0pt, indent=20pt]{parskip}
\usepackage{microtype}
\usepackage[english,greek]{babel}
\usepackage{fontspec}

\setmainfont{Times New Roman}

\newenvironment{scriptiocontinua}{%
  \XeTeXinterchartokenstate=1%
  \XeTeXinterchartoks 0 0 = {\penalty0\hskip0pt plus 1em\relax}%
}{}


\begin{document}
\begin{scriptiocontinua}
  ΑΜΕΝΑΡΤΑΣΤΟΥΒΑΣΙΛΙΚΟΥΓΕΝΟΥΣΤΟΥΑΙΓΥΠΤΙΟΥΗΤΟΥΚΑΛΛΙΚΡΑΤΟΥΣΙΣΙΔΟΣΙΕΡΕΩΣΗΝΟΙΜΕΝΘΕΟΙΤΡΕΦΟΥΣΙΤΑΔΕΔΑΙΜΟΝΙΑΥΠΟΤΑΣΣΕΤΑΙΗΔΗΤΕΛΕΥΤΩΣΑΤΙΣΙΣΘΕΝΕΙΤΩΠΑΙΔΙΕΠΙΣΤΕΛΛΕΙΤΑΔΕΣΥΝΕΦΥΓΟΝΓΑΡΠΟΤΕΕΚΤΗΣΑΙΓΥΠΤΙΑΣΕΠΙΝΕΚΤΑΝΕΒΟΥΜΕΤΑΤΟΥΣΟΥΠΑΤΡΟΣΔΙΑΤΟΝΕΡΩΤΑΤΟΝΕΜΟΝΕΠΙΟΡΚΗΣΑΝΤΟΣΦΥΓΟΝΤΕΣΔΕΠΡΟΣΝΟΤΟΝΔΙΑΠΟΝΤΙΟΙΚΑΙΚΔΜΗΝΑΣΚΑΤΑΤΑΠΑΡΑΘΑΛΑΣΣΙΑΤΗΣΛΙΒΥΗΣΤΑΠΡΟΣΗΛΙΟΥΑΝΑΤΟΛΑΣΠΛΑΝΗΘΕΝΤΕΣΕΝΘΑΠΕΡΠΕΤΡΑΤΙΣΜΕΓΑΛΗΓΛΥΠΤΟΝΟΜΟΙΩΜΑΑΙΘΙΟΠΟΣΚΕΦΑΛΗΣΕΙΤΑΗΜΕΡΑΣΔΑΠΟΣΤΟΜΑΤΟΣΠΟΤΑΜΟΥΜΕΓΑΛΟΥΕΚΠΕΣΟΝΤΕΣΟΙΜΕΝΚΑΤΕΠΟΝΤΙΣΘΗΜΕΝΟΙΔΕΝΟΣΩΙΑΠΕΘΑΝΟΜΕΝΤΕΛΟΣΔΕΥΠΑΓΡΙΩΝΑΝΘΡΩΠΩΝΕΦΕΡΟΜΕΘΑΔΙΑΕΛΕΩΝΤΕΚΑΙΤΕΝΑΓΕΩΝΕΝΘΑΠΕΡΠΤΗΝΩΝΠΛΗΘΟΣΑΠΟΚΡΥΠΤΕΙΤΟΝΟΥΡΑΝΟΝΗΜΕΡΑΣΙΕΩΣΗΛΘΟΜΕΝΕΙΣΚΟΙΛΟΝΤΙΟΡΟΣΕΝΘΑΠΟΤΕΜΕΓΑΛΗΜΕΝΠΟΛΙΣΗΝΑΝΤΡΑΔΕΑΠΕΙΡΟΝΑΗΓΑΓΟΝΔΕΩΣΒΑΣΙΛΕΙΑΝΤΗΝΤΩΝΞΕΝΟΥΣΧΥΤΡΑΙΣΣΤΕΦΑΝΟΥΝΤΩΝΗΤΙΣΜΑΓΕΙΑΜΕΝΕΧΡΗΤΟΕΠΙΣΤΗΜΗΔΕΠΑΝΤΩΝΚΑΙΔΗΚΑΙΚΑΛΛΟΣΚΑΙΡΩΜΗΝΑΓΗΡΩΣΗΝΗΔΕΚΑΛΛΙΚΡΑΤΟΥΣΤΟΥΣΟΥΠΑΤΡΟΣΕΡΑΣΘΕΙΣΑΤΟΜΕΝΠΡΩΤΟΝΣΥΝΟΙΚΕΙΝΕΒΟΥΛΕΤΟΕΜΕΔΕΑΝΕΛΕΙΝΕΠΕΙΤΑΩΣΟΥΚΑΝΕΠΕΙΘΕΝΕΜΕΓΑΡΥΠΕΡΕΦΙΛΕΙΚΑΙΤΗΝΞΕΝΗΝΕΦΟΒΕΙΤΟΑΠΗΓΑΓΕΝΗΜΑΣΥΠΟΜΑΓΕΙΑΣΚΑΘΟΔΟΥΣΣΦΑΛΕΡΑΣΕΝΘΑΤΟΒΑΡΑΘΡΟΝΤΟΜΕΓΑΟΥΚΑΤΑΣΤΟΜΑΕΚΕΙΤΟΟΓΕΡΩΝΟΦΙΛΟΣΟΦΟΣΤΕΘΝΕΩΣΑΦΙΚΟΜΕΝΟΙΣΔΕΔΕΙΞΕΦΩΣΤΟΥΒΙΟΥΕΥΘΥΟΙΟΝΚΙΟΝΑΕΛΙΣΣΟΜΕΝΟΝΦΩΝΗΝΙΕΝΤΑΚΑΘΑΠΕΡΒΡΟΝΤΗΣΕΙΤΑΔΙΑΠΥΡΟΣΒΕΒΗΚΥΙΑΑΒΛΑΒΗΣΚΑΙΕΤΙΚΑΛΛΙΩΝΑΥΤΗΕΑΥΤΗΣΕΞΕΦΑΝΗΕΚΔΕΤΟΥΤΩΝΩΜΟΣΕΚΑΙΤΟΝΣΟΝΠΑΤΕΡΑΑΘΑΝΑΤΟΝΑΠΟΔΕΙΞΕΙΝΕΙΣΥΝΟΙΚΕΙΝΟΙΒΟΥΛΟΙΤΟΕΜΕΔΕΑΝΕΛΕΙΝΟΥΓΑΡΟΥΝΑΥΤΗΑΝΕΛΕΙΝΙΣΧΥΕΝΥΠΟΤΩΝΗΜΕΔΑΠΩΝΗΝΚΑΙΑΥΤΗΕΧΩΜΑΓΕΙΑΣΟΔΟΥΔΕΝΤΙΜΑΛΛΟΝΗΘΕΛΕΤΩΧΕΙΡΕΤΩΝΟΜΜΑΤΩΝΠΡΟΙΣΧΩΝΙΝΑΔΗΤΟΤΗΣΓΥΝΑΙΚΟΣΚΑΛΛΟΣΜΗΟΡΩΗΕΠΕΙΤΑΟΡΓΙΣΘΕΙΣΑΚΑΤΕΓΟΗΤΕΥΣΕΜΕΝΑΥΤΟΝΑΠΟΛΟΜΕΝΟΝΜΕΝΤΟΙΚΛΑΟΥΣΑΚΑΙΟΔΥΡΟΜΕΝΗΕΚΕΙΘΕΝΑΠΗΝΕΓΚΕΝΕΜΕΔΕΦΟΒΩΙΑΦΗΚΕΝΕΙΣΣΤΟΜΑΤΟΥΜΕΓΑΛΟΥΠΟΤΑΜΟΥΤΟΥΝΑΥΣΙΠΟΡΟΥΠΟΡΡΩΔΕΝΑΥΣΙΝΕΦΩΝΠΕΡΠΛΕΟΥΣΑΕΤΕΚΟΝΣΕΑΠΟΠΛΕΥΣΑΣΑΜΟΛΙΣΠΟΤΕΔΕΥΡΟΑΘΗΝΑΖΕΚΑΤΗΓΑΓΟΜΗΝΣΥΔΕΩΤΙΣΙΣΘΕΝΕΣΩΝΕΠΙΣΤΕΛΛΩΜΗΟΛΙΓΩΡΕΙΔΕΙΓΑΡΤΗΝΓΥΝΑΙΚΑΑΝΑΖΗΤΕΙΝΗΝΠΩΣΤΟΤΟΥΒΙΟΥΜΥΣΤΗΡΙΟΝΑΝΕΥΡΗΣΚΑΙΑΝΑΙΡΕΙΝΗΝΠΟΥΠΑΡΑΣΧΗΔΙΑΤΟΝΣΟΝΠΑΤΕΡΑΚΑΛΛΙΚΡΑΤΗΝΕΙΔΕΦΟΒΟΥΜΕΝΟΣΗΔΙΑΑΛΛΟΤΙΑΥΤΟΣΛΕΙΠΕΙΤΟΥΕΡΓΟΥΠΑΣΙΤΟΙΣΥΣΤΕΡΟΝΑΥΤΟΤΟΥΤΟΕΠΙΣΤΕΛΛΩΕΩΣΠΟΤΕΑΓΑΘΟΣΤΙΣΓΕΝΟΜΕΝΟΣΤΩΠΥΡΙΛΟΥΣΑΣΘΑΙΤΟΛΜΗΣΕΙΚΑΙΤΑΑΡΙΣΤΕΙΑΕΧΩΝΒΑΣΙΛΕΥΣΑΙΤΩΝΑΝΘΡΩΠΩΝΑΠΙΣΤΑΜΕΝΔΗΤΑΤΟΙΑΥΤΑΛΕΓΩΟΜΩΣΔΕΑΑΥΤΗΕΓΝΩΚΑΟΥΚΕΨΕΥΣΑΜΗΝ
\end{scriptiocontinua}
\end{document}

输出

答案2

您可以\hskip0pt plus 1em在递归循环中在每个打印字符后添加。此解决方案适用于每个 TeX 引擎(不仅仅是 XeTeX)。例如在 OpTeX 中:

\fontfam[newcm]

\long\def\scriptiocontinua#1{#1%
   \unless\ifcat#1\relax \hskip0pt plus1em\relax 
      \expandafter\scriptiocontinua\fi
}

\scriptiocontinua
ΑΜΕΝΑΡΤΑΣΤΟΥΒΑΣΙΛΙΚΟΥΓΕΝΟΥΣΤΟΥΑΙΓΥΠΤΙΟΥΗΤΟΥΚΑΛΛΙΚΡΑΤΟΥΣΙΣΙΔΟΣΙΕΡΕΩΣΗΝΟΙΜΕΝΘΕΟΙΤΡΕΦΟΥΣΙΤΑΔΕΔΑΙΜΟΝΙΑΥΠΟΤΑΣΣΕΤΑΙΗΔΗΤΕΛΕΥΤΩΣΑΤΙΣΙΣΘΕΝΕΙΤΩΠΑΙΔΙΕΠΙΣΤΕΛΛΕΙΤΑΔΕΣΥΝΕΦΥΓΟΝΓΑΡΠΟΤΕΕΚΤΗΣΑΙΓΥΠΤΙΑΣΕΠΙΝΕΚΤΑΝΕΒΟΥΜΕΤΑΤΟΥΣΟΥΠΑΤΡΟΣΔΙΑΤΟΝΕΡΩΤΑΤΟΝΕΜΟΝΕΠΙΟΡΚΗΣΑΝΤΟΣΦΥΓΟΝΤΕΣΔΕΠΡΟΣΝΟΤΟΝΔΙΑΠΟΝΤΙΟΙΚΑΙΚΔΜΗΝΑΣΚΑΤΑΤΑΠΑΡΑΘΑΛΑΣΣΙΑΤΗΣΛΙΒΥΗΣΤΑΠΡΟΣΗΛΙΟΥΑΝΑΤΟΛΑΣΠΛΑΝΗΘΕΝΤΕΣΕΝΘΑΠΕΡΠΕΤΡΑΤΙΣΜΕΓΑΛΗΓΛΥΠΤΟΝΟΜΟΙΩΜΑΑΙΘΙΟΠΟΣΚΕΦΑΛΗΣΕΙΤΑΗΜΕΡΑΣΔΑΠΟΣΤΟΜΑΤΟΣΠΟΤΑΜΟΥΜΕΓΑΛΟΥΕΚΠΕΣΟΝΤΕΣΟΙΜΕΝΚΑΤΕΠΟΝΤΙΣΘΗΜΕΝΟΙΔΕΝΟΣΩΙΑΠΕΘΑΝΟΜΕΝΤΕΛΟΣΔΕΥΠΑΓΡΙΩΝΑΝΘΡΩΠΩΝΕΦΕΡΟΜΕΘΑΔΙΑΕΛΕΩΝΤΕΚΑΙΤΕΝΑΓΕΩΝΕΝΘΑΠΕΡΠΤΗΝΩΝΠΛΗΘΟΣΑΠΟΚΡΥΠΤΕΙΤΟΝΟΥΡΑΝΟΝΗΜΕΡΑΣΙΕΩΣΗΛΘΟΜΕΝΕΙΣΚΟΙΛΟΝΤΙΟΡΟΣΕΝΘΑΠΟΤΕΜΕΓΑΛΗΜΕΝΠΟΛΙΣΗΝΑΝΤΡΑΔΕΑΠΕΙΡΟΝΑΗΓΑΓΟΝΔΕΩΣΒΑΣΙΛΕΙΑΝΤΗΝΤΩΝΞΕΝΟΥΣΧΥΤΡΑΙΣΣΤΕΦΑΝΟΥΝΤΩΝΗΤΙΣΜΑΓΕΙΑΜΕΝΕΧΡΗΤΟΕΠΙΣΤΗΜΗΔΕΠΑΝΤΩΝΚΑΙΔΗΚΑΙΚΑΛΛΟΣΚΑΙΡΩΜΗΝΑΓΗΡΩΣΗΝΗΔΕΚΑΛΛΙΚΡΑΤΟΥΣΤΟΥΣΟΥΠΑΤΡΟΣΕΡΑΣΘΕΙΣΑΤΟΜΕΝΠΡΩΤΟΝΣΥΝΟΙΚΕΙΝΕΒΟΥΛΕΤΟΕΜΕΔΕΑΝΕΛΕΙΝΕΠΕΙΤΑΩΣΟΥΚΑΝΕΠΕΙΘΕΝΕΜΕΓΑΡΥΠΕΡΕΦΙΛΕΙΚΑΙΤΗΝΞΕΝΗΝΕΦΟΒΕΙΤΟΑΠΗΓΑΓΕΝΗΜΑΣΥΠΟΜΑΓΕΙΑΣΚΑΘΟΔΟΥΣΣΦΑΛΕΡΑΣΕΝΘΑΤΟΒΑΡΑΘΡΟΝΤΟΜΕΓΑΟΥΚΑΤΑΣΤΟΜΑΕΚΕΙΤΟΟΓΕΡΩΝΟΦΙΛΟΣΟΦΟΣΤΕΘΝΕΩΣΑΦΙΚΟΜΕΝΟΙΣΔΕΔΕΙΞΕΦΩΣΤΟΥΒΙΟΥΕΥΘΥΟΙΟΝΚΙΟΝΑΕΛΙΣΣΟΜΕΝΟΝΦΩΝΗΝΙΕΝΤΑΚΑΘΑΠΕΡΒΡΟΝΤΗΣΕΙΤΑΔΙΑΠΥΡΟΣΒΕΒΗΚΥΙΑΑΒΛΑΒΗΣΚΑΙΕΤΙΚΑΛΛΙΩΝΑΥΤΗΕΑΥΤΗΣΕΞΕΦΑΝΗΕΚΔΕΤΟΥΤΩΝΩΜΟΣΕΚΑΙΤΟΝΣΟΝΠΑΤΕΡΑΑΘΑΝΑΤΟΝΑΠΟΔΕΙΞΕΙΝΕΙΣΥΝΟΙΚΕΙΝΟΙΒΟΥΛΟΙΤΟΕΜΕΔΕΑΝΕΛΕΙΝΟΥΓΑΡΟΥΝΑΥΤΗΑΝΕΛΕΙΝΙΣΧΥΕΝΥΠΟΤΩΝΗΜΕΔΑΠΩΝΗΝΚΑΙΑΥΤΗΕΧΩΜΑΓΕΙΑΣΟΔΟΥΔΕΝΤΙΜΑΛΛΟΝΗΘΕΛΕΤΩΧΕΙΡΕΤΩΝΟΜΜΑΤΩΝΠΡΟΙΣΧΩΝΙΝΑΔΗΤΟΤΗΣΓΥΝΑΙΚΟΣΚΑΛΛΟΣΜΗΟΡΩΗΕΠΕΙΤΑΟΡΓΙΣΘΕΙΣΑΚΑΤΕΓΟΗΤΕΥΣΕΜΕΝΑΥΤΟΝΑΠΟΛΟΜΕΝΟΝΜΕΝΤΟΙΚΛΑΟΥΣΑΚΑΙΟΔΥΡΟΜΕΝΗΕΚΕΙΘΕΝΑΠΗΝΕΓΚΕΝΕΜΕΔΕΦΟΒΩΙΑΦΗΚΕΝΕΙΣΣΤΟΜΑΤΟΥΜΕΓΑΛΟΥΠΟΤΑΜΟΥΤΟΥΝΑΥΣΙΠΟΡΟΥΠΟΡΡΩΔΕΝΑΥΣΙΝΕΦΩΝΠΕΡΠΛΕΟΥΣΑΕΤΕΚΟΝΣΕΑΠΟΠΛΕΥΣΑΣΑΜΟΛΙΣΠΟΤΕΔΕΥΡΟΑΘΗΝΑΖΕΚΑΤΗΓΑΓΟΜΗΝΣΥΔΕΩΤΙΣΙΣΘΕΝΕΣΩΝΕΠΙΣΤΕΛΛΩΜΗΟΛΙΓΩΡΕΙΔΕΙΓΑΡΤΗΝΓΥΝΑΙΚΑΑΝΑΖΗΤΕΙΝΗΝΠΩΣΤΟΤΟΥΒΙΟΥΜΥΣΤΗΡΙΟΝΑΝΕΥΡΗΣΚΑΙΑΝΑΙΡΕΙΝΗΝΠΟΥΠΑΡΑΣΧΗΔΙΑΤΟΝΣΟΝΠΑΤΕΡΑΚΑΛΛΙΚΡΑΤΗΝΕΙΔΕΦΟΒΟΥΜΕΝΟΣΗΔΙΑΑΛΛΟΤΙΑΥΤΟΣΛΕΙΠΕΙΤΟΥΕΡΓΟΥΠΑΣΙΤΟΙΣΥΣΤΕΡΟΝΑΥΤΟΤΟΥΤΟΕΠΙΣΤΕΛΛΩΕΩΣΠΟΤΕΑΓΑΘΟΣΤΙΣΓΕΝΟΜΕΝΟΣΤΩΠΥΡΙΛΟΥΣΑΣΘΑΙΤΟΛΜΗΣΕΙΚΑΙΤΑΑΡΙΣΤΕΙΑΕΧΩΝΒΑΣΙΛΕΥΣΑΙΤΩΝΑΝΘΡΩΠΩΝΑΠΙΣΤΑΜΕΝΔΗΤΑΤΟΙΑΥΤΑΛΕΓΩΟΜΩΣΔΕΑΑΥΤΗΕΓΝΩΚΑΟΥΚΕΨΕΥΣΑΜΗΝ
\bye

答案3

这会\allowbreak在字符串中的每个字符之间添加。 \par用于标记字符串的结束。

\documentclass{book}
\usepackage{geometry}
\usepackage[skip=0pt, indent=20pt]{parskip}
\usepackage{microtype}
\usepackage[english,greek]{babel}
\usepackage{fontspec}

\setmainfont{Times New Roman}

\emergencystretch 30pt

\def\foo{}
\def\parse#1#2\par{\edef\foo{\foo #1\allowbreak}%
  \ifcat\empty#2\relax
  \else
    \parse#2\par
  \fi}
\begin{document}

\parse
ΑΜΕΝΑΡΤΑΣΤΟΥΒΑΣΙΛΙΚΟΥΓΕΝΟΥΣΤΟΥΑΙΓΥΠΤΙΟΥΗΤΟΥΚΑΛΛΙΚΡΑΤΟΥΣΙΣΙΔΟΣΙΕΡΕΩΣΗΝΟΙΜΕΝΘΕΟΙΤΡΕΦΟΥΣΙΤΑΔΕΔΑΙΜΟΝΙΑΥΠΟΤΑΣΣΕΤΑΙΗΔΗΤΕΛΕΥΤΩΣΑΤΙΣΙΣΘΕΝΕΙΤΩΠΑΙΔΙΕΠΙΣΤΕΛΛΕΙΤΑΔΕΣΥΝΕΦΥΓΟΝΓΑΡΠΟΤΕΕΚΤΗΣΑΙΓΥΠΤΙΑΣΕΠΙΝΕΚΤΑΝΕΒΟΥΜΕΤΑΤΟΥΣΟΥΠΑΤΡΟΣΔΙΑΤΟΝΕΡΩΤΑΤΟΝΕΜΟΝΕΠΙΟΡΚΗΣΑΝΤΟΣΦΥΓΟΝΤΕΣΔΕΠΡΟΣΝΟΤΟΝΔΙΑΠΟΝΤΙΟΙΚΑΙΚΔΜΗΝΑΣΚΑΤΑΤΑΠΑΡΑΘΑΛΑΣΣΙΑΤΗΣΛΙΒΥΗΣΤΑΠΡΟΣΗΛΙΟΥΑΝΑΤΟΛΑΣΠΛΑΝΗΘΕΝΤΕΣΕΝΘΑΠΕΡΠΕΤΡΑΤΙΣΜΕΓΑΛΗΓΛΥΠΤΟΝΟΜΟΙΩΜΑΑΙΘΙΟΠΟΣΚΕΦΑΛΗΣΕΙΤΑΗΜΕΡΑΣΔΑΠΟΣΤΟΜΑΤΟΣΠΟΤΑΜΟΥΜΕΓΑΛΟΥΕΚΠΕΣΟΝΤΕΣΟΙΜΕΝΚΑΤΕΠΟΝΤΙΣΘΗΜΕΝΟΙΔΕΝΟΣΩΙΑΠΕΘΑΝΟΜΕΝΤΕΛΟΣΔΕΥΠΑΓΡΙΩΝΑΝΘΡΩΠΩΝΕΦΕΡΟΜΕΘΑΔΙΑΕΛΕΩΝΤΕΚΑΙΤΕΝΑΓΕΩΝΕΝΘΑΠΕΡΠΤΗΝΩΝΠΛΗΘΟΣΑΠΟΚΡΥΠΤΕΙΤΟΝΟΥΡΑΝΟΝΗΜΕΡΑΣΙΕΩΣΗΛΘΟΜΕΝΕΙΣΚΟΙΛΟΝΤΙΟΡΟΣΕΝΘΑΠΟΤΕΜΕΓΑΛΗΜΕΝΠΟΛΙΣΗΝΑΝΤΡΑΔΕΑΠΕΙΡΟΝΑΗΓΑΓΟΝΔΕΩΣΒΑΣΙΛΕΙΑΝΤΗΝΤΩΝΞΕΝΟΥΣΧΥΤΡΑΙΣΣΤΕΦΑΝΟΥΝΤΩΝΗΤΙΣΜΑΓΕΙΑΜΕΝΕΧΡΗΤΟΕΠΙΣΤΗΜΗΔΕΠΑΝΤΩΝΚΑΙΔΗΚΑΙΚΑΛΛΟΣΚΑΙΡΩΜΗΝΑΓΗΡΩΣΗΝΗΔΕΚΑΛΛΙΚΡΑΤΟΥΣΤΟΥΣΟΥΠΑΤΡΟΣΕΡΑΣΘΕΙΣΑΤΟΜΕΝΠΡΩΤΟΝΣΥΝΟΙΚΕΙΝΕΒΟΥΛΕΤΟΕΜΕΔΕΑΝΕΛΕΙΝΕΠΕΙΤΑΩΣΟΥΚΑΝΕΠΕΙΘΕΝΕΜΕΓΑΡΥΠΕΡΕΦΙΛΕΙΚΑΙΤΗΝΞΕΝΗΝΕΦΟΒΕΙΤΟΑΠΗΓΑΓΕΝΗΜΑΣΥΠΟΜΑΓΕΙΑΣΚΑΘΟΔΟΥΣΣΦΑΛΕΡΑΣΕΝΘΑΤΟΒΑΡΑΘΡΟΝΤΟΜΕΓΑΟΥΚΑΤΑΣΤΟΜΑΕΚΕΙΤΟΟΓΕΡΩΝΟΦΙΛΟΣΟΦΟΣΤΕΘΝΕΩΣΑΦΙΚΟΜΕΝΟΙΣΔΕΔΕΙΞΕΦΩΣΤΟΥΒΙΟΥΕΥΘΥΟΙΟΝΚΙΟΝΑΕΛΙΣΣΟΜΕΝΟΝΦΩΝΗΝΙΕΝΤΑΚΑΘΑΠΕΡΒΡΟΝΤΗΣΕΙΤΑΔΙΑΠΥΡΟΣΒΕΒΗΚΥΙΑΑΒΛΑΒΗΣΚΑΙΕΤΙΚΑΛΛΙΩΝΑΥΤΗΕΑΥΤΗΣΕΞΕΦΑΝΗΕΚΔΕΤΟΥΤΩΝΩΜΟΣΕΚΑΙΤΟΝΣΟΝΠΑΤΕΡΑΑΘΑΝΑΤΟΝΑΠΟΔΕΙΞΕΙΝΕΙΣΥΝΟΙΚΕΙΝΟΙΒΟΥΛΟΙΤΟΕΜΕΔΕΑΝΕΛΕΙΝΟΥΓΑΡΟΥΝΑΥΤΗΑΝΕΛΕΙΝΙΣΧΥΕΝΥΠΟΤΩΝΗΜΕΔΑΠΩΝΗΝΚΑΙΑΥΤΗΕΧΩΜΑΓΕΙΑΣΟΔΟΥΔΕΝΤΙΜΑΛΛΟΝΗΘΕΛΕΤΩΧΕΙΡΕΤΩΝΟΜΜΑΤΩΝΠΡΟΙΣΧΩΝΙΝΑΔΗΤΟΤΗΣΓΥΝΑΙΚΟΣΚΑΛΛΟΣΜΗΟΡΩΗΕΠΕΙΤΑΟΡΓΙΣΘΕΙΣΑΚΑΤΕΓΟΗΤΕΥΣΕΜΕΝΑΥΤΟΝΑΠΟΛΟΜΕΝΟΝΜΕΝΤΟΙΚΛΑΟΥΣΑΚΑΙΟΔΥΡΟΜΕΝΗΕΚΕΙΘΕΝΑΠΗΝΕΓΚΕΝΕΜΕΔΕΦΟΒΩΙΑΦΗΚΕΝΕΙΣΣΤΟΜΑΤΟΥΜΕΓΑΛΟΥΠΟΤΑΜΟΥΤΟΥΝΑΥΣΙΠΟΡΟΥΠΟΡΡΩΔΕΝΑΥΣΙΝΕΦΩΝΠΕΡΠΛΕΟΥΣΑΕΤΕΚΟΝΣΕΑΠΟΠΛΕΥΣΑΣΑΜΟΛΙΣΠΟΤΕΔΕΥΡΟΑΘΗΝΑΖΕΚΑΤΗΓΑΓΟΜΗΝΣΥΔΕΩΤΙΣΙΣΘΕΝΕΣΩΝΕΠΙΣΤΕΛΛΩΜΗΟΛΙΓΩΡΕΙΔΕΙΓΑΡΤΗΝΓΥΝΑΙΚΑΑΝΑΖΗΤΕΙΝΗΝΠΩΣΤΟΤΟΥΒΙΟΥΜΥΣΤΗΡΙΟΝΑΝΕΥΡΗΣΚΑΙΑΝΑΙΡΕΙΝΗΝΠΟΥΠΑΡΑΣΧΗΔΙΑΤΟΝΣΟΝΠΑΤΕΡΑΚΑΛΛΙΚΡΑΤΗΝΕΙΔΕΦΟΒΟΥΜΕΝΟΣΗΔΙΑΑΛΛΟΤΙΑΥΤΟΣΛΕΙΠΕΙΤΟΥΕΡΓΟΥΠΑΣΙΤΟΙΣΥΣΤΕΡΟΝΑΥΤΟΤΟΥΤΟΕΠΙΣΤΕΛΛΩΕΩΣΠΟΤΕΑΓΑΘΟΣΤΙΣΓΕΝΟΜΕΝΟΣΤΩΠΥΡΙΛΟΥΣΑΣΘΑΙΤΟΛΜΗΣΕΙΚΑΙΤΑΑΡΙΣΤΕΙΑΕΧΩΝΒΑΣΙΛΕΥΣΑΙΤΩΝΑΝΘΡΩΠΩΝΑΠΙΣΤΑΜΕΝΔΗΤΑΤΟΙΑΥΤΑΛΕΓΩΟΜΩΣΔΕΑΑΥΤΗΕΓΝΩΚΑΟΥΚΕΨΕΥΣΑΜΗΝ

\noindent\foo

\end{document}

这应该更高效(并且可扩展)。这里\end用作分隔符。 \par有问题,但可以使用任何不会出现在文本中的标记。(例如\quark.)

\documentclass{book}
\usepackage{geometry}
\usepackage[skip=0pt, indent=20pt]{parskip}
\usepackage{microtype}
\usepackage[english,greek]{babel}
\usepackage{fontspec}

\setmainfont{Times New Roman}

\emergencystretch 30pt

\makeatletter
\def\parse#1\par{\@parse#1\end}

\def\@parse#1{\ifx\end#1\relax
  \par
\else
  #1\allowbreak
  \expandafter\@parse
\fi}
\makeatother

\begin{document}

\parse
ΑΜΕΝΑΡΤΑΣΤΟΥΒΑΣΙΛΙΚΟΥΓΕΝΟΥΣΤΟΥΑΙΓΥΠΤΙΟΥΗΤΟΥΚΑΛΛΙΚΡΑΤΟΥΣΙΣΙΔΟΣΙΕΡΕΩΣΗΝΟΙΜΕΝΘΕΟΙΤΡΕΦΟΥΣΙΤΑΔΕΔΑΙΜΟΝΙΑΥΠΟΤΑΣΣΕΤΑΙΗΔΗΤΕΛΕΥΤΩΣΑΤΙΣΙΣΘΕΝΕΙΤΩΠΑΙΔΙΕΠΙΣΤΕΛΛΕΙΤΑΔΕΣΥΝΕΦΥΓΟΝΓΑΡΠΟΤΕΕΚΤΗΣΑΙΓΥΠΤΙΑΣΕΠΙΝΕΚΤΑΝΕΒΟΥΜΕΤΑΤΟΥΣΟΥΠΑΤΡΟΣΔΙΑΤΟΝΕΡΩΤΑΤΟΝΕΜΟΝΕΠΙΟΡΚΗΣΑΝΤΟΣΦΥΓΟΝΤΕΣΔΕΠΡΟΣΝΟΤΟΝΔΙΑΠΟΝΤΙΟΙΚΑΙΚΔΜΗΝΑΣΚΑΤΑΤΑΠΑΡΑΘΑΛΑΣΣΙΑΤΗΣΛΙΒΥΗΣΤΑΠΡΟΣΗΛΙΟΥΑΝΑΤΟΛΑΣΠΛΑΝΗΘΕΝΤΕΣΕΝΘΑΠΕΡΠΕΤΡΑΤΙΣΜΕΓΑΛΗΓΛΥΠΤΟΝΟΜΟΙΩΜΑΑΙΘΙΟΠΟΣΚΕΦΑΛΗΣΕΙΤΑΗΜΕΡΑΣΔΑΠΟΣΤΟΜΑΤΟΣΠΟΤΑΜΟΥΜΕΓΑΛΟΥΕΚΠΕΣΟΝΤΕΣΟΙΜΕΝΚΑΤΕΠΟΝΤΙΣΘΗΜΕΝΟΙΔΕΝΟΣΩΙΑΠΕΘΑΝΟΜΕΝΤΕΛΟΣΔΕΥΠΑΓΡΙΩΝΑΝΘΡΩΠΩΝΕΦΕΡΟΜΕΘΑΔΙΑΕΛΕΩΝΤΕΚΑΙΤΕΝΑΓΕΩΝΕΝΘΑΠΕΡΠΤΗΝΩΝΠΛΗΘΟΣΑΠΟΚΡΥΠΤΕΙΤΟΝΟΥΡΑΝΟΝΗΜΕΡΑΣΙΕΩΣΗΛΘΟΜΕΝΕΙΣΚΟΙΛΟΝΤΙΟΡΟΣΕΝΘΑΠΟΤΕΜΕΓΑΛΗΜΕΝΠΟΛΙΣΗΝΑΝΤΡΑΔΕΑΠΕΙΡΟΝΑΗΓΑΓΟΝΔΕΩΣΒΑΣΙΛΕΙΑΝΤΗΝΤΩΝΞΕΝΟΥΣΧΥΤΡΑΙΣΣΤΕΦΑΝΟΥΝΤΩΝΗΤΙΣΜΑΓΕΙΑΜΕΝΕΧΡΗΤΟΕΠΙΣΤΗΜΗΔΕΠΑΝΤΩΝΚΑΙΔΗΚΑΙΚΑΛΛΟΣΚΑΙΡΩΜΗΝΑΓΗΡΩΣΗΝΗΔΕΚΑΛΛΙΚΡΑΤΟΥΣΤΟΥΣΟΥΠΑΤΡΟΣΕΡΑΣΘΕΙΣΑΤΟΜΕΝΠΡΩΤΟΝΣΥΝΟΙΚΕΙΝΕΒΟΥΛΕΤΟΕΜΕΔΕΑΝΕΛΕΙΝΕΠΕΙΤΑΩΣΟΥΚΑΝΕΠΕΙΘΕΝΕΜΕΓΑΡΥΠΕΡΕΦΙΛΕΙΚΑΙΤΗΝΞΕΝΗΝΕΦΟΒΕΙΤΟΑΠΗΓΑΓΕΝΗΜΑΣΥΠΟΜΑΓΕΙΑΣΚΑΘΟΔΟΥΣΣΦΑΛΕΡΑΣΕΝΘΑΤΟΒΑΡΑΘΡΟΝΤΟΜΕΓΑΟΥΚΑΤΑΣΤΟΜΑΕΚΕΙΤΟΟΓΕΡΩΝΟΦΙΛΟΣΟΦΟΣΤΕΘΝΕΩΣΑΦΙΚΟΜΕΝΟΙΣΔΕΔΕΙΞΕΦΩΣΤΟΥΒΙΟΥΕΥΘΥΟΙΟΝΚΙΟΝΑΕΛΙΣΣΟΜΕΝΟΝΦΩΝΗΝΙΕΝΤΑΚΑΘΑΠΕΡΒΡΟΝΤΗΣΕΙΤΑΔΙΑΠΥΡΟΣΒΕΒΗΚΥΙΑΑΒΛΑΒΗΣΚΑΙΕΤΙΚΑΛΛΙΩΝΑΥΤΗΕΑΥΤΗΣΕΞΕΦΑΝΗΕΚΔΕΤΟΥΤΩΝΩΜΟΣΕΚΑΙΤΟΝΣΟΝΠΑΤΕΡΑΑΘΑΝΑΤΟΝΑΠΟΔΕΙΞΕΙΝΕΙΣΥΝΟΙΚΕΙΝΟΙΒΟΥΛΟΙΤΟΕΜΕΔΕΑΝΕΛΕΙΝΟΥΓΑΡΟΥΝΑΥΤΗΑΝΕΛΕΙΝΙΣΧΥΕΝΥΠΟΤΩΝΗΜΕΔΑΠΩΝΗΝΚΑΙΑΥΤΗΕΧΩΜΑΓΕΙΑΣΟΔΟΥΔΕΝΤΙΜΑΛΛΟΝΗΘΕΛΕΤΩΧΕΙΡΕΤΩΝΟΜΜΑΤΩΝΠΡΟΙΣΧΩΝΙΝΑΔΗΤΟΤΗΣΓΥΝΑΙΚΟΣΚΑΛΛΟΣΜΗΟΡΩΗΕΠΕΙΤΑΟΡΓΙΣΘΕΙΣΑΚΑΤΕΓΟΗΤΕΥΣΕΜΕΝΑΥΤΟΝΑΠΟΛΟΜΕΝΟΝΜΕΝΤΟΙΚΛΑΟΥΣΑΚΑΙΟΔΥΡΟΜΕΝΗΕΚΕΙΘΕΝΑΠΗΝΕΓΚΕΝΕΜΕΔΕΦΟΒΩΙΑΦΗΚΕΝΕΙΣΣΤΟΜΑΤΟΥΜΕΓΑΛΟΥΠΟΤΑΜΟΥΤΟΥΝΑΥΣΙΠΟΡΟΥΠΟΡΡΩΔΕΝΑΥΣΙΝΕΦΩΝΠΕΡΠΛΕΟΥΣΑΕΤΕΚΟΝΣΕΑΠΟΠΛΕΥΣΑΣΑΜΟΛΙΣΠΟΤΕΔΕΥΡΟΑΘΗΝΑΖΕΚΑΤΗΓΑΓΟΜΗΝΣΥΔΕΩΤΙΣΙΣΘΕΝΕΣΩΝΕΠΙΣΤΕΛΛΩΜΗΟΛΙΓΩΡΕΙΔΕΙΓΑΡΤΗΝΓΥΝΑΙΚΑΑΝΑΖΗΤΕΙΝΗΝΠΩΣΤΟΤΟΥΒΙΟΥΜΥΣΤΗΡΙΟΝΑΝΕΥΡΗΣΚΑΙΑΝΑΙΡΕΙΝΗΝΠΟΥΠΑΡΑΣΧΗΔΙΑΤΟΝΣΟΝΠΑΤΕΡΑΚΑΛΛΙΚΡΑΤΗΝΕΙΔΕΦΟΒΟΥΜΕΝΟΣΗΔΙΑΑΛΛΟΤΙΑΥΤΟΣΛΕΙΠΕΙΤΟΥΕΡΓΟΥΠΑΣΙΤΟΙΣΥΣΤΕΡΟΝΑΥΤΟΤΟΥΤΟΕΠΙΣΤΕΛΛΩΕΩΣΠΟΤΕΑΓΑΘΟΣΤΙΣΓΕΝΟΜΕΝΟΣΤΩΠΥΡΙΛΟΥΣΑΣΘΑΙΤΟΛΜΗΣΕΙΚΑΙΤΑΑΡΙΣΤΕΙΑΕΧΩΝΒΑΣΙΛΕΥΣΑΙΤΩΝΑΝΘΡΩΠΩΝΑΠΙΣΤΑΜΕΝΔΗΤΑΤΟΙΑΥΤΑΛΕΓΩΟΜΩΣΔΕΑΑΥΤΗΕΓΝΩΚΑΟΥΚΕΨΕΥΣΑΜΗΝ

\end{document}

相关内容