缺少 $ 插入

缺少 $ 插入

我是 LaTeX 和 LaTeXiT 的新手。

在下面附加的完整代码中,以下行有效:

\[\boldsymbol { 1 \si{N} = 1 \si{kg} \cdot \si{m} \cdot \si{s}^{\num{-2}}}\]

但是,以下行返回“缺少$插入。”错误:

1 \si{N} = 1 \si{kg} \cdot \si{m} \cdot \si{s}^{\num{-2}}}

我该如何解决这个问题?

\documentclass[10pt]{article}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage[utf8]{inputenc}
\usepackage{siunitx}
\begin{document}
\[\boldsymbol { 1 \si{N} = 1 \si{kg} \cdot \si{m} \cdot \si{s}^{\num{-2}}}\]
1 \si{N} = 1 \si{kg} \cdot \si{m} \cdot \si{s}^{\num{-2}}}
\end{document}

以下是执行 Typeset 时控制台的完整输出:

This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex)
 restricted \write18 enabled.
entering extended mode
(./ako_Terminology-_1_Newton.tex
LaTeX2e <2021-11-15> patch level 1
L3 programming layer <2022-02-24>
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/article.cls
Document Class: article 2021/10/04 v1.4n Standard LaTeX document class
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amssymb.sty
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amsfonts.sty))
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty
For additional information on amsmath, use the `?' option.
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amstext.sty
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty))
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsbsy.sty)
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty))
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/inputenc.sty)
(/usr/local/texlive/2022/texmf-dist/tex/latex/siunitx/siunitx.sty
(/usr/local/texlive/2022/texmf-dist/tex/latex/translations/translations.sty
(/usr/local/texlive/2022/texmf-dist/tex/latex/etoolbox/etoolbox.sty)
(/usr/local/texlive/2022/texmf-dist/tex/generic/pdftexcmds/./ako_Terminology-_1_Newton.tex:8: Extra }, or forgotten $.
l.8 ...i{kg} \cdot \si{m} \cdot \si{s}^{\num{-2}}}
                                                  
? ocal/texlive/2022/texmf-dist/tex/latex/tools/array.sty))
(./ako_Terminology-_1_Newton.aux)
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/color.sty
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics-cfg/color.cfg)
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics-def/pdftex.def
(/usr/local/texlive/2022/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
)))
(/usr/local/texlive/2022/texmf-dist/tex/latex/translations/translations-basic-d
ictionary-english.trsl)
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsa.fd)
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsb.fd)
./ako_Terminology-_1_Newton.tex:8: Missing $ inserted.
<inserted text> 
                $
l.8 1 \si{N} = 1 \si{kg} \cdot
                               \si{m} \cdot \si{s}^{\num{-2}}}
? 

答案1

您不想执行任何操作\boldsymbol{<complicated equation>},因为它什么也不做。

而且您使用的工具是错误的:它的目的siunitx是为了方便输入数量和单位。

如果您希望相乘的单位由中心点分隔,请将其作为一般选项告知siunitx

要加粗整个公式,您可以按照以下代码中的建议进行操作。

\documentclass[10pt]{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{siunitx}

\sisetup{inter-unit-product=\ensuremath{{}\cdot{}}}

\newenvironment{makebold}{\boldmath\sisetup{detect-all}}{\ignorespacesafterend}

\begin{document}

\[
\qty{1}{N} = \qty{1}{kg.m.s^{-2}}
\]

\begin{makebold}
\[
\qty{1}{N} = \qty{1}{kg.m.s^{-2}}
\]
\end{makebold}

\end{document}

在此处输入图片描述

答案2

正如其他人在评论中提到的那样,原因是某些事物(在您的示例\cdot和的情况下^)仅在数学模式下起作用。

不过,在特殊情况下,siunitx我建议使用它的inter-unit-product选项来获得所需的输出,而且<num> \si{<unit>}你不应该使用,而应该使用\qty{<num>}{<unit>}

\documentclass[10pt]{article}
\usepackage{siunitx}
\begin{document}
$\qty{1}{N} = \qty[inter-unit-product=\ensuremath{{}\cdot{}}]{1}{kg.m.s^{-2}}$
\end{document}

在此处输入图片描述

您甚至可以将其用作全局设置,并且除了文字单位缩写之外,您还可以使用宏来进行类似自然语言输入的操作:

\documentclass[10pt]{article}
\usepackage{siunitx}
\sisetup{inter-unit-product=\ensuremath{{}\cdot{}}}
\begin{document}
$\qty{1}{\newton} = \qty{1}{\kilogram\metre\per\square\second}$
\end{document}

结果看起来与上面的相同。

相关内容