如果文档中的其他条件控制方程的格式

如果文档中的其他条件控制方程的格式

我如何在 latex 文档的开头创建一个变量来决定如何显示某个方程式?具体来说,一开始我想定义一个变量x,该变量将取值double columnsingle column。根据x取的值,文档中的某个方程式将是其中一个或另一个。我该怎么做?我将我想要的内容放在这里的注释中:

\documentclass{article}
\usepackage[utf8]{inputenc}

%set variable x = "double column"

\begin{document}

%if x == "double column" compile:
    \begin{equation}
        x = 2
    \end{equation}
%else compile:
    \begin{equation}
        y = 40
    \end{equation}

\end{document}

答案1

只需使\if@twocolumn条件在用户级别可用即可。

\documentclass[twocolumn]{article}

\usepackage{lipsum} % for mock text

\makeatletter
\let\iftwo\if@twocolumn
\makeatother

\begin{document}

\lipsum[1][1-4]
\iftwo
  \begin{equation}
  c=2
  \end{equation}
\else
  \begin{equation}
  c=1
  \end{equation}
\fi
\lipsum[2]

\end{document}

一列

在此处输入图片描述

双列

在此处输入图片描述

\OneOrTwo一种更灵活的方法,可以节省输入时间。此外,如果代码在内部align或类似环境中使用,参数周围的括号将避免出现问题。

\documentclass[twocolumn]{article}
\usepackage{amsmath}

\usepackage{lipsum} % for mock text

\makeatletter
\let\iftwo\if@twocolumn
\DeclareRobustCommand{\OneOrTwo}[2]{%
  \if@twocolumn#2\else#1\fi
}
\makeatother

\begin{document}

\lipsum[1][1-4]
\iftwo
  \begin{equation}
  c=2
  \end{equation}
\else
  \begin{equation}
  c=1
  \end{equation}
\fi
\lipsum[1][1-4]
\begin{equation*}
  c=2
  \OneOrTwo{+long+long+long+long+long+long}
           {\begin{aligned}[t]&+long+long+long \\ &+long+long+long\end{aligned}}
\end{equation*}
\lipsum[2]

\end{document}

一列

在此处输入图片描述

双列

在此处输入图片描述

答案2

调理的基本方法有多种。以下是几种方法:

  • 使用以下方法定义和比较宏/命令\ifx<cmdA><cmdB>

    \documentclass{article}
    
    \newcommand{\myvar}{double column}
    \newcommand{\doublecolumn}{double column}
    
    \begin{document}
    
    \ifx\myvar\doublecolumn
      \begin{equation}
        x = 2
      \end{equation}
    \else
      \begin{equation}
        y = 40
      \end{equation}
    \fi
    
    \end{document}
    
  • 像平常一样比较变量,通过 进行文本比较。如果相等,\pdfstrcmp{<stringA>}{<stringB>}则返回数字(如果按字典顺序在 之前/之后,则返回-1/1 )。0<stringA><stringB><stringA><stringB>

    \documentclass{article}
    
    \newcommand{\myvar}{double column}
    
    \begin{document}
    
    \ifnum\pdfstrcmp{\myvar}{double column}=0
      \begin{equation}
        x = 2
      \end{equation}
    \else
      \begin{equation}
        y = 40
      \end{equation}
    \fi
    
    \end{document}
    

    \pdfstrcmp扩展其参数,如果它们本身包含宏,这通常很有用。它也可以通过pdftexcmds如果您的引擎不提供它。

  • 定义一个新的\if条件:

    \documentclass{article}
    
    \newif\ifdoublecolumn% Default is \doublecolumnfalse
    
    \doublecolumntrue
    
    \begin{document}
    
    \ifdoublecolumn
      \begin{equation}
        x = 2
      \end{equation}
    \else
      \begin{equation}
        y = 40
      \end{equation}
    \fi
    
    \end{document}
    

    这个选项更加直观。

相关内容