已编辑
我想让以数学模式写的名称与该部分的样式标题相匹配。
我的代码的第一行是
\documentclass[pdftex,12pt,twoside,a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage{float}
\usepackage{lmodern}
\usepackage{amssymb,amsmath,amsthm}
我的文档中有章节和部分同时显示文本和公式。如果我使用
\section{Properties of $Ti_3SiC_2$}
结果是
在文本中
在索引中。
为了尝试纠正两个地方字体样式的差异,我使用的代码行是:
\subsection[Properties of \texorpdfstring{$\mathrm{ZrB_2+SiC}$}{TEXT}]{Properties of \texorpdfstring{$\mathbf{ZrB_2+SiC}$}{TEXT}}
索引中的结果是
本节标题为
样式似乎匹配,但实际上并非如此。也就是说,在两种情况下,Properties 和 ZrB_2 的字母看起来都不同。有人知道这一点吗?现在是不是更容易理解了?
Pd:我不希望正文标题和索引有相同的样式格式。我的目的是标题和数学表达式的格式以及索引和数学表达式的格式相同。
答案1
我猜你正在寻找\boldmath
宏。在标准文档中
\documentclass{article}
\begin{document}
$\mathrm{ZrB_2+SiC}$ vs. {\boldmath$\mathrm{ZrB_2+SiC}$}
\end{document}
为避免过多的额外编码,一种可行的方法是添加\boldmath
到任何调用中。这可以通过\bfseries
内部宏完成\g@addto@macro
\makeatletter
\g@addto@macro\bfseries{\boldmath}
\makeatother
在序言中。
\documentclass[pdftex,12pt,twoside,a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage{float}
\usepackage{lmodern}
\usepackage{amssymb,amsmath,amsthm}
\makeatletter
\g@addto@macro\bfseries{\boldmath}
\makeatother
\begin{document}
\tableofcontents
\section{Properties of $Ti_3SiC_2$}
\section{Beware bold math $\mathbf{x}y\mathrm{z}$}
\end{document}
正如第二个标题所示,如果在方程式中混合\mathbf
和,这可能是不可接受的。\mathrm
答案2
使用化学包,例如chemformula
(或mhchem
):
\documentclass[12pt,twoside,a4paper]{report}
\usepackage{lmodern}
\usepackage{amssymb,amsmath,amsthm}
\usepackage{chemformula}
\begin{document}
\section{Properties of \ch{Ti3SiC2}}
\end{document}
下面的图片显示了您将在目录中获得的内容。
附注:pdftex
不应指定该选项,因为需要它的软件包能够根据排版所用的引擎猜测驱动程序。对于最近的 TeX 发行版,不再需要inputenc
使用该选项加载(但这不会造成任何损害)。utf8
答案3
就我的情况而言,@leandriis 给出的解决方案完全有效。唯一的问题是,我收到了一系列类似这样的警告
Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding): removing \mhchem@cee' on input line 96.
和Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding): removing subscript' on input line 96.
有人知道如何解决