我需要一个宏来用斜线替换文本中的空格。为了允许对齐,必须在斜线前后添加一些粘连。行首和行末不应出现斜线。使用以下代码,文本不会在右边缘对齐。我该如何更改此问题?
\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
修改https://tex.stackexchange.com/a/44951/4427(请参阅那里的参考资料)。
\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}