我在数学模式下格式化文本时遇到问题。我做了一个命令,将方程式末尾的单位一直移动到右边。它看起来像这样
\newcommand{\unit}[1]{\hfill{\text{#1}}}
这就是我打算使用它的方式(只是一些随机方程):
\begin{equation}
p(P)=S_{\text{i}}+10\cdot \log_{10}\left(\frac{P}{1\:\text{W}}\right)\,\unit[{dB}_{SPL}]
\end{equation}
它看起来是这样的:
现在来谈谈问题。如您所见,单位是斜体,但我希望是普通(罗马体)。如果我每次添加新单位时都手动输入,我可以做到这一点,但我希望它是自动的。
我曾尝试使用:
\mbox
\mathrm
\normalfont
\text
\textrm
以下是您可能需要帮助我的更多信息:
\documentclass[a4paper,11pt,fleqn,dvipsnames,twoside,openright]{memoir}
\usepackage[utf8]{inputenc}
\usepackage[danish]{babel}
\usepackage[T1]{fontenc}
\usepackage{ragged2e,anyfontsize}
\usepackage{fixltx2e}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{stmaryrd}
\usepackage{amsthm}
\usepackage{textcomp}
\usepackage{siunitx}
\sisetup{output-decimal-marker = {,}}
\newcommand{\e}{\text{e}}
%THE newcommand which is causing problems!%
\newcommand{\enhed}[1]{\hfill{\text{#1}}}
\hyphenation{}
答案1
您使用的定义\unit
不正确。
\newcommand{\unit}[1]{..}
指定\unit
将采取单一强制的参数。如果您不提供显式括号(以 的形式\unit{..}
),则第一个标记将被视为参数:
\unit[{dB}_{SPL}]
因此,在上面的内容中,[
被视为参数,因此上面的内容被替换为
\hfill\text{[}{dB}_{SPL}]
其设置与预期一致。您应该使用
\unit{dB_{SPL}}
定义\unit
\newcommand{\unit}[1]{[\mathrm{#1}]}
但请注意,这\hfill
在数学模式下没有任何意义,因此\unit
将被设置在它放置位置的右侧。我觉得没问题...
\documentclass{article}
\usepackage{amsmath}
\newcommand{\unit}[1]{\hfill\text{}[\mathrm{#1}]}
\begin{document}
\begin{equation}
p(P) = S_{\text{i}}+10\cdot \log_{10}\left(\frac{P}{1\:\text{W}}\right)\,\unit{dB_{SPL}}
\end{equation}
\end{document}
答案2
虽然沃纳的回答完全正确地解决了如何从技术上解决这个问题的问题,但是有一个很大的缺点:提问者希望使用的单位和括号完全是错误的。
请注意[X]
读作the unit of X
。因此,像这样写才是正确的:
$[I] = \mathrm{A}$
或者更好$[I] = \si{\ampere}$
。读作:“电流的单位是安培”。
因此,括号里是物理量,而不是单位。物理量本身就是产品的价值及其单元。
因此,有两种正确的方式来显示你的方程式,请注意使用 siunitx 来表示“1 W”:
\documentclass{article}
\usepackage{amsmath}
\usepackage{siunitx}
\begin{document}
\begin{equation}
p(P) = \left( S_{\text{i}}+10\cdot \log_{10}\!\left(\frac{P}{\SI{1}{\watt}}\right) \right) \si{\deci\bel}
\end{equation}
\begin{equation}
p(P)/\si{\deci\bel} = S_{\text{i}}+10\cdot \log_{10}\!\left(\frac{P}{\SI{1}{\watt}}\right)
\end{equation}
\end{document}
另外,括号前面的间距\left(
不是最佳的,我添加了一个负数学空格\!