% macros for no-fill, built on Plain \catcode`\@=11\relax % allow @ in macro names % a simple no-fill, used as % % \nofill % Here is some no-fill text. % This line starts with three spaces. % This is the last line. It has embedded spaces which will appear. % \endnofill % % You might want to switch to a fixed-width font when you use % these macros. \def\nofill {% \begingroup % spaces made active so they can be tested for at start of lines % and so multiple spaces aren't collapsed to one. \obeyspaces % nofill via every line a par; if spaces start next line % we do a \noindent to make sure a par gets started. \parskip=\z@ \parindent=\z@ \let\p@r=\par \def\par{\p@r \ifspacenext{\noindent}{}}% \obeylines} \def\endnofill {% \p@r % in case user forgot last carriage return \endgroup} % \ifspacenext is used as: % \ifspacenext {}{} % It executes the true tokens if % the next character is an active space, the false tokens % otherwise. The same technique can be used to check for any % character, not just active space. % You can NOT nest uses of \ifspacenext! % get a token which is \ifx-equal to active space, so we can test % for it {\obeyspaces\global\let\sp@ce= \relax} \def\ifspacenext #1#2{% \def\truet@ks{#1}% \def\falset@ks{#2}% \futurelet\next\ifsp@cenext} \def\ifsp@cenext {% \ifx\next\sp@ce \truet@ks \else \falset@ks \fi} \catcode`\@=12\relax % make @ inaccessible again