The following code block was retrieved from this answer. It shows how to break long lines (see code and screenshot below.)
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\parindent0pt
\makeatletter
\def\scanfunction#1{#1}
\let\tempa@empty
\def\scan@letters#1#2{%
\g@addto@macro{\tempa}{#1\hskip 0pt plus 1sp minus 1sp}%
\ifx#2@empty
\else
\expandafter\scan@letters
\fi
#2}
\def\scan#1{%
\scan@letters #1@empty
}
\scan{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
\tempa
\lipsum[1]
\end{document}
I noticed that when using showframe from the geometry package, one the a's exceeded the range limit (see code and image below.)
\documentclass{article}
\usepackage[showframe]{geometry}
\begin{document}
\parindent0pt
\makeatletter
\def\scanfunction#1{#1}
\let\tempa@empty
\def\scan@letters#1#2{%
\g@addto@macro{\tempa}{#1\hskip 0pt plus 1sp minus 1sp}%
\ifx#2@empty
\else
\expandafter\scan@letters
\fi
#2}
\def\scan#1{%
\scan@letters #1@empty
}
\scan{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
\tempa
\end{document}
I solved this issue by changing 1sp to 3sp (see code and screenshot below.)
\documentclass{article}
\usepackage[showframe]{geometry}
\begin{document}
\parindent0pt
\makeatletter
\def\scanfunction#1{#1}
\let\tempa@empty
\def\scan@letters#1#2{%
\g@addto@macro{\tempa}{#1\hskip 0pt plus 3sp minus 3sp}%
\ifx#2@empty
\else
\expandafter\scan@letters
\fi
#2}
\def\scan#1{%
\scan@letters #1@empty
}
\scan{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
\tempa
\end{document}
However, this doesn't work when increasing the font size (see code and screenshot below.). The following document was compiled using xelatex to set the font size to 60pt.
\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage{lipsum}
\begin{document}
\fontsize{60pt}{60pt}\selectfont
\parindent0pt
\makeatletter
\def\scanfunction#1{#1}
\let\tempa@empty
\def\scan@letters#1#2{%
\g@addto@macro{\tempa}{#1\hskip 0pt plus 3sp minus 3sp}%
\ifx#2@empty
\else
\expandafter\scan@letters
\fi
#2}
\def\scan#1{%
\scan@letters #1@empty
}
\scan{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
\tempa
\end{document}
The excess space increases as the font size increases (see code and screenshot below.) The following document was compiled using xelatex to set the font size to 100pt.
\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage{lipsum}
\begin{document}
\fontsize{100pt}{100pt}\selectfont
\parindent0pt
\makeatletter
\def\scanfunction#1{#1}
\let\tempa@empty
\def\scan@letters#1#2{%
\g@addto@macro{\tempa}{#1\hskip 0pt plus 3sp minus 3sp}%
\ifx#2@empty
\else
\expandafter\scan@letters
\fi
#2}
\def\scan#1{%
\scan@letters #1@empty
}
\scan{CCCCCCCCCCCCCC}
\tempa
\end{document}
My question is: How to break long lines without exceeding page limits for any given font size when compiling using xelatex?





