![使用 \boldsymbol 时出错](https://linux22.com/image/428854/%E4%BD%BF%E7%94%A8%20%5Cboldsymbol%20%E6%97%B6%E5%87%BA%E9%94%99.png)
我正在使用\boldsymbol
并收到一个奇怪的错误。以下是包含我导入的所有包的 MWE:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amsthm,amssymb,hanging,amsthm,polynom,mathtools,verbatim,enumitem,fancyhdr,tikz,systeme,multicol,siunitx,titling,flexisym,hyperref,xparse, amstext, array,xfrac,datetime,advdate,mathrsfs}
\begin{document}
$\boldsymbol{f(x)}$
\end{document}
以下是错误消息(假设测试文件名为“main.tex”):
./main.tex:5: Undefined control sequence.
\binrel@@ #1->\@symErr
?{\OrdSymbol {#1}}
l.5 $\boldsymbol{f(x)}
$
?
我无法确定是哪个软件包导致了错误。如能得到任何帮助我将不胜感激。
答案1
从直接意义上讲,错误是由于弗莱西姆是您的代码加载的众多包之一。(@Werner 已经在您的答案下方的评论中指出了这一点。)当然,如果有人这样做不是加载flexisym
包,错误消失。
但从更广泛的意义上讲,错误出现的原因在于您的代码违反了 一些flexisym
隐含的但完全合理的假设,这些假设涉及什么是好的(或至少是合理的)编码实践。具体来说,错误在于通过编写
$\boldsymbol{f(x)}$
你告诉 LaTeX 不仅f
要x
渲染大胆的,但符号(
和)
也是如此。果然,如果您\boldsymbol{f(x)}
用替换$\boldsymbol{f}(\boldsymbol{x})$
,错误就会消失——即使flexisym
加载了。
\boldsymbol{f(x)}
从美学(排版)的角度来看,书写确实构成了相当可疑的编码实践。为什么?在精细的数学排版中,以大胆的不仅创造了不同的外貌但也传达了不同的意义。
您是否想让粗体括号具有与普通括号(即非粗体括号)不同的含义?至少可以说,这很不寻常。当然,如果真的是如果你想表达什么,你应该确保明确地说明这一点,最好是在文档的开头附近,否则你的许多读者可能会忽略这种区别。
如果您绝对必须将和加粗
f
,并且x
将括号也加粗,那么您应该加载bm
(我想是“bold math”的缩写)包并写入$\bm{f(x)}$。\bm
比写起来更容易\boldsymbol
,不是吗?但是,请问问自己,这是否真的是你想要的,或者你是否应该写其中之一
$\bm{f}(\bm{x})$
或$\mathbf{f}(\mathbf{x})$
相反。前者产生加粗斜体输出,后者产生粗体直立输出,但不加粗括号。
您可能还想清理并构建一些加载 LaTeX 包的方式。我在下面的代码中提供了一些这方面的建议。也请问问自己,您的文档是否真的需要加载许多这样的包。
\documentclass{article}
% First, some comments about your current approach to loading packages:
%\usepackage[utf8]{inputenc} % 'utf8' is the default nowadays
%\usepackage{%amsmath, % is loaded automatically by 'mathtools'
% amsthm,amssymb,
% hanging, % to simplify creating paragraphs with hanging indentation
% %amsthm, % don't load packages twice (or three times, or ...)
% polynom, % for typesetting polynomial long division
% mathtools,
% %verbatim, % since you load 'fancyhdr', I'd load 'fancyvrb' instead of 'verbatim'
% enumitem,
% fancyhdr,tikz,systeme,multicol,siunitx,
% titling, % for more control over '\maketitle' and '\thanks' -- do you need it?
% flexisym,
% %hyperref, % this package should almost invariably be loaded *last*
% xparse,
% %amstext,
% array,xfrac,
% %datetime, % why don't you load the newer and more capable 'datetime2' package?
% advdate, % this package was last updated in 1996 -- do you need it??
% mathrsfs}
%% Suggestion: Take a more structured approach to loading packages.
\usepackage{mathtools,amssymb,amsthm,mathrsfs,flexisym,xfrac} % 'math-y' packages
\usepackage{bm} % <-- new, for '\bm' macro
\usepackage{polynom,systeme,siunitx} % 'sort-of math-y' packages
\usepackage{hanging,fancyvrb,fancyhdr,multicol,enumitem,titling,datetime2}
\usepackage{xparse}
\usepackage{tikz}
\usepackage{hyperref} % observe that this package is now loaded *last*
\begin{document}
% This causes an error:
% $\boldsymbol{f(x)}$
% The following examples work fine:
$\boldsymbol{f}(\boldsymbol{x})$, $\bm{f(x)}$, $\bm{f}(\bm{x})$, $\mathbf{f}(\mathbf{x})$
\end{document}