2

I need a macro which replaces the spaces of a text by slashes. To allow justification, it's necessary to put some glue before and after a slash. No slash should appear at the beginning and at the end of a line. Using the following code, the text is not justified at the right edge. How can I change this?

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn

\skip_const:Nn \l_mymodule_slashskip_skip {0em plus0.25em minus0.1em}

\NewDocumentCommand \ReplaceSpaces {m}
   {
      \tl_set:Nn \l_tmpa_tl {#1}

      \tl_replace_all:Nnn \l_tmpa_tl {~}
         {
            \penalty10000
            \skip_horizontal:N \l_mymodule_slashskip_skip
            \discretionary{}{}{/}
            \penalty10000
            \skip_horizontal:N \l_mymodule_slashskip_skip
         }

        \tl_use:N \l_tmpa_tl
   }

\ExplSyntaxOff

\begin{document}

\ReplaceSpaces{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. Sed interdum libero ut metus. Pellentesque placerat. Nam rutrum augue a leo. Morbi sed elit sit amet ante lobortis sollicitudin. Praesent blandit blandit mauris. Praesent lectus tellus, aliquet aliquam, luctus a, egestas a, turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna dictum turpis accumsan semper.}

\end{document}

1 Answer 1

2

A modification of https://tex.stackexchange.com/a/44951/4427 (see there for references).

\documentclass{article}
\usepackage{xparse}

\newcommand{\spaceslash}{%
  \unskip
  \hskip 2pt plus 1pt minus 1pt
  \cleaders\copy\spaceslashbox\hskip\wd\spaceslashbox
  \hskip 2pt plus 1pt minus 1pt
  \ignorespaces}
\newsavebox\spaceslashbox

\ExplSyntaxOn

\NewDocumentCommand \ReplaceSpaces {m}
   {
      \sbox\spaceslashbox{/}
      \tl_set:Nn \l_tmpa_tl {#1}
      \tl_replace_all:Nnn \l_tmpa_tl {~} { \spaceslash }
      \tl_use:N \l_tmpa_tl
   }

\ExplSyntaxOff

\begin{document}

\ReplaceSpaces{Lorem ipsum dolor sit amet, consectetuer
  adipiscing elit. Etiam lobortis facilisis sem. Nullam
  nec mi et neque pharetra sollicitudin. Praesent imperdiet
  mi nec ante. Donec ullamcorper, felis non sodales commodo,
  lectus velit ultrices augue, a dignissim nibh lectus placerat
  pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper
  in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum
  dolor sit amet, consectetuer adipiscing elit. Duis fringilla
  tristique neque. Sed interdum libero ut metus. Pellentesque
  placerat. Nam rutrum augue a leo. Morbi sed elit sit amet
  ante lobortis sollicitudin. Praesent blandit blandit mauris.
  Praesent lectus tellus, aliquet aliquam, luctus a, egestas a,
  turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna
  dictum turpis accumsan semper.}

\medskip

\footnotesize
\ReplaceSpaces{Lorem ipsum dolor sit amet, consectetuer
  adipiscing elit. Etiam lobortis facilisis sem. Nullam
  nec mi et neque pharetra sollicitudin. Praesent imperdiet
  mi nec ante. Donec ullamcorper, felis non sodales commodo,
  lectus velit ultrices augue, a dignissim nibh lectus placerat
  pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper
  in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum
  dolor sit amet, consectetuer adipiscing elit. Duis fringilla
  tristique neque. Sed interdum libero ut metus. Pellentesque
  placerat. Nam rutrum augue a leo. Morbi sed elit sit amet
  ante lobortis sollicitudin. Praesent blandit blandit mauris.
  Praesent lectus tellus, aliquet aliquam, luctus a, egestas a,
  turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna
  dictum turpis accumsan semper.}

\end{document}

enter image description here

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .