我是 svn-multi latex 软件包的忠实用户。我的质量部门现在需要包含空格的新文件名。
当我更改包含空格的文件名时,出现以下乳胶错误:
Package: svn-multi 2011/08/30 v2.4d SVN Keywords for multi-file LaTeX documents
)
Runaway argument?
! Paragraph ended before \@svn@scandate@ was complete.
<to be read again>
\par
l.194
I suspect you've forgotten a `}', causing me to apply this
control sequence to too much text. How can we recover?
My plan is to forget the whole thing and hope for the best.
latex源代码行是:
\usepackage{svn-multi}
\svnid{$Id: H4FB105 Benutzerhandbuch.tex 8085 2022-08-25 15:02:54Z oehhar $}
如果文件名中的空格被下划线替换:
\usepackage{svn-multi}
\svnid{$Id: H4FB105_Benutzerhandbuch.tex 8085 2022-08-25 15:02:54Z oehhar $}
整个过程正常进行。
建议在以下位置发布错误报告:
https://sourceforge.net/p/svn-multi/tickets/
为了避免这个问题,我使用了:
\svnidlong
{$HeadURL: svn://elmifile/manual/H4FB105%20Benutzerhandbuch.tex $}
{$LastChangedDate: 2022-08-25 17:45:44 +0200 (Do, 25. Aug 2022) $}
{$LastChangedRevision: 8087 $}
{$LastChangedBy: oehhar $}
效果很好。
尽管如此,如果 Id 也能用就太好了。我更喜欢它,因为它更紧凑,而且我不需要 URL 功能。
我是不是忽略了某些显而易见的东西,或者这是一个错误?任何帮助表示感谢。
环境:
- Windows 10 64 位操作系统
- 密克泰克斯
- svn-多 2011/08/30 v2.4d
- pdftex
- 纺织工作室
谢谢大家,哈拉尔
答案1
我是的作者svn-multi
,并假设文件名将被编码,以便空格的书写方式%20
与 URL 关键字一样。
为了支持此功能,必须调整 ID 扫描仪。我会将其添加到包中并尽快发布。
解决方案:我现在在用户名后添加(回)一个空格(因为它事先被删除了),并检查最后一个空格后是否有空字段。如果不为空,则会出现更多字段,正如预期的那样,因此前两个字段是文件名的一部分。然后我重复此扫描,直到最后一个字段为空:
\documentclass{article}
\usepackage{svn-multi}
\makeatletter
\def\svnkwsave@readargs#1{%
\svnkwsave@read#1\relax
\endgroup
\if@svnidsw
\ifx\svnkwId\empty\else
\expandafter\expandafter\expandafter
\svn@scanId\expandafter\svnkwId\space\relax
\@svnidswfalse
\fi
\fi
\ignorespaces
}
\def\svn@scanId@#1 #2 #3 #4 #5 #6\relax{%
\@svn@scandate{#3 #4}%
\svnkwdef{Filename}{#1}%
\svnkwdef{Date}{#3 #4}%
\svnkwdef{Revision}{#2}%
\svnkwdef{Author}{#5}%
\@svn@updateid{\svnkw{Revision}}{\svnkw{Date}}{\svnkw{Author}}{\svnkw{URL}}%
}
\def\svn@scanId@#1 #2 #3 #4 #5 #6\relax{%
\begingroup
\def\@tempa{#6}%
\ifx\@tempa\@empty
\endgroup
\@svn@scandate{#3 #4}%
\svnkwdef{Filename}{#1}%
\svnkwdef{Date}{#3 #4}%
\svnkwdef{Revision}{#2}%
\svnkwdef{Author}{#5}%
\@svn@updateid{\svnkw{Revision}}{\svnkw{Date}}{\svnkw{Author}}{\svnkw{URL}}%
\else
\def\@tempa{\svn@scanId@{#1 #2} #3 #4 #5 #6\relax}%
\expandafter\expandafter
\expandafter\endgroup
\expandafter\@tempa
\fi
}
\makeatother
\svnid{$Id: H4FB105 Benutzerhandbuch.tex 8085 2022-08-25 15:02:54Z oehhar $}
\begin{document}
\svnkw{Revision}
\svnkw{Date}
\svnkw{Author}
\svnkw{URL}
\svnkw{Filename}
\end{document}
答案2
如果你的文件名总是有一个,.
你可以防止在.
\documentclass{article}
\usepackage{svn-multi}
\makeatletter
\def\svn@scanId@#1.#2 #3 #4 #5 #6\relax{%
\@svn@scandate{#4 #5}%
\svnkwdef{Filename}{#1.#2}%
\svnkwdef{Date}{#4 #5}%
\svnkwdef{Revision}{#3}%
\svnkwdef{Author}{#6}%
\@svn@updateid{\svnkw{Revision}}{\svnkw{Date}}{\svnkw{Author}}{\svnkw{URL}}%
}
\makeatother
\svnid{$Id: H4FB105 Benutzerhandbuch.tex 8085 2022-08-25 15:02:54Z oehhar $}
\begin{document}
\end{document}