我如何在 latex 文档的开头创建一个变量来决定如何显示某个方程式?具体来说,一开始我想定义一个变量x
,该变量将取值double column
或single 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}
这个选项更加直观。