Ref https://github.com/sjtug/SJTUThesis/issues/374#issuecomment-433676049
这里利用了xstring的\expandarg来辅助展开。
而老版本的gb7714-2015中也使用xstring帮助抽取字符,进而进行中英文判断,这里的\expandarg是全局的,所以导致展开存在一些冲突,虽然强制编译也是可以得到最后正确的结果。
而新版本的gb7714-2015使用了新的中英文判断机制,不再使用xstring进行字符抽取。所以不产生冲突。
所以,我这里的建议是能不能把\expandarg这个命令局部化,避免影响其他地方使用xstring的情况,@各位模板作者。尽管使用新版本的gb7714-2015也没有问题。
/cc @bubifengyun
texlive 2018+biblatex 3.11+gb7714-2015v1.0i也可以测试。可以去biblatex-gb7714-2015那下个1.0i版的进行测试
这个问题我有两个避开该命令的思路
1是自动断行的方法
利用xstring统计一下字符串中的字符数,然后根据设定将字符串分成两部分,存到两个宏中待用。
2.手动设定断行的方法,设置major命令可以接受1个或两个参数,当作者要手动给出断行的位置时,作者可以将字符串分两个参数输入。当没有这种需求时则只输入一个参数。
当然用加入标志符号,如null来确定断行也是很好的方法,但我有个建议是用\来标识可能更自然一些,至于怎么处理我想也是应该能解析的比如通过更换字符类型辅助。
@hushidong 没有明白你的意思,用\如何换行,是两个\\吗?这个有点偷懒了。因为\null不显示,所以不用在其他地方特殊处理这个字符。只是在这里作为一个标识符。我先提交一个pull request吧。以后用更好的办法,再更新。
@hushidong 这个非常抱歉,没能找到 texlive2017或者你说的其他版本 gb7714-2015,能否麻烦您测试一下在其他版本的情况。非常感谢。
嗯,是\\,下载地址https://github.com/hushidong/biblatex-gb7714-2015/releases,跟tl2018也能测试
我也是想偷懒,就直接用\null啦。可能使用\\更好。但是要处理掉这个\\还需要加入更多代码。
测试通过,局部化后编译正常了。
Most helpful comment
https://tex.stackexchange.com/questions/178610/replacing-substrings-by-linebreaks
提供了两种局部化的方法。我回去试试