需要多少负空间?通过添加某些内容来明显删除空格?对于参数为另一个宏的宏?

需要多少负空间?通过添加某些内容来明显删除空格?对于参数为另一个宏的宏?

假设有一个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

您的问题很不清楚,您可以做几件事,例如:

  1. 给出{brea }d删除空间 令牌并依此生产bread

  2. Typesetbrea删除由空格标记生成的跳过粘连,然后排版d

  3. 排版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}

相关内容