Sjtuthesis: 商标字符在正文和参考文献中显示不同

Created on 29 Oct 2018  ·  15Comments  ·  Source: sjtug/SJTUThesis


问题描述:
商标字符 \textregistered{} 在正文显示正常,而在参考文献显示异常。\texttrademark{} 显示正常。

image
image
image

系统信息:

  • OS版本(带版本号): macOS Mojave, Gentoo Linux
  • TeX 发行版(带版本号): TeX Live 2018

日志信息:

arebibliography oLinux omacOS platforTeXLive typquestion

Most helpful comment

破案了,是 biber 的锅,我去看了一下 biber 文档和代码,原来 biber 为了排序会把一些 LaTeX 宏命令转换为 UTF-8 字符。我前面“展开”的说法有误。

biber 提供一个参数 --decodecharsset 来控制这种转换,有三个选项 nullbasefull。默认是 base,会转换部分的宏,其中有 \textregisteredfull 选项会转换更多的宏,包括 \texttrademarknull 则是不转换。

所以编译时给 biber 加个参数 --decodecharsset=null 就可以了。你用脚本编译的话在 .latexmkrc 里加一行:

$biber = 'biber --decodecharsset=null %O %S'; 

All 15 comments

我搜来搜去都是 StackExchange 上这个回答,现在都 8012 年了,上面两个回答里的问题应该都在 TexLive 2018 里解决了吧

我试了一下,2018也没有解决。

StackExchange 那个跟我遇到情况不一样,而且我版本都比他高。biber 那个说用 2.6 版本,我的已经是 2.11 了。我怀疑是字体问题,试过了 mac/windows/adobe 都一样,参考文献用的是 TeXGyreTermes 字体。我也用 acrobat 改过这个 ő ,不过好像没有一个字体是对应商标字符。

https://groups.google.com/forum/#!topic/comp.text.tex/TGBfSPzMS5Q

这个暴力解决的办法,直接画的图。

\DeclareRobustCommand{\RTM}{\leavevmode\hbox{\ooalign{\hfil\raise.02ex\hbox{\kern.02em\scriptsize\textrm{R}}\hfil\crcr\mathhexbox20D}}}

trm

哈哈,硬核画图。。。那就这样吧,谢谢啦!

可以推送到模板 tex faq,方便后来人

我测试了一下:

title = {Acoustic {\textregistered} {\texttrademark} cloaking in three dimensions using acoustic metamaterials},

thesis.bblbiblatex 的输出是:

\field{title}{Acoustic {®} {\texttrademark} cloaking in three dimensions using acoustic metamaterials}

很诡异的是 \textregistered 被展开成了 UTF-8 的 ®\texttrademark 却没有展开。
模版西文字体使用的是 T1 格式的,UTF-8 ® 被映射成 了。

画图感觉有点蠢,可以使用系统自带的 TrueType 或 OpenType 字体比如 “Times New Roman”:

% \RequirePackage[defaultsups]{newtxtext} % 注释掉这个字体宏包 
\setmainfont{Times New Roman}

或者编译完成后,手动改一下 thesis.bbl,再运行一下 xelatex thesis.tex

可否只针对 这个 特殊的字符专门设置字体,而不是全部的都设置字体。我试了 roman字体依旧,还没有试过 times new roman

最好是让它不要展开吧。写个脚本改bbl感觉比画图要合理一点。

破案了,是 biber 的锅,我去看了一下 biber 文档和代码,原来 biber 为了排序会把一些 LaTeX 宏命令转换为 UTF-8 字符。我前面“展开”的说法有误。

biber 提供一个参数 --decodecharsset 来控制这种转换,有三个选项 nullbasefull。默认是 base,会转换部分的宏,其中有 \textregisteredfull 选项会转换更多的宏,包括 \texttrademarknull 则是不转换。

所以编译时给 biber 加个参数 --decodecharsset=null 就可以了。你用脚本编译的话在 .latexmkrc 里加一行:

$biber = 'biber --decodecharsset=null %O %S'; 

@AlexaraWu ,你这么一研究,我也仔细看了一下文档,并做了翻译。说实话,不像biblatex文档, 一般也没有太多的需求去翻译biber文档,像这种机会刚好可以翻译一下。可以的话,下次研究的时候你顺便把内容翻译了得了,放到https://github.com/hushidong/biblatex-zh-cn 这一起,分享一下。每次增加一点翻译,也许很快就翻完了。

@hushidong 感谢邀请~不过水平有限不一定帮的上忙 :joy:

没事啊,我的水平也很差的,但和wenbo,敢把biblatex手册翻译完了。行动就对了。

Was this page helpful?
0 / 5 - 0 ratings

Related issues

gaocegege picture gaocegege  ·  4Comments

shuoooo picture shuoooo  ·  9Comments

jiewuza picture jiewuza  ·  7Comments

sjtuminhang picture sjtuminhang  ·  4Comments

majestichou picture majestichou  ·  7Comments