这是之前的帖子,可以在这里。
我现在正在尝试使用该命令,但出现了很多编译错误,我真的不明白问题出在哪里。这是我使用该命令的方式:
\documentclass{article}
\usepackage{mathtools}
\newcommand{\twopartdef}[3]{%
\left\{
\begin{array}{ll}
#1 & \mbox{if } #2 \\
#3 & \mbox{otherwise}
\end{array}
\right.
}
\begin{document}
%some text ...
\[
join^\sharp_{KSet_n}(\{ \alpha_1, \hdots, \alpha_p \}, \{ \beta_1, \hdots, \beta_q \}) =
\twopartdef{\{\alpha_1, \hdots, \alpha_p\} \cup \{\beta_1, \hdots, \beta_q\}}{p \leq n et q \leq n}{\top}
\]
%more text
\end{document}
以下是主要的编译错误:
Missing $ inserted
I've inserted a begin-math/end-math symbol since I think you left one out
....
I've deleted a group-closing symbol because it seems to be spurious, as in `$x}$'..
....
I can't figure out why you would want to use a tab mark here.
....
A left brace was mandatory here, so I've put one in.
....
我发现问题出在这一行(通过评论它)
\twopartdef{\{\alpha_1, \hdots, \alpha_p\} \cup \{\beta_1, \hdots, \beta_q\}}{p \leq n et q \leq n}{\top}
所以我尝试用 代替$ $
,lbrace rbrace
但\{ \}
什么都没变。我对其他定义使用了相同的命令,效果很好。我遗漏了什么?
编辑:我尝试单独编译上述代码,并且成功了。那么为什么它不能与其余文档一起运行呢?
答案1
您的定义\twopartdef
使得语法非常繁琐。
\documentclass{article}
\usepackage{mathtools}
\newcommand{\case}[1]{\text{if $#1$}}
\newcommand{\otherwise}{\text{otherwise}}
\newenvironment{multipartdef}
{\begin{cases}}
{\end{cases}}
\DeclareMathOperator{\join}{join}
\begin{document}
%some text ...
\[
\join^\sharp_{\mathit{KSet}_n}(\{ \alpha_1, \dots, \alpha_p \}, \{ \beta_1, \dots, \beta_q \}) =
\begin{multipartdef}
\{\alpha_1, \hdots, \alpha_p\} \cup \{\beta_1, \hdots, \beta_q\} &
\case{p \leq n \text{ and } q \leq n}
\\
\top & \otherwise
\end{multipartdef}
\]
%more text
\end{document}
如果您有更多案例,则不需要不同的命令,而只需向环境中添加行即可。 您出错的机会也更少。
答案2
我假设您使用这个定义来表示\twopartdef
:
\usepackage{amsmath}
\newcommand{\twopartdef}[3]{%
\begin{cases}
#1 & \text{if #2} \\
#3 & \text{otherwise}
\end{cases}
}
此定义以文本模式处理第二个参数,因此您需要编写
$p \leq n$ et $q \leq n$
在代码中命令的第二个参数中(否则,第一个\leq
将出现在文本模式中,这将触发错误消息)。
您更正后的代码:
\documentclass{article}
\usepackage{amsmath}
\newcommand{\twopartdef}[3]{%
\begin{cases}
#1 & \text{if #2} \\
#3 & \text{otherwise}
\end{cases}
}
\DeclareMathOperator{\join}{join}
\begin{document}
\[
\join^\sharp_{KSet_n}(\{ \alpha_1, \hdots, \alpha_p \}, \{ \beta_1, \hdots, \beta_q \}) =
\twopartdef{\{\alpha_1, \hdots, \alpha_p\} \cup \{\beta_1, \hdots, \beta_q\}}{$p \leq n$ et $q \leq n$}{\top}
\]
\end{document}
结果如下:
请注意,我曾经\DeclareMathOperator
定义过\join
允许上标/下标的运算符(类似于\sum
)。