Closed TomBener closed 3 years ago
这是 xeCJK 在中西文之间自动加的空白,在 bbl 文件可以看到是没有空格的。
国标在空格的处理上很不严谨,见讨论 #70 。就按目前这样处理了。
文献类型标识的中括号前无论是西文还是中文都没有空格。
@zepinglee 给他加个\mbox{}
之类的去掉xecjk加的空格。只是加了让bbl又复杂了些。
@TomBener 你自己也可以在bbl中处理,加个mbox将之删除。
与其用各种办法去掉空格,我宁愿中、英文统一加上空格。
是的,到了一定阶段了就这样,不想动了。好在tex是自由的,用户可以自己动手。
@zepinglee 你之前说要写个程序把csl样式结合起来,现在怎么样了?
是的,到了一定阶段了就这样,不想动了。好在tex是自由的,用户可以自己动手。
@zepinglee 你之前说要写个程序把csl样式结合起来,现在怎么样了?
感觉需要实现个 citeproc-lua,咕了
@TomBener 你自己也可以在bbl中处理,加个mbox将之删除。
@hushidong 请问在 bbl
文件里怎么加 mbox 啊?可以在 bst
文件里修改吗?谢谢!
@TomBener 在生成bibtex编译后的bbl中修改,在[J]前加,比如“你好\mbox[J]”
。
@TomBener 在生成bibtex编译后的bbl中修改,在[J]前加,比如
“你好\mbox[J]”
。
@hushidong 这样需要一个一个地加啊,感觉有点麻烦,有简便一点的方法吗 😂
文本处理替换一下就行,自然字符串不好表达就用正则表达式,应该很方便。
利用notepad++处理替换,勾选正则,
查找目标:
(\[[A-Z]\])
替换
\\mbox\{\}$1
比如:
是的,到了一定阶段了就这样,不想动了。好在tex是自由的,用户可以自己动手。 @zepinglee 你之前说要写个程序把csl样式结合起来,现在怎么样了?
感觉需要实现个 citeproc-lua,咕了
嗯,年底是不是很忙,验收项目很多吧?不介意了解下清华的情况吧
@TomBener 你自己也可以在bbl中处理,加个mbox将之删除。
@hushidong 请问在
bbl
文件里怎么加 mbox 啊?可以在bst
文件里修改吗?谢谢!
我晚上改一下,加个选项来控制把。
@zepinglee 不知你有没有将那些选项放到tex中加载gbt7714红包时来设置的想法,避免在bst中修改。
一种思路是,在设置选项后,你把他转换为一些数据,存到一个辅助文件中,然后bst除了读bib文件中还把这个辅助文件中的信息读进来,从而完成控制。
好处是在tex中设置不用管bst了。坏处是有些人喜欢单用bst,这么处理后就必须结合红包使用了。
考虑bst的易用性,所以我一直也没有提。
我下载了 v2.0.2 版本的
gbt7714-author-year.bst
,编译之后没有这个空格的问题。
这个反复改来改去的,总会有不同意见。
不知你有没有将那些选项放到tex中加载gbt7714红包时来设置的想法,避免在bst中修改。
一种思路是,在设置选项后,你把他转换为一些数据,存到一个辅助文件中,然后bst除了读bib文件中还把这个辅助文件中的信息读进来,从而完成控制。
好处是在tex中设置不用管bst了。坏处是有些人喜欢单用bst,这么处理后就必须结合红包使用了。
考虑bst的易用性,所以我一直也没有提。
BibTeX 无法读外部文件。
倒是可以把宏定义在 \begin{thebibliography}
后面,但是这样会弄得很复杂。比如姓名 Foo et al.
后需要使用句点,BibTeX 有个函数 add.period$
可以自动判断前面的内容是否以句点结尾,从而避免重复句点。但是如果改成用宏控制,比如 \bibauthor{Foo et al.}
或者 \bibauthor{Foo} \etal
,BibTeX 就没法控制了。所以我一般避免用宏控制内容。
@TomBener 在 b01b14f 中修复。
另外 \allowbreak
的效果比 \mbox{}
\relax
要好,因为这俩取消了空白,但是不能在这里断行。
不知你有没有将那些选项放到tex中加载gbt7714红包时来设置的想法,避免在bst中修改。 一种思路是,在设置选项后,你把他转换为一些数据,存到一个辅助文件中,然后bst除了读bib文件中还把这个辅助文件中的信息读进来,从而完成控制。 好处是在tex中设置不用管bst了。坏处是有些人喜欢单用bst,这么处理后就必须结合红包使用了。 考虑bst的易用性,所以我一直也没有提。
BibTeX 无法读外部文件。
倒是可以把宏定义在
\begin{thebibliography}
后面,但是这样会弄得很复杂。比如姓名Foo et al.
后需要使用句点,BibTeX 有个函数add.period$
可以自动判断前面的内容是否以句点结尾,从而避免重复句点。但是如果改成用宏控制,比如\bibauthor{Foo et al.}
或者\bibauthor{Foo} \etal
,BibTeX 就没法控制了。所以我一般避免用宏控制内容。
把文件写成bib就可以了,bst可以读多个bib文件吧,这是有现成例子的,biblatex用bibtex后端时就是这么处理的。
编译环境
宏包版本:gbt7714 v2.1 标注样式:authoryear TeX Live: MacTeX 2020 System: macOS Big Sur 11.1
描述问题
国标第 13 页 9.2 节「著者-出版年制」部分例子中,中文文献标题与文献标识码之间没有空格,而编译后存在空格,希望去掉这个空格。
MWE:
TeX 代码:
bib 数据库代码:
截图: