tikz-cd
输出中缺少交换图 ( ) 的一半。渲染工具为pdflatex
。问题发生在以下情况:
- 该文档类是独立的。
- 该
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}
显然,在 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
,,,...pgfpicture
tikzcd