我尝试同时使用 gb4e 和 xyling 包(我长期使用前者,后者对我来说是新的),当在同一个文档中使用它们时(无论以何种顺序调用它们),它们都会产生错误。单独使用任何一个包都可以编译。这是我的 MWE:
\documentclass[a4paper,12pt]{article}
\usepackage{gb4e}
\usepackage{xyling}
\begin{document}
Dragons
\end{document}
这会产生以下错误:
! Missing number, treated as zero.
<to be read again>
\let
l.101 \catcode`\^^M
=\active
?
有什么好方法可以解决这个问题吗?
或者,我只需要将 xyling 用于一个非常特殊的目的,即制作一个韵律网格,如文档第 9 节(第 25 页)中所述:http://ctan.math.washington.edu/tex-archive/macros/latex/contrib/xyling/xyli-doc.pdf如果有不同的包可以达到相同的效果并且不与其他包冲突,那对我来说也是一个实用的解决方案。
答案1
当然,Marijn 的回答是对这个问题的直接回答。我添加这个答案,这是一个间接答案,因为我认为在这种情况下,它是问题中提到的特定需求的首选途径。
如果您仅使用该xyling
软件包来获取其度量网格代码,我建议您将代码复制到您的文档中。使用xyling
需要使用 进行编译latex+dvips
,这可能不是您想要的。虽然如果您使用其他编译方法(因为您实际上没有使用任何其后记代码),您可能可以安全地忽略它生成的所有警告,但使用您需要的代码并避免所有虚假警告会更简单。
\documentclass[a4paper,12pt]{article}
% Metrical grid code from xyling
\RequirePackage{ifthen}
\newcounter{PXcnt}
\newcommand{\PX}[2][1]{%
\shortstack[c]{%
\whiledo{\value{PXcnt}<#1}
{\stepcounter{PXcnt}$\times$\\}#2\strut%
}\setcounter{PXcnt}{0}}
\newcommand{\PXl}[2][1]{%
\shortstack[l]{%
\whiledo{\value{PXcnt}<#1}
{\stepcounter{PXcnt}$\times$\\}#2\strut%
}\setcounter{PXcnt}{0}}
\newcommand{\PXr}[2][1]{%
\shortstack[r]{%
\whiledo{\value{PXcnt}<#1}
{\stepcounter{PXcnt}$\times$\\}#2\strut%
}\setcounter{PXcnt}{0}}
% Syntax: \PX[number of grid marks]{expression}
% An example:
% \PX[2]{Fa}rah \PX{Faw}cett \PX[3]{Ma}jors
\usepackage{gb4e}
\begin{document}
Dragons
\PX[2]{Fa}rah \PX{Faw}cett \PX[3]{Ma}jors
\end{document}
答案2
该gb4e
包使^
和_
字符处于活动状态,以便允许在数学模式之外使用下标和上标(即在语言示例中)。当其他包尝试使用这些字符的正常含义时,这会导致很多问题,例如xyling
尝试设置 的类别代码^^M
。 已确认这一点gb4e
,并且有一个选项可以关闭此行为,称为\noautomath
:
\documentclass[a4paper,12pt]{article}
\usepackage{gb4e}
\noautomath
\usepackage{xyling}
\begin{document}
Dragons
\end{document}
如果稍后确实需要下标和上标,则可以使用 重新启用该行为\automath
。