在方程和分割环境中使用 resizebox 的问题

在方程和分割环境中使用 resizebox 的问题

下面有一个方程,它被包裹在equationandsplit环境中。由于方程很长,它会超出边距,所以我使用了resizebox。根据这个问题在环境中时,我需要明确进入数学模式resizebox。但是,我仍然收到错误。该文档可以编译(至少在 Overleaf 上可以),但我想消除该错误,以便可以共享 tex 文件。

代码:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amssymb}
\usepackage{parskip}
\usepackage[numbers]{natbib}
\bibliographystyle{plainnat}
\usepackage{graphicx}

\begin{document}

\begin{equation}
    \label{eq:word}
    \resizebox{\textwidth}{!}{% 
    \begin{split}
        $quality(w_{i}) = & \log(1 + \operatorname{similarity}(a,b)) + \log(1 + familiarity(w_{i})) \\ 
        & + \log(1+familiarity(\min{(e,3)})) +
        \log(1 + expectedness(w_i|w_{i-1})) \\
        & - \log(1+tts\textnormal{-}experience(subject)) + 
        quality(w_{i-1}) + \mathcal{A}$% 
    \end{split}
    }
\end{equation}

\end{document}

引发错误:

Pakage amsmath Error: \begin{aligned} allowed only in math mode
Missing $ inserted
Missing { inserted
Missing } inserted

该错误该如何解决?

答案1

环境split需要数学模式:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amssymb}
\usepackage{parskip}
\usepackage[numbers]{natbib}
\bibliographystyle{plainnat}
\usepackage{graphicx}

\begin{document}

\begin{equation}
    \label{eq:word}
    \resizebox{\textwidth}{!}{% 
    $
    \begin{split}
        quality(w_{i}) = & \log(1 + \operatorname{similarity}(a,b)) + \log(1 + familiarity(w_{i})) \\ 
        & + \log(1+familiarity(\min{(e,3)})) +
        \log(1 + expectedness(w_i|w_{i-1})) \\
        & - \log(1+tts\textnormal{-}experience(subject)) + 
        quality(w_{i-1}) + \mathcal{A}% 
    \end{split} 
    $
}
\end{equation}

\end{document}

在此处输入图片描述

答案2

为什么要调整大小?多一行就足够了。

\documentclass{article}
\usepackage{amsmath,amssymb}

\makeatletter
\newcommand{\tf}[1]{\operatorname{#1}} % text function
\newcommand{\tv}[1]{\mathit{\newmcodes@ #1}} % text variable
\makeatother

\begin{document}

\begin{equation}\label{eq:word}
\begin{split}
\tf{quality}(w_{i})
  &= \log(1 + \tf{similarity}(a,b)) + \log(1 + \tf{familiarity}(w_{i})) \\ 
  &\quad + \log(1+\tf{familiarity}(\min{(e,3)})) \\
  &\quad + \log(1 + \tf{expectedness}(w_i|w_{i-1})) \\
  &\quad - \log(1+\tf{tts-experience}(\tv{subject}))
         + \tf{quality}(w_{i-1}) + \mathcal{A} 
\end{split}
\end{equation}

\end{document}

我选择用 来表示函数名称\operatorname,这样就直立了,变量用斜体(但文本用斜体,而不是数学斜体)。诀窍\newmcodes@是让变量中的连字符也变成正常的,而不是减号。

在此处输入图片描述

我不会将运算符号对齐在等号下。如果您更喜欢它,以下是正确的代码。

\documentclass{article}
\usepackage{amsmath,amssymb}

\makeatletter
\newcommand{\tf}[1]{\operatorname{#1}} % text function
\newcommand{\tv}[1]{\mathit{\newmcodes@ #1}} % text variable
\makeatother

\begin{document}

\begin{equation}\label{eq:word}
\begin{split}
\tf{quality}(w_{i})
  ={}   & \!\log(1 + \tf{similarity}(a,b)) + \log(1 + \tf{familiarity}(w_{i})) \\ 
  {}+{} & \!\log(1+\tf{familiarity}(\min{(e,3)})) \\
  {}+{} & \!\log(1 + \tf{expectedness}(w_i|w_{i-1})) \\
  {}-{} & \!\log(1+\tf{tts-experience}(\tv{subject}))
          + \tf{quality}(w_{i-1}) + \mathcal{A} 
\end{split}
\end{equation}

\end{document}

在此处输入图片描述

这些\!位是必需的,因为在split之后插入了“空原子” &,这导致后面的操作符前面有一个细空格,我们需要将其删除。

答案3

缩放方程式会导致字体大小不兼容,通常最好避免。

这里的方程比它需要的更宽,因为数学斜体将字母隔开,使它们成为变量的乘积,而不是一个单词,经过这样的改变它已经适合页面了,但是方程式编号被向下移动了,在这里我添加了一个额外的换行符以便方程式编号可以保持居中。

在此处输入图片描述

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amssymb}
\usepackage{parskip}
\usepackage[numbers]{natbib}
\bibliographystyle{plainnat}
\usepackage{graphicx}

\begin{document}

\begin{gather}
    \label{eq:word}
     \begin{split}
        \operatorname{quality}(w_{i}) ={}\hspace{-50pt}&\\
     &\log(1 + \operatorname{similarity}(a,b)) + \log(1 + \operatorname{familiarity}(w_{i})) \\ 
        & + \log(1+\operatorname{familiarity}(\min{(e,3)})) +
        \log(1 + \operatorname{expectedness}(w_i|w_{i-1})) \\
        & - \log(1+\operatorname{tts-experience}(\mathrm{subject})) + 
        \operatorname{quality}(w_{i-1}) + \mathcal{A} 
   \end{split}
    \end{gather}

\end{document}

相关内容