准大四狗最近在学习latex,用的是mac系统下的mactex。从饮水思源BBS上下载了学长贡献的毕业论文模板。在使用过程中遇到一些问题,问题和解决的过程记录如下。

1.缺少字体

首先测试 temptest.tex 文件(在TexShop中采用XeLaTeX模式编译),编译不通过,错误为部分..命令后没有加空格,这样会连同后面的内容一同作为命令。加上空格后编译通过,但不能显示中文,模板说明中表明需要:

• TeXGyreTermes 西文的:Regular、Italic、Bold、Bold Italic 四种 OTF 字体


• AdobeSongStd、AdobeKaitiStd、AdobeHeitiStd、 AdobeFangsongStd 四款中文字体

将字体文件名改为所需的字体名,仍然不行。观察到字体文件的内容中仍显示原来的字体信息,与文件名无关。

读 temptest.tex 与 sjtuthesis.cls 可知,上述要求的 AdobeSongStd 等字体没有显式的调用,涉及到调用 Adobe 字体的代码为:

\LoadClass[fancyhdr,fntef,UTF8,adobefonts]{ctexbook}

尝试将上述代码中的 adobefonts 改为 AdobeSongStd-Light ,编译通过并能显示中文字体,且显示的中文字体不仅为宋体、原来文件设置的页眉的楷体也能够显示。推测这里的 AdobeSongStd-Light可能仅起到一个入口的调用作用,而非设置字体为宋体。

后来查阅资料时无意中进入文件夹

/usr/local/texlive/2015/texmf-dist/tex/latex/ctex/fontset/

其中有若干设置文件,包括 ctex-fontset-adobe.def 、 ctex-fontset-mac.def 、 ctex-fontset-windows.def 等。打开 ctex-fontset-adobe.def 文件。发现其中涉及到的 Adobe 字体名为 AdobeSongStd-Light、AdobeKaitiStd-Regular、AdobeHeitiStd-Regular、AdobeFangsongStd-Regular, 即最近版本使用的 Adobe 字体。于是不再尝试安装旧的 Adobe 字体,而是将调用的代码中的 adobefonts 改为 adobe ,再次编译,能够正常显示各种设定字体。

2.未定义命令 \sjtuspace..

接着测试 diss.tex 文件,编译报错,错误信息为

Undefined control sequence \sjtuspace ->\protect \CTEX@spaceChar\protect \CTEX@spaceChar

查找错误位置, sjtuthesis.cls 文件中

\newcommand\sjtuspace{\protect\CTEX@spaceChar\protect\CTEX@spaceChar}

一行报错。

查阅资料,在 bbs.ctex 上有人问了类似的问题,引用回答如下

===============================回答部分===============================
这是 ctex 宏包的 Bug,以前没有显现出来,fontspec 2.4 版本以后显现出来了。

暂时的解决办法,在 \documentclass 的前面写:

\expandafter\def\csname CTEX@spaceChar\endcsname{\hspace{1em}}

我们会尽快上传一个 ctex 宏包的新版本处理此问题。因为准备在今年转向完全重写的 ctex 宏包 2.0,所以以前的 1.x 的 ctex 宏包一直没有上传过更新。

进一步技术细节:
ctex 包中设置中文字体的命令要早于 \CTEX@spaceChar 的定义。而可能使用 \CTEX@spaceChar 的宏 \CTEXsetfont 则在 \CTEX@spaceChar 之前定义。

因为在线安装,用的是最新的 fontspec 2.4 版本。而 fontspec 改变了内部实现,需要在定义字体时设置字号,触发 \CTEXsetfont,造成问题。

====================================================================

故在 diss.tex 文件 \documentclass 之前加入一行代码

\expandafter\def\csname CTEX@spaceChar\endcsname{\hspace{1em}}

编译通过。

3.粗体

