tikzcd 图表有一半缺失

tikzcd 图表有一半缺失

tikz-cd输出中缺少交换图 ( ) 的一半。渲染工具为pdflatex。问题发生在以下情况:

  1. 该文档类是独立的。
  2. tikz-cd图嵌入在 tikzpicture 中。

例子:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{cd}
\begin{document}
  \begin{tikzpicture}
    \begin{tikzcd}
      A \arrow{r}{a} \arrow{d}{b} & B \arrow{d}{c} \\
      C \arrow{r}{d} & D
    \end{tikzcd}
  \end{tikzpicture}
\end{document}

缺失一半的 tikzcd 图

显然,在 tikzpicture 环境中嵌入 tikzcd 图表会引入独立文档类无法解决的意外缩进。

这对我们来说是个问题,因为我们在 vBulletin 数学论坛中使用设置来支持 tikzpictures。它识别\begin{tikzpicture}...\end{tikzpicture}为定义图片的标记,并将其替换为 .svgz 图片。作为数学论坛,我们还希望支持来自 tikzlibrary 的交换图cd。因为这显然需要一个不适合结构的顶层 tikzcd 环境。

是什么导致了意外的缩进?更重要的是,我们如何确保图表正确呈现?也就是说,我们如何在 tikzpicture 环境中嵌入交换图的同时摆脱意外的缩进?

答案1

tikzcd我认为在内部使用不是一个好主意,tikzpicture因为绘制“环境”不符合 tikz 的精神。

但如果你真的需要它,你可以scopecd像这样定义一个新环境

\documentclass[tikz,border=7pt]{standalone}
\usetikzlibrary{cd}
% define new environment `scopcd`
\def\scopecd{\let\tikzpicture\scope\let\endtikzpicture\endscope\tikzcd}
\let\endscopecd\endtikzcd

\begin{document}
  \begin{tikzpicture}
    \fill[blue!14] circle(2);
    \begin{scopecd}
      K \arrow{r}{a} \arrow{d}{b} & B \arrow{d}{c} \\
      C \arrow{r}{d} & D
    \end{scopecd}
  \end{tikzpicture}
\end{document}

在此处输入图片描述

笔记 :对我来说,在论坛中拥有可以生成图片的不同环境更为自然;tikzpicture,,,...pgfpicturetikzcd

答案2

环境tikzcd已经是一个了tikzpicture,你不必嵌套它们。

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{cd}
\begin{document}
    \begin{tikzcd}
      A \arrow{r}{a} \arrow{d}{b} & B \arrow{d}{c} \\
      C \arrow{r}{d} & D
    \end{tikzcd}
\end{document}

在此处输入图片描述

相关内容