如何从 n-Lab 复制交换图?

如何从 n-Lab 复制交换图?

在 ncatlab.org 上,可以找到包含数学形式主义的网页。通过双击(至少使用 Firefox),可以获取通常在 Latex 上运行的代码。
图表除外:复制其相关代码不会在 Latex 中生成图表。

例如,产品的交换图编码为:

 \array{ && Q \\ & \swarrow &\downarrow^{\mathrlap{\exists !}}& \searrow \\ X_1 &\overset{p_1}{\longleftarrow}& X_1 \times X_2 &\overset{p_2}{\longrightarrow}& X_2 } \

这是什么语言?
是否可以调整代码使其在 Latex 上运行?
这样可以节省大量关于范畴论的写作时间,而且所有图表都将以同质方式编写。此外,我个人喜欢它们在网站上的显示方式。

答案1

nLab 用于itex2MML渲染数学。因此,您复制的代码不是直接的 LaTeX:

The case of a binary products it is also denoted by "$(-)\times(-)$":

$$
  \array{
    && Q
    \\
    & \swarrow &\downarrow^{\mathrlap{\exists !}}& \searrow
    \\
    X_1 &\overset{p_1}{\longleftarrow}& X_1 \times X_2 &\overset{p_2}{\longrightarrow}& X_2
  }
  \,.
$$ 

最值得注意的是:\array是一个命令,而不是一个环境。

但是你可以将整个页面转换为 LaTeX(每页末尾都有一个按钮),结果如下:

The case of a binary products it is also denoted by ``$(-)\times(-)$'':

\begin{displaymath}
\itexarray{
    && Q
    \\
    & \swarrow &\downarrow^{\mathrlap{\exists !}}& \searrow
    \\
    X_1 &\overset{p_1}{\longleftarrow}& X_1 \times X_2 &\overset{p_2}{\longrightarrow}& X_2
  }
  \,.
\end{displaymath}

如您所见,\array被翻译为\itexarray。这不会编译,因为您缺少\itexarray和的定义\mathrlap。您可以在生成文件的前言中找到它们。将各部分放在一起将得到:

\documentclass{article}
\usepackage{amsmath}

\newcommand{\itexarray}[1]{\begin{matrix}#1\end{matrix}}

% math-mode versions of \rlap, etc
% from Alexander Perlis, "A complement to \smash, \llap, and lap"
%   http://math.arizona.edu/~aprl/publications/mathclap/
\def\clap#1{\hbox to 0pt{\hss#1\hss}}
\def\mathllap{\mathpalette\mathllapinternal}
\def\mathrlap{\mathpalette\mathrlapinternal}
\def\mathclap{\mathpalette\mathclapinternal}
\def\mathllapinternal#1#2{\llap{$\mathsurround=0pt#1{#2}$}}
\def\mathrlapinternal#1#2{\rlap{$\mathsurround=0pt#1{#2}$}}
\def\mathclapinternal#1#2{\clap{$\mathsurround=0pt#1{#2}$}}

\begin{document}
The case of a binary products it is also denoted by ``$(-)\times(-)$'':

\begin{displaymath}
    \itexarray{
        && Q
        \\
        & \swarrow &\downarrow^{\mathrlap{\exists !}}& \searrow
        \\
        X_1 &\overset{p_1}{\longleftarrow}& X_1 \times X_2 &\overset{p_2}{\longrightarrow}& X_2
    }
    \,.
\end{displaymath}
\end{document}

在此处输入图片描述


总结

您可以下载每个页面的代码并从那里复制 LaTeX(不是 itex)代码(您可能还需要序言中的一些内容):

在此处输入图片描述

答案2

如果我理解你想要什么,那么就可以用 来实现tikz-cd。下面是一段简短的代码:

\documentclass{article}
\usepackage{tikz-cd}

\begin{document} 

\begin{tikzcd}[row sep=4em, column sep=large]
    &\dlar Q\dar[dashed, "\exists!", swap] \drar\\
    X_1 &\lar["\enspace p_1",swap] X_1\times X_2\rar["p_2"] & X_2
\end{tikzcd}

\end{document} 

在此处输入图片描述

答案3

我仅使用简单的命令创建了一个代码(参见矩阵)。很明显,预览与用户@DG'的答案相似。我已经看到了你的评论“这绝对是我所寻找的,谢谢!“并且我一直在寻找另一种替代方案,希望您的项目能够将其编入法典。

\documentclass[a4paper,12pt]{article}
\usepackage{amsmath,amssymb}
\begin{document}
\[\begin{matrix}
 &  & Q &&\\
 & \swarrow  &  \quad \downarrow \exists ! & \searrow & \\
X_1 & \xleftarrow{p_1} & X_1 \times X_2 & \xrightarrow{p_2}& X_2 
\end{matrix} .\]
\end{document}

在此处输入图片描述

相关内容