对比生成的 diss.pdf 与参考文档 readme.pdf ,发现 readme.pdf 中黑体的部分在 diss.pdf 中为粗体的 Adobe 宋体。读 ctex-fontset-adobe.def 文件,粗体的部分应由黑体替换。但在文档中 \bf 命令没有自动将粗体替换为黑体。

两种简单的处理方法:

\renewcommand{\bf}{\heiti}

• 在要使用黑体的地方用命令 \heiti

前一种方法改变了\bf 的定义,不建议使用;后一种方法每次要设置字体,不够友好。

考虑到是 ctex-fontset-adobe.def 文件中定义粗体的部分没有起作用,在 sjtuthesis.cfg 中自行定义如下:

\setCJKmainfont[BoldFont = AdobeHeitiStd-Regular ,ItalicFont = AdobeKaitiStd-Regular] {AdobeSongStd-Light}

生成的 pdf 文件中粗体能够良好显示为 Adobe 黑体。

mactex学习笔记(1)相关推荐

  1. 「MacTeX 小笔记」准备篇

    LaTeX 是一个文本处理器,个人认为 LaTeX 最大的优点便是方便强大的数学公式排版能力. 因为比较复杂,这里分成几篇来写.本篇作为准备篇,内容为下载安装以及各部分介绍. 其他部分请点击链接跳转: ...

  2. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  3. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  4. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  5. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  6. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  7. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

  8. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

  9. Go 学习推荐 —(Go by example 中文版、Go 构建 Web 应用、Go 学习笔记、Golang常见错误、Go 语言四十二章经、Go 语言高级编程)

    Go by example 中文版 Go 构建 Web 应用 Go 学习笔记:无痕 Go 标准库中文文档 Golang开发新手常犯的50个错误 50 Shades of Go: Traps, Gotc ...

最新文章

  1. vue radio双向绑定_Vue是如何实现双向数据绑定的
  2. JDK12的新特性:teeing collectors
  3. 45 | 打蛇打七寸:精准测试
  4. EntityFramework Core 3.x上下文构造函数可以注入实例呢?
  5. 电脑睡眠快捷键_电脑快速进入睡眠的快捷键是什么?
  6. 干货福利:AI人工智能学习资料教程包.zip
  7. python批量新建文件_python批量处理
  8. 童年的飞秋大门已徐徐向我关闭
  9. 【Elasticsearch】使用Elasticsearch 7.8 快速搭建食谱搜索系统
  10. c++ protected_java基础之——访问修饰符(private/default/protected/public)
  11. linux网络编程--服务器模型(epoll/select/poll)
  12. java填空题答案_java练习题附选择填空答案
  13. 请问悉尼大学计算机专业,悉尼大学计算机专业去留学怎么样 是强势专业吗?...
  14. 关于killer网卡与win10 擦出火花 内存爆炸的原因
  15. Hadoop:INFO mapreduce.Job: Running job
  16. 一个网站做渗透测试对企业的安全性建议
  17. win10计算机找不到家庭组,Win10 家庭版 没有家庭组 这个选项,如何设置局域网 - Microsoft Community...
  18. LeetCode 对角线遍历(找规律)
  19. 金融数据智能峰会 | 数据规模爆炸性增长,企业如何进行精准决策?云原生数据仓库数据化运营实战分享
  20. ANSYS MESH

热门文章

  1. CPU占用率百分百原因及解决方法
  2. 定义一个名为Cylinder类表示圆柱,它继承Circle类
  3. java语言保留结构和联合_Java 语言中取消了联合概念,保留了结构概念。( )_学小易找答案...
  4. Google Map 初步使用
  5. 有互联网药品信息服务资格证是否可以销售药品?
  6. 正向代理与反向代理是什么,有什么区别?
  7. 菜狗的reverse学习——攻防世界xxxorrr
  8. ​ 每周一书《数学之美 第二版》分享!
  9. 用户访问我计算机不用凭据,如何进行凭据管理实现自动登录网络
  10. 状态标志与状态标志寄存器