数学模式下所有字母直立(相当于 \rm)

数学模式下所有字母直立(相当于 \rm)

我正在使用文档类scrartcl,并正在寻找一种方法来编写方程式,其中所有字母都是直立的,就像使用时出现的那样\rm

\begin{equation}
    \rm A_{something} + B_{another} = C_{whatever}
\end{equation}

因为使用\rm已被弃用,所以我的问题是:有没有办法在不将每一点文本括起来的情况下实现相同的效果\text{}

\begin{equation}
    \text{A}_{\text{something}} + \text{B}_{\text{another}} = \text{C}_{\text{whatever}}
\end{equation}

答案1

如果你喜欢的效果,\rm但不喜欢它被弃用,那么看看它的实现可以让你很好地了解你可以做什么。source2e你会发现(参见第 254 页source2e2017-04-15,其中\DeclareOldFontCommand定义)

 \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}

这意味着它只是\mathrm处于数学模式。因此,您可以\mathrm改为在方程式内容周围书写。

示例输出

\documentclass{scrartcl}

\begin{document}

\begin{equation}
    \mathrm{A_{something} + B_{another} = C_{whatever}}
\end{equation}

\end{document}

答案2

如果你想要一种简单的下标书写方式\text,这里有一种方法。A_[something]如果你想\text{..}应用于下标,你可以写下来。

\documentclass{scrartcl}

\usepackage{mathtools}

\def\sbtext[#1]{\sb{\textnormal{#1}}}
\def\sptext[#1]{\sp{\textnormal{#1}}}
\makeatletter
\begingroup\lccode`\~=`\_\lowercase{\endgroup
  \def~}{\@ifnextchar[\sbtext\sb}
\begingroup\lccode`\~=`\^\lowercase{\endgroup
  \def~}{\@ifnextchar[\sptext\sp}
\makeatother

\AtBeginDocument{\catcode`\_=12 \mathcode`\_="8000 \catcode`\^=12 \mathcode`\^="8000 }

\begin{document}

\begin{equation}
  A_[something] + B_[another] = C_[whatever]
\end{equation}

\end{document}

在此处输入图片描述

此外,如果有人愿意,A_|something| + B^|something|而不仅仅是改变和A_[something] + B^[something]的定义并替换。\sptext|#1|\sbtext|#1|\@ifnextchar|

答案3

目前尚不清楚你为什么要这么做;不过,事实就是如此。

\documentclass{article}
\usepackage{amsmath}

\newenvironment{uprightmath}
 {\changecodes\ignorespaces}
 {\ignorespacesafterend}

\newcommand{\changecodes}{%
  \count255=`A
  \loop
  \mathcode\count255=\numexpr\mathcode\count255-\string"100\relax
  \ifnum\count255<`Z
    \advance\count255 1
  \repeat
  \count255=`a
  \loop
  \mathcode\count255=\numexpr\mathcode\count255-\string"100\relax
  \ifnum\count255<`z
    \advance\count255 1
  \repeat
}

\begin{document}
Here the letters are normal
\begin{equation}
A_{x}+B_{y}=Z
\end{equation}
\begin{uprightmath}
But here they're upright $A_{something} + B_{another} = Z_{whatever}$
\begin{equation}
A_{something} + B_{another} = Z_{whateverz}
\end{equation}
and back to normal
\end{uprightmath}
\begin{equation}
A_{x}+B_{y}=C
\end{equation}
\end{document}

在此处输入图片描述

答案4

问题问的是“如何做” write equations,所以这不是一个这样的答案。在这里,我建议一种如何做的方法draw

由于+通常是合并操作,并且=表示身份(例如和C结合在一起),并且由于代数的一切都可以直观地表示,因此 TikZ 解决方案AB

雨滴

由以下人员呈现:

平均能量损失

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{automata,positioning}

\begin{document}
  \begin{tikzpicture}[%
    >=stealth,
    node distance=1.6cm,
    on grid,
    auto
  ]
    \node[state] (A)  [align=center,fill=blue!5]{{\large\textit{A}}};
    \node        (A1) [align=center,pos=0.25,left = of A,fill=green!15]{Raindrop\textit{\textsubscript{s\textsubscript{1}}}};
    \node        (S1) [below = of A]{};
    \node[state] (B)  [align=center,fill=blue!5,below=of S1]{{\large\textit{B}}};    
    \node        (B1) [align=center,left = of B,fill=green!15]{Raindrop\textit{\textsubscript{s\textsubscript{2}}}};
    \node[state,double] (C)  [align=center,fill=blue!5,right=of S1,minimum size=3.8em]{{\large\textit{AB}}};    
    \node        (C1) [align=center,right = of C,fill=green!15]{Raindrop\textit{\textsubscript{B\textsubscript{1}}}};
    \draw[->]   (A) edge (C);
    \draw[->]   (B) edge (C);    
      \end{tikzpicture}
\end{document}

这对某些人来说可能更容易理解,因为混合两种风格(代数和通俗语言)会增加读者的认知负担,因为他们必须理清两者,然后比较它们的含义如何交织在一起。

经过检查,可以立即发现 AB 组合C具有与其成分不同的属性(例如均匀性),这意味着身份(=)只是部分描述。随着新实体的创建,还发生了转变。

字母可以是直立的,也可以是斜体的,随心所欲。

相关内容