我正在尝试使用该tipa
包来提供不同版本的 Omega 希腊符号:
\usepackage{tipa}
\newcommand{\scOmega}{\text{\textscomega}} % small omega*
但是现在我发现我的整个文档无法再编译,因为它给了我额外的错误:
./doc.tex:809: Argument of \bs has an extra }.
这是一个 MWE:
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{arydshln} % for cdashline
\usepackage{tipa}
\newcommand{\scOmega}{\text{\textscomega}} % small omega
\newcommand{\bs}[1] {\boldsymbol{#1}}
\begin{document}
{\renewcommand{\arraystretch}{2}
\begin{align*}
\newcommand*{\tmp}{\multicolumn{1}{r|}{}}
\bs{K} & = \int_{0}^{x_\Gamma} EA \; \bs{B} ^\intercal \bs{B} \; \text{d}x + \int_{x_\Gamma}^{L} EA \; \bs{B} ^\intercal \bs{B} \; \text{d}x \\
& = \frac{EA}{L}
\begin{bmatrix}
\phantom{+}1 & -1 & \phantom{+}1 \\ \cdashline{1-3}
-1 & \phantom{+}1 & -1 \\
\phantom{+}1 & -1 & 1 \\
\end{bmatrix}, \qquad \text{~and~} \bs{F} = \begin{bmatrix} R \\ \cdashline{1-2} P \\ 0 \end{bmatrix},
\end{align*}
}
\end{document}
答案1
您的问题具有误导性,因为它仅询问示例未引发的错误,但错误是tipa
重新定义\;
如果您不需要 tipa 定义,您可以按如下方式恢复原始版本
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{arydshln} % for cdashline
\let\savedsemi\;
\usepackage{tipa}
\let\;\savedsemi
\newcommand{\scOmega}{\text{\textscomega}} % small omega
\newcommand{\bs}[1] {\boldsymbol{#1}}
\begin{document}
{\renewcommand{\arraystretch}{2}
\begin{align*}
\newcommand*{\tmp}{\multicolumn{1}{r|}{}}
\bs{K} & = \int_{0}^{x_\Gamma} EA \; \bs{B} ^\intercal \bs{B} \; \text{d}x + \int_{x_\Gamma}^{L} EA \; \bs{B} ^\intercal \bs{B} \; \text{d}x \\
& = \frac{EA}{L}
\begin{bmatrix}
\phantom{+}1 & -1 & \phantom{+}1 \\ \cdashline{1-3}
-1 & \phantom{+}1 & -1 \\
\phantom{+}1 & -1 & 1 \\
\end{bmatrix}, \qquad \text{~and~} \bs{F} = \begin{bmatrix} R \\ \cdashline{1-2} P \\ 0 \end{bmatrix},
\end{align*}
}
\end{document}
以上是解决包冲突的一般方法,但对于 tipa 重新定义标准数学命令的具体情况,还有更具体的解决方案。
\usepackage[safe]{tipa}
使用此safe
选项,包可以避免定义与标准定义冲突的命令。
答案2
的手册tipa
指定您应该使用safe
选项以便不修改诸如\;
和 之类的命令\!
。但是,你却滥用它们。
我做了其他修复。您不能bmatrix
同时使用\cdashline
,您需要array
。此外,加载bm
对于粗体数学符号更可取。请注意,\text{d}
不能保证使d
直立;我添加了一个合适的定义。
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{bm}
\usepackage{arydshln} % for cdashline
\usepackage[safe]{tipa}
\newcommand{\scOmega}{\textnormal{\textscomega}} % small omega
\newcommand{\bs}[1]{\boldsymbol{#1}}
\newcommand{\diff}{\mathop{}\!\mathrm{d}}
\begin{document}
\begin{align*}
\bs{K}\;
& = \int_{0}^{x_\Gamma} EA \bs{B}^\intercal \bs{B} \diff x
+ \int_{x_\Gamma}^{L} EA \bs{B}^\intercal \bs{B} \diff x \\
& = \frac{EA}{L}
\left[\begin{array}{@{}rrr@{}}
1 & -1 & 1 \\ \cdashline{1-3}
-1 & 1 & -1 \\
1 & -1 & 1 \\
\end{array}\right],
\qquad \text{ and }
\bs{F} =
\left[\begin{array}{@{}c@{}}
R \\ \cdashline{1-1}
P \\
0
\end{array}\right],
\end{align*}
\end{document}
EA
如果您确实想在和之间添加额外的空格\bs{B}
,请使用\,
和而不是\;
。
顺便说一句,您不需要tipa
打印更小的 Omega。
\documentclass{article}
\usepackage{fix-cm}
\usepackage{amsmath}
\makeatletter
\DeclareRobustCommand{\scGreek}[1]{%
\text{%
\fontsize{0.7\dimexpr\f@size pt}{0}\selectfont
$\m@th#1$%
}%
}
\makeatother
\newcommand{\scOmega}{{\scGreek{\Omega}}}
\begin{document}
$x\Omega\neq x\scOmega_{\Omega+\scOmega}$
\end{document}
该代码用于\text
自动获取上标和下标中的可缩放符号。整体比例因子为 0.7,请根据自己的需要进行更改。