如何制作通过空格删除文档的命令

如何制作通过空格删除文档的命令

我需要编写\setToOldWidth对字符串、计数器和长度进行操作的命令。

不幸的是,下面的命令在文本中输入了许多空格,不知道为什么,可能是由于字符串操作。如何让它完全静音,但仍然正确设置长度值?

我不能使用 xstring,因为它与我很旧的课程中的其他内容发生冲突。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{stringstrings}
\usepackage{ifthen}

\newcounter{getOldWidthExtendedSettingsPos}
\newcounter{getOldWidthOldWidthPos}
\newcounter{getOldWidthOldOptionLength}

\newcommand{\setToOldWidth}[2]{%
    \whereisword[q]{#2}{Extended~Settings}%
    \setcounter{getOldWidthExtendedSettingsPos}{\theresult}%
%    
    \whereisword[q]{#2}{Old~Width=}%
    \setcounter{getOldWidthOldWidthPos}{\theresult}%
%
    \stringlength[q]{#2}%
    \setcounter{getOldWidthOldOptionLength}{\theresult}%
%    
    \ifnum\thegetOldWidthExtendedSettingsPos>0%
        \ifnum\thegetOldWidthOldWidthPos>0%
            \addtocounter{getOldWidthOldWidthPos}{10}%
            \substring[e]{#2}{\thegetOldWidthOldWidthPos}{\thegetOldWidthOldOptionLength}%
            \settowidth{#1}{\thestring}%
        \else%
            \settowidth{#1}{#2}%
        \fi%
    \else%
        \settowidth{#1}{#2}%
    \fi%
}

\begin{document}

\newlength{\testwidth}

Test\setToOldWidth{\testwidth}{Extended Settings,Picture Width=120mm,Old Width=AXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXZ}next part

\end{document}

在此处输入图片描述

答案1

不需要的空间位于stringstrings

940   \else
941     \if \thestring#3\global\matchingchartrue\else\global\matchingcharfalse\fi
942   \fi}
943 \?}

第 942 行的结束线不受保护。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{stringstrings}
\usepackage{ifthen}
\usepackage{xpatch}

\xpatchcmd{\testmatchingchar}{ \?}{\?}{}{}

修复了该问题。报告此问题。

在此处输入图片描述

但是你应该删除%行末的

    \ifnum\thegetOldWidthExtendedSettingsPos>0
        \ifnum\thegetOldWidthOldWidthPos>0

这些%将导致后续代币的不合时宜扩张,特别是第一个代币。

我如何找到流氓空间?

\tracingmacros=1 \tracingcommands=1在宏调用之前添加了并编译。然后我在日志文件中查找blank space并找到了几个

\matchingcharfalse ->\let \ifmatchingchar \iffalse
{end-group character }}
{horizontal mode: blank space  }

所以我查看了stringstring.sty\matchingcharfalse它只出现在 的替换文本中\testmatchingchar。发现未受保护的结束行很容易。

相关内容