对于中英混排ctex类中字体设置的说明 -- Latex

一. 环境

Document Class: ctexbook 2019/05/29 v2.4.16
TexStudio + Texlive 2019
Win10

\documentclass[12pt,openright,a4paper,AutoFakeBold,twoside]{ctexbook} %在双面(twoside)环境下,openright使得每个新章节从奇数页开始
\usepackage[CJKbookmarks]{hyperref}
\usepackage{shortvrb,indentfirst,ulem,makeidx}
\usepackage{fancyhdr}
\usepackage{graphicx}
\usepackage[numbers,sort&compress]{natbib}
\usepackage{geometry}
\usepackage[OT1]{fontenc}  %添加后才使字体加粗和斜体起作用
\usepackage{times}
\usepackage{fontspec}
\usepackage{CJKfntef}
\usepackage{caption}
\usepackage{titletoc}

\begin{document}
...
\end{document}

导言区的\usepackage[OT1]{fontenc}是依据 [1] 想解决Xelatex编译文档提示Warning: Font shape 'TU/ptm/m/n' undefined(Font) using 'TU/lmr/m/n' instead on input line 207. 才添加的。但实际没有解决该字体的问题,反而解决了原本文档中使用{\bf 加粗的内容}{\it italicABCD}都不起作用的问题。

----Edit----------
关于Warning: Font shape 'TU/ptm/m/n' undefined(Font) using 'TU/lmr/m/n' instead on input line 207. 的解决方法,可以参考 解决Font shape `TU/ptm/m/n‘ undefined (Font)的问题。


二. ctex中关于字体的命令与设置 [2, 3]

对于字体设置分为字体声明和字体命令。字体声明看作是对当前位置及其后续内容的字体进行的统一设置;字体命令看作是对紧跟命令的花括号内的内容进行的字体设置。

1. 字体族的设置(罗马字体,无衬线字体,打字机字体,中文字体)

  • 罗马字体命令:\textrm{该内容显示罗马字体Roman Family} %大括号中是文字内容。

    声明后续字体为罗马字体: \rmfamily 该内容显示罗马字体,后续文字内容也为罗马字体,直至新的声明出现覆盖该声明。

    罗马字体声明的作用域:
    {\rmfamily 该内容显示罗马字体} %加上大括号即可约束字体说明范围。
    其他字体声明也是类似的。

  • 无衬线字体命令:\textsf{无衬线字体Sans Serif Family}
    无衬线字体声明:\sffamily

  • 打字机字体命令:\texttt{打字机字体Typewriter Family}
    打字机字体声明:\ttfamily

  • {\songti 宋体}

  • {\heiti 黑体}

  • {\fangsong 仿宋}

  • {\kaishu 楷书}

2. 字体形状设置(直立,斜体,伪斜体,小型大写)

  • %直立
    \textup{Upright shape} %这是命令。
    {\upshape Upright shape} %这是声明。(下同)

  • %斜体
    \textit{Italic shape }
    {\itshape Italic shape}

  • %伪斜体
    \textsl{Slanted shape }
    {\slshape Slanted shape}

  • %小型大写
    \textsc{Small caps shape }
    {\scshape Small caps shape}

3. 字体系列(粗细,宽度)

  • 字体加粗:
    \textbf{内容abcd粗体} %这属于命令.
    \bf{…} 或 \bfseries{…} %这属于声明,且这里的花括号不起限定作用.
    {\bf 内容abcd粗体} 或 {\bfseries 内容abcd加粗} %这属于声明+用花括号限定作用范围.
  • 字体斜体:
    \textit{内容abcd斜体} %这属于命令.
    \it{…} 或 \itshape{…} %这属于声明,且这里的花括号不起限定作用.
    {\it 内容abcd斜体} 或 {\itshape 内容abcd斜体}%这属于声明+用花括号限定作用范围

中文粗体是黑体,斜体是楷书 [3];对英文加粗就是bold,斜体就是italic的。
[4] 中提到 其实\bf{A} 的用法是不存在的,且\bf是一个过时的命令。


此外, [4] 中提到 要想对希腊字母例如\gamma加粗,得使用bm宏包,然后使用 \bm命令(不是\bf命令)。
在数学环境下编辑公式时,使用\bm{\gamma}}。如果是在正文中非数学环境下,应当为$\bm{\gamma}}$。



参考

[1] Latex Font Warning after updating to TeXlive 2016

[2] Latex 字体的设置

[3] LaTeX——基本介绍及字体设置

[4] 为什么latex的公式中\bf{\gamma}总是不能加粗

[5] Latex: 编译时字体加粗无效

你可能感兴趣的:(Latex,latex,ctex)