梅威瑟:
\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\}
\path
url
\DeclareUrlCommand
\LetLtxMacro
\let
补救措施是重新定义\path
如下(在序言中,加载url
包之后):
\let\path\relax
\DeclareUrlCommand\path{\color{gray}\urlstyle{tt}}
附录:正如@egreg 在评论中指出的那样,该指令\let\path\relax
并非绝对必要,因为后续\DeclareUrlCommand
指令会覆盖现有的定义\path
。幸运的是,\let\path\relax
也不会造成任何损害。:-)