假设有一个brea +
(注意末尾的空格)。
brea +
是不是尚未打印。宏\m{brea +}
将替换+
为\added
...那么如何定义added
,假设它打印d
但仅这样
bread
结果严格地代替了brea d
?
\newlength{\test}\settowidth{\test}{~}
然后就\hspace*{-\test}
可以在 .pdf 中移除空格了。复制和粘贴不会解释为任何空格;但如果结果brea \added
被传递到类似以下答案中提取句子中周期性出现的九个以上参数,用于宏中排版,其中每个空格作为逻辑分隔符,它还会被识别吗?
因此,如果 pdf 看不到空格字符,通常可以安全地假设 LaTeX 看不到空格,因此没有分隔符,其中 ~ 被解析为单词分隔符?那么我正确地假设 LaTeX 只将 bread 视为输出,因为在“添加”负间距后,识别空格的条件阈值没有翻转?(当参数是其他宏的扩展时,LaTeX 究竟如何“思考”宏内的空间。)
问:换句话说,需要多少负空间才能确保 LaTeX 或 xparse 不会检测到任何存在的空间?
示例:使用代码提取句子中周期性出现的九个以上参数,用于宏中排版... 然后让
\NewDocumentCommand{\form}{m}{\lowercase{#1}}
...
因为\fun{ABBB BCCC CDDD DEEE}
我们期待ABBB BCCC cddd DEEE
它并得到了它。
因为\fun{ABBB BCCC \hspace{-\test}CDDD DEEE}
我们期望 ABBB BCCCCDDD deee
并得到ABBB BCCCcddd DEEE
......
答案1
您的问题很不清楚,您可以做几件事,例如:
给出
{brea }
并d
删除空间 令牌并依此生产bread
。Typeset
brea
删除由空格标记生成的跳过粘连,然后排版d
。排版
brea
跳过一个单词空格的负数,然后排版d
。
\documentclass{article}
\def\z{brea }
\def\zz{d}
\def\AAA#1 {#1}
\begin{document}
1. \expandafter\AAA\z\zz
2. \z \unskip \zz
3. \z \hskip -\fontdimen2\font plus -\fontdimen3\font minus -\fontdimen4\font \zz
\end{document}
请注意,这里只有 (1) 相当于输入bread
,对于其他变体,e
和之间任何字体指定的连字或字距d
都会丢失。
在生成的 PDF 中,(1) 和 (2) 都不会有指定的空格(除非 (1) 有字母间字距而 (2) 没有),但 (3) 可能有或可能没有指定空格,这取决于 PDF 生成器优化两个总宽度为零的空格的能力。
显示连字和字距:
\documentclass{article}
\def\AAA#1 {#1}
\begin{document}
\def\z{brea }
\def\zz{d}
1. \expandafter\AAA\z\zz
2. \z \unskip \zz
3. \z \hskip -\fontdimen2\font plus -\fontdimen3\font minus -\fontdimen4\font \zz
\def\z{V }
\def\zz{o}
1. \expandafter\AAA\z\zz
2. \z \unskip \zz
3. \z \hskip -\fontdimen2\font plus -\fontdimen3\font minus -\fontdimen4\font \zz
\def\z{snif }
\def\zz{f}
1. \expandafter\AAA\z\zz
2. \z \unskip \zz
3. \z \hskip -\fontdimen2\font plus -\fontdimen3\font minus -\fontdimen4\font \zz
\end{document}