我想在TUGboat 30:3,2009年关于标量、向量和张量的直立/斜体和粗体/正常。所有这些都与数学有关。
我使用这个字体:
\usepackage[charter]{mathdesign}
对于向量,我总是使用\vec
,所以我只是像这样重新定义它:
\renewcommand{\vec}[1]{\boldsymbol{#1}}
现在它们变成了粗体和斜体,就像我想要的那样。这是正确的做法吗?
如何获得粗体、斜体和无衬线的字符?
我几乎明白了,它们只是直立的而不是斜体的:
\newcommand{\tens}[1]{\boldsymbol{\mathsf{#1}}}
答案1
最简洁的方法是定义一个新的数学字母表:
\DeclareMathAlphabet{\mathbfsf}{\encodingdefault}{\sfdefault}{bx}{n}
进而
\newcommand{\tens}[1]{\mathbfsf{#1}}
如果你想要斜体粗体无衬线字体,只需将第一个声明更改为
\DeclareMathAlphabet{\mathbfsf}{\encodingdefault}{\sfdefault}{bx}{sl}
但请记住,OT1 编码的 Computer Modern Sans 字体没有倾斜粗体,因此
\usepackage[T1]{fontenc}
或者
\usepackage{lmodern}
是必须的。
您还应该考虑使用\bm
包bm
而不是\boldsymbol
,这样\bm{\mathsf{T}}
就相当于\mathbfsf{T}
第一个声明的。但是,没有预定义的无衬线斜体数学字母表。因此,如果您还需要无衬线斜体,更经济的设置将是
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{bm}
\DeclareMathAlphabet{\mathsfit}{\encodingdefault}{\sfdefault}{m}{sl}
\SetMathAlphabet{\mathsfit}{bold}{\encodingdefault}{\sfdefault}{bx}{sl}
\newcommand{\tens}[1]{\bm{\mathsfit{#1}}}
\begin{document}
$\tens{T}$
\end{document}