我是 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}
结果看起来与上面的相同。