问题描述:
MacTex 2018,所有宏包更新到最新,clone master分支的模板,make validate 报错。
系统信息:
似乎是gb7714和xstring冲突了
@hushidong xstring 更新啦
收到,谢谢,我看看先。
目前我重装了mactex 2018,然后所有包都先不更新,可以正常编译。
你不用重装的。
我测试了一下:
windows
texlive 2018
biblatex 3.11
biblatex-gb7714-2015 1.0m
xstring 1.7c
没有问题。
windows
texlive 2018
更新 biblatex 3.12
biblatex-gb7714-2015 1.0m
xstring 1.7c
没有问题。
windows
texlive 2018
biblatex 3.12
biblatex-gb7714-2015 1.0m
xstring 1.8
出错。
windows
texlive 2018
biblatex 3.12
biblatex-gb7714-2015 1.0n
xstring 1.8
没有问题。
你着急用的话,先去 https://github.com/hushidong/biblatex-gb7714-2015 下载最新版覆盖texlive中的bbx和cbx,那是1.0n版的。
我没来的及更新到ctan上,本来想等等的。之前biblatex升级到3.12开始去除对xstring的依赖后,biblatex-gb7714-2015也做了整个工作了,只是没有放到ctan上。没想到xstring更新后直接导致前面的版本存在问题了。我一会发布到ctan上后,使用最新版就不会有问题了。
五年不更新的xstring突然诈尸更新(摊手)。
等ctan上的gb7714更新了我再更新所有包了,现在抓紧时间赶毕设ddl
所以项目进行到一半时不要手贱更新,有时 l3kernel 都会新添 bug
这次是xstring的锅,同样的代码逻辑变了。
\documentclass[UTF8]{article}%文档类
\usepackage[backend=biber,style=numeric]{biblatex}
\usepackage{xstring}
\begin{document}
\makeatletter
\StrBefore{\abx@version}{.}[\numinteger]%以点区分整数和小数
\StrBehind{\abx@version}{.}[\numdigital]%小数部分可能带字母所以需将其去掉,
\IfInteger{\numdigital}{}{\StrGobbleRight{\numdigital}{1}[\numdigital]}
\abx@version:\numinteger:\numdigital
\makeatother
\end{document}
对于\abx@version为3.12的情况,
这个代码xstring升级前结果是3.12:3:12,升级后变为3.12:3:1。
xstring旧版本吧12认为是一个数字,但现在估计是认为字符串了,所以就去掉了后面的数字2。所以依赖xstring的老版本gb7714-2015把biblatex版本识别错误了。新版版1.0n不再利用xstring识别版本,所以没有问题了。
xstring宏包是个好宏包,刚看了一下,但没有相关的更新说明。像这种逻辑的变化没有说明,倒是作者疏忽了。