mactex学习笔记(1)

原创 2015年07月09日 13:34:07

准大四狗最近在学习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 黑体。

LaTeX 实战经验:新手须知

前言: 以下内容皆为经验之谈。资历尚浅,能力有限,您如果有更好的方案选择,期待您的分享!每个功能或是实现的每个效果,在这里可能只是一个起点,更多内容的实现想法也都是类似的,坚持使用自会贯通。如果还不...
  • simple_the_best
  • simple_the_best
  • 2016年04月25日 19:18
  • 11179

Latex博士论文格式版本(在CASthesis基础上作修改)

在CASthesis基础上改写的毕业论文latex模板,初学不久,有不足之处欢迎各位指出。...
  • doufangzheng
  • doufangzheng
  • 2017年09月14日 09:07
  • 234

安装配置MacTex

使用tex时间不长,新换了mbp,记录下在mac上安装MacTex的过程 1、下载MacTex MacTex由TeX Users Group(http://www.tug.org)维护,可理解是Tex...
  • shijianshi9860
  • shijianshi9860
  • 2016年05月19日 15:31
  • 1079

OSX 安装MacTex Emacs+Auctex

从stackoverflow上找到的,已经安装成功,借此留存下 Here's how I got Auctex to work with pure Emacs: Install the MacT...
  • wdkirchhoff
  • wdkirchhoff
  • 2014年12月03日 21:23
  • 5802

MacTex写中文

用fontspec包,并且设置字体,如下:
  • xiangyueche
  • xiangyueche
  • 2014年08月02日 15:27
  • 864

Mac OS 下用Tex Shop 进行中文排版

Tex Shop 进行中文排版
  • JueChenYi
  • JueChenYi
  • 2017年08月10日 23:54
  • 559

XeLatex + MacTex 一个简洁快速的个人简历模板及其他合集

为什么使用XeLatex 和MacTex又到了每年的9月10月的求职高峰季,填简历的时候看到一个非常充实又十分清爽的简历,可惜排版有些瑕疵,应该是word写的,于是自己开始折腾用Latex来制作一个风...
  • qwop446
  • qwop446
  • 2017年09月04日 13:43
  • 836

在 Mac 上使用 LaTeX

必备条件:下载MacTex.mpkg.zip并安装。 写好test.bib文件和test.tex文件 先用 latex test.tex生成.aux文件 再用bibtex test生成b...
  • Waleking
  • Waleking
  • 2011年10月19日 22:47
  • 41982

在Mac OS X下搭建Latex编辑环境

在这里分享一下如何在Mac下搭建Latex编辑环境的方法首先当然是Google Mac Latex寻找已有的Blog教程,然后发现Mac上常用Sublime Text来编辑,因此搜索Mac subli...
  • songrotek
  • songrotek
  • 2015年06月11日 14:47
  • 17981

CTeX 2.9中给CJK添加中文字体

CTeX 2.9中给CJK添加中文字体 2011-03-06   首先, 下载xGBKFonts来转化中文TureType字体.这个工具可以在ht...
  • lishoubox
  • lishoubox
  • 2012年03月22日 11:04
  • 5595
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mactex学习笔记(1)
举报原因:
原因补充:

(最多只允许输入30个字)