与荷兰 Babel 和 tikzcd 发生冲突

与荷兰 Babel 和 tikzcd 发生冲突

我曾经尝试使用类似的东西制作交换图\arrow[r, "A"],但一直出现奇怪的错误。我最终发现,如果我从中删除“dutch”,就不会出现错误\usepackage[dutch, english]。或者,我可以通过使用封闭 tikzcd 环境来使其工作\shorthandoff{"}...\shorthandon{"}。显然,“dutch”中的某些内容与 中的“ ”的使用相冲突\arrow[r, "A"]。两个问题。

  • 这里到底有什么冲突?babel 中的 dutch 选项中的“预定义”或其他内容不喜欢在箭头命令中使用“”是什么意思?

  • 有没有更好的解决方案?我能想到的唯一办法就是重新定义 tikzcd 环境,如下所示

\shorthandoff{"}\begin{tikzcd}...\end{tikzcd}\shorthandon{"}

这实际上只是用大毯子包裹了早先不雅的解决方案,所以我并不喜欢它。

如果没有将 tikzcd 包装在 align 环境中(并且没有充分的理由这样做),则加载 tikzlibrary{babel} 可以解决问题。不过,我仍然很好奇 align 在这里到底搞砸了什么。

毕竟,我是一名 MWE。我做过类似的事情。

\documentclass{report}

\usepackage[a4paper]{geometry}

\usepackage{libertine}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[dutch, english]{babel}

\usepackage{mathtools}

\usepackage{tikz}
    \usetikzlibrary{cd}
    \usetikzlibrary{babel}

\begin{document}

\begin{align*}
    \begin{tikzcd}[ampersand replacement = \&]
        A \arrow[r, "A"] \& B
    \end{tikzcd}
\end{align*}

\end{document}

答案1

首先说一些一般性的话。我们邀请用一个最小的代码示例来提出这个问题,原因如下:

  • 问题通常不会提示任何有关实际错误信息的提示;
  • 准备 MWE 有时有助于发现错误或找到解决方法;
  • 对任何想提供帮助的人来说,这都是善意的。

更具体地说,对于你的帖子,你可能已经错误来源。一个是由于对荷兰语babel进行"激活,另一个是由于tikzcdalign环境中使用。

第一个问题的解决方案:\usetikzlibrary{babel}

第二个问题的解决方案:在 的主体中使用ampersand replacement=\&选项 和来标记列分隔符。但也可以使用 和。\&tikzcd\shorthandoff{"}\shorthandon{"}

这是为什么呢?因为align(和其他amsmath显示环境) 将内容作为宏的参数吸收,因此tikzcd无法像通常那样对 执行操作&。它也无法对 执行操作"

如果您通常习惯于在单个方程(或图表)中使用align或,请改变您的习惯并在这些情况下使用或。它在语义上更合理,更高效,并且避免了一些技巧。此外,间距更好。我想您可以在下面发现间距的差异,这在使用 时过多了。align*equationequation*align*

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage[dutch, english]{babel}

\usepackage{mathtools}

\usepackage{tikz-cd}
\usetikzlibrary{babel}

\usepackage{lipsum} % for mock text

\begin{document}

\lipsum[2][1-2]
\begin{equation*}
    \begin{tikzcd}
        A \arrow[r, "A"] & B
    \end{tikzcd}
\end{equation*}
\lipsum[2][1-2]
\shorthandoff{"}\begin{align*}
    \begin{tikzcd}[ampersand replacement = \&]
        A \arrow[r, "A"] \& B
    \end{tikzcd}
\end{align*}\shorthandon{"}%
\lipsum[3]

\end{document}

在此处输入图片描述

答案2

我的回答与标签无关,我希望我理解了你的要求。我使用了xy没有硬尖箭头的包

相关内容