![使用 svn $Id$ 关键字替换时出现“!缺少 $ 插入。”](https://linux22.com/image/266319/%E4%BD%BF%E7%94%A8%20svn%20%24Id%24%20%E5%85%B3%E9%94%AE%E5%AD%97%E6%9B%BF%E6%8D%A2%E6%97%B6%E5%87%BA%E7%8E%B0%E2%80%9C%EF%BC%81%E7%BC%BA%E5%B0%91%20%24%20%E6%8F%92%E5%85%A5%E3%80%82%E2%80%9D.png)
我想显示 Subversion 修订号以供在我的文档内容中使用。 svninfo
并且svn
软件包依赖于svn 关键字替换来实现这一点,但是当我尝试时出现此错误:
错误行 6!缺少插入 $。
以下是导致此问题的完整文档:
\documentclass{article}
\usepackage{svninfo}
\begin{document}
\svnInfo $Id: doc.tex 8 2013-04-11 19:37:31Z User Name $ %<= Id keyword substituted by svn
\end{document}
针对此错误通常建议的补救措施是对 $ 进行转义,如下所示:\$
但是,没有任何转义字符和非转义$
字符的组合能够既避免此错误又产生有用的结果。
如何避免此错误和表面 svn 修订编号?
答案1
用户名可能没有空格。此操作运行无错误
\documentclass{article}
\usepackage{svninfo}
\begin{document}
\svnInfo $Id: doc.tex 8 2013-04-11 19:37:31Z UserName $ %<= Id keyword substituted by svn
\end{document}
由于 Windows 用户名允许使用空格,因此您可以让 svnInfo 也允许使用空格。这似乎有效:
\documentclass{article}
\usepackage{svninfo}
\makeatletter
\def\@svnInfoCrackAndEat #1 #2 #3 #4 #5 #6 $ {\@svnEndRead
\@svnInfoCrackString #2 #3 #4 #5 {#6} $ %
}
\makeatother
\begin{document}
\svnInfo $Id: doc.tex 8 2013-04-11 19:37:31Z User Name $ %<= Id keyword substituted by svn
[\svnInfoOwner]
\end{document}
答案2
您的用户名中有一个空格:
\svnInfo $Id: doc.tex 8 2013-04-11 19:37:31Z UserName $
应该管用