我有一个公式,其内容如下......
\documentclass[journal]{IEEEtran}
\usepackage[backend=biber]{biblatex}
\addbibresource{bibliography.bib} %Import the bibliography file
\usepackage{lipsum}
\usepackage{algpseudocode}
\usepackage{algorithm}
\usepackage{graphicx}
\usepackage{adjustbox}
\hyphenation{op-tical net-works semi-conduc-tor}
\usepackage{amsmath,amssymb}
\DeclareRobustCommand{\bbone}{\text{\usefont{U}{bbold}{m}{n}1}}
\DeclareMathOperator{\EX}{\mathbb{E}}
\DeclareMathOperator{\E}{\mathbb{E}}
\begin{document}
\maketitle
\lipsum
\begin{equation}
\begin{aligned}[c]
reward(node, action) = \begin{cases}
constant\_action\_reward -\par action\_cost +
success\_prob(action, sequence) * node\_reward,& \text{if } "XXX"=action
constant\_action\_taking\_reward - action\_cost, & \text{otherwise}
\end{cases}
\end{aligned}
\end{equation}
\lipsum
\end{document}
我尝试过在双栏中使用 * 像 {equation*} 和不使用。论文是双栏的。在每个选项中,这覆盖两栏,其他文本覆盖在它上面。我附上了一张示例图片。如果它适合单栏,或者至少覆盖双栏,并且没有文本覆盖它,我会很高兴。
答案1
首先,您应该对数学使用与 Times 兼容的字体,并将长名称包装在\mathit
其中或类似内容中。
其次,你需要分割较长的顶线。cases
恐怕使用是不可能的。
一点视觉格式化会有所帮助。
\documentclass[journal]{IEEEtran}
\usepackage{amsmath,mathtools,amssymb}
\usepackage{newtx} % for math symbol compatible with Times
\usepackage{lipsum}
\newcommand{\tv}[1]{\mathit{#1}} % text variable
\begin{document}
\lipsum[1][1-4]
\begin{equation}
\hspace{-0.5em}
\begin{aligned}
&\tv{reward}(\tv{node}, \tv{action}) \\
& =
\left\{
\begin{aligned}
&\begin{aligned}
\begin{aligned}
&\tv{constant\_action\_reward} - \tv{action\_cost} \\
&+ \tv{success\_prob}(\tv{action}, \tv{sequence}) \cdot \tv{node\_reward},
\end{aligned}
\\
\text{if } \text{"XXX"}=\tv{action}\hspace{-0.3em}
\end{aligned}
\\[2ex]
&\begin{aligned}
\tv{constant\_action\_taking\_reward} - \tv{action\_cost},
\\
\text{otherwise}\hspace{-1em}
\end{aligned}
\end{aligned}\right.
\end{aligned}
\hspace{1000pt minus 1fil}
\end{equation}
\lipsum
\end{document}
答案2
作为Zarko 评论即使使用双列,你的方程也不适合。
我认为第一个选择是最好的,那就是使用较短的变量名。
如果你必须准确使用公式,Zarko 建议您打破了 的第一行cases
。我认为这样看起来比在 之前打破更好cases
。(并且您应该使用完整文本宽度显示它:在一列中使用变量名称,因为它们是原样,无法在少于 5 行的行中显示您的方程式,这使得它不太清晰。)
\documentclass[journal]{IEEEtran}
\usepackage[backend=biber]{biblatex}
\addbibresource{bibliography.bib} %Import the bibliography file
\usepackage{lipsum}
\usepackage{graphicx}
\usepackage{adjustbox}
\hyphenation{op-tical net-works semi-conduc-tor}
\usepackage{amsmath,amssymb}
\begin{document}
\lipsum
\begin{equation}
E = mc^2
\end{equation}
\begin{figure*}[!t]
\normalsize
\begin{multline}
\mathsf{reward(node, action)} = \\
\begin{cases}
\mathsf{constant\_action\_reward} - \mathsf{action\_cost} +
\mathsf{success\_prob(action, sequence)} * \mathsf{node\_reward},& \text{if ``XXX''=action} \\
\mathsf{constant\_action\_taking\_reward} - \mathsf{action\_cost}, & \text{otherwise}
\end{cases}
\end{multline}
\hrulefill
% The spacer can be tweaked to stop underfull vboxes.
\vspace*{4pt}
\end{figure*}
\begin{equation}
E = mc^e
\end{equation}
\lipsum
\end{document}
一些说明:
- 我把你的变量名包裹起来,
\mathsf
因为它们看起来像计算机变量名。如果它们是单词,我会使用\mathrm
或\mathit
像 David Carlisle 建议的那样。 - 我修复了显示的方程式中的一些其他小错误。
- 我不知道的语义是什么
"XXX"=action
,所以我把它们保留为文本。但你应该调整以适应含义。 - 如果您编译此文档,您将看到公式的编号顺序是错误的。这是“设计使然”:IEEEtran 文档表明双列公式优先浮动到下一页的顶部。文档中包含的代码提供了一种恢复正确编号的方法;但这需要手动干预,并且应在完成整个文档后进行设置。所以我在上面的代码中省略了这一点。