扫描使用 \path 时文件结束

扫描使用 \path 时文件结束

梅威瑟:

\documentclass{article}
\usepackage[obeyspaces]{url}
\usepackage{xcolor,letltxmacro,booktabs,longtable,tabu}

\LetLtxMacro{\oldpath}{\path}
\renewcommand{\path}[1]{\color{gray}{\oldpath{#1}}}


\begin{document}
    \section{Software Requirements}\label{scn:softreq}
    %
    \begin{enumerate}
        \item Windows 8.1 64-bit with .NET framework 3.5
        \item Microsoft Visual Studio 2010 Professional with Service Pack 1
        \item Download and install:
        %
        \begin{itemize}
            \item \texttt{qt-win-opensource-4.8.4-vs2010} from \url{http://download.qt.io/archive/qt/4.8/4.8.4/qt-win-opensource-4.8.4-vs2010.exe}.
            \item \texttt{qt-creator-windows-opensource-2.6.2} available in \path{C:\Code\Pre-requisite-Setup\}
            \item \texttt{qt-vs-addin-1.1.11-opensource} from  \url{http://download.qt.io/archive/vsaddin/qt-vs-addin-1.1.11-opensource.exe}.
            \item \texttt{qt-opensource-windows-x86-msvc2013-5.6.0} from \url{http://download.qt.io/archive/qt/5.6/5.6.0/qt-opensource-windows-x86-msvc2013-5.6.0.exe}.
        \end{itemize}
        %
    \end{enumerate}
\end{document}

\path{C:\Code\Pre-requisite-Setup\}如果我写的不是\path{C:\Code\Pre-requisite-Setup},则不会出现任何错误。问题出在LetLtxMacro我使用的 上。

错误:扫描 \path 的使用时文件结束

该文档太长了,我无法返回并更改每个实例。

我经历过我可以重新定义一个命令来包含它自己吗?并且无法实施修改path

我需要帮助来修改无用的宏并最终找到内心的平静。

答案1

该文件url.sty定义\path如下:

\@ifundefined{path}{\DeclareUrlCommand\path{\urlstyle{tt}}}{}

相比之下,您对 的(重新)定义\path没有使用机制。这就是为什么它会被中的“ ”子字符串\DeclareUrlCommand挂起的原因。(另请注意,正如在via 包中定义的一样, -- 不接受可选参数。因此,使用无法实现 via 无法处理的事情。)\}\path{C:\Code\Pre-requisite-Setup\}\pathurl\DeclareUrlCommand\LetLtxMacro\let

补救措施是重新定义\path如下(在序言中,加载url包之后):

\let\path\relax
\DeclareUrlCommand\path{\color{gray}\urlstyle{tt}}

附录:正如@egreg 在评论中指出的那样,该指令\let\path\relax并非绝对必要,因为后续\DeclareUrlCommand指令会覆盖现有的定义\path。幸运的是,\let\path\relax也不会造成任何损害。:-)

相关内容