tipa 包搞乱了编译

tipa 包搞乱了编译

我正在尝试使用该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,请根据自己的需要进行更改。

在此处输入图片描述

答案3

如果您只是想要 Omega 符号,那么您可以只添加此符号,而不必添加整个包。

\documentclass{article}
\usepackage{amsmath}
\usepackage[T3,OT1]{fontenc}
\DeclareTextSymbolDefault\textscomega{T3}
\newcommand{\scOmega}{\text{\textscomega}} % small omega
\begin{document}

$\scOmega\Omega$

\end{document}

在此处输入图片描述

相关内容