![控制数学环境中的字体大小,进行微调](https://linux22.com/image/281129/%E6%8E%A7%E5%88%B6%E6%95%B0%E5%AD%A6%E7%8E%AF%E5%A2%83%E4%B8%AD%E7%9A%84%E5%AD%97%E4%BD%93%E5%A4%A7%E5%B0%8F%EF%BC%8C%E8%BF%9B%E8%A1%8C%E5%BE%AE%E8%B0%83.png)
在我使用的文档中\documentclass[12pt]{report}
,我有一些表格,每行包含一个索引和一个不等式。由于这是一个很长的列表,因此它是一个supertabular
包含列的列表c|rcr
。一行的示例数据是1 & x_{i,j} & \leq & 0 \\
。
现在,在这个特定的表中,我更喜欢打字机样式。此外,这些不等式的长度太长,无法适应正常的文本大小,因此,我还减小了字体大小。为了在每个数学环境中实现这一点而不重复命令,我声明了一个特定的环境:
\newenvironment {specialMath} [0] {} {}
\AtBeginEnvironment{specialMath}
{
\everymath{\scriptstyle\mathtt{\xdef\tmp{\fam\the\fam\relax}\aftergroup\tmp}}
\everydisplay{\scriptstyle\mathtt{\xdef\tmp{\fam\the\fam\relax}\aftergroup\tmp}}
}
一切正常,所有内容都以下标大小显示。但是,打印在 A4 上,这个尺寸有点太小了。
总结一下\textstyle
就是太大,\scriptstyle
太小,但是又不想调整全部\DeclareMathSizes{...
字体大小(据我所知,可以在序言中完成)。
如何在一组数学环境中本地而不是全局地微调字体大小?
一个最小可编译示例(pdflatex),没有表格:
\documentclass[12pt]{report}
\usepackage{amsmath} % math environment
\usepackage{etoolbox} % environment customization
\usepackage{supertabular} % multi-page tables
\newenvironment {specialMath} [0] {} {}
\AtBeginEnvironment{specialMath}
{
\everymath{\scriptstyle\mathtt{\xdef\tmp{\fam\the\fam\relax}\aftergroup\tmp}}
\everydisplay{\scriptstyle\mathtt{\xdef\tmp{\fam\the\fam\relax}\aftergroup\tmp}}
}
\begin{document}
$x_{i,j} \leq 0$ % normal style
\begin{specialMath}
\begin{supertabular}{r}
$x_{i,j} \leq 0$\\ % typewriter, slightly smaller
\end{supertabular}
\end{specialMath}
$x_{i,j} \leq 0$ % normal style again
\end{document}
如果没有 supertabular,它就不是打字机字体。无论如何它都会在表格中使用,但你可以忽略这个事实。
答案1
我不太确定\scriptstyle
;这是我会做的:
\documentclass[12pt]{report}
\usepackage{amsmath}
\usepackage{supertabular}
\newenvironment{specialMath}
{\footnotesize\everymath{\fam\thettfam}}
{}
\AtBeginDocument{%
\sbox0{$\mathtt{\xdef\thettfam{\the\fam}}$}%
}
\begin{document}
$x_{i,j} \leq 0$ % normal style
\begin{specialMath}
\begin{supertabular}{r}
$x_{i,j} \leq 0$\\ % typewriter, slightly smaller
\end{supertabular}
\end{specialMath}
$x_{i,j} \leq 0$ % normal style again
\end{document}