答案1
您可以使用tikz-cd
。
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\[\begin{tikzcd}[column sep=-3em,every arrow/.append style={<->}]
& \begin{tabular}{@{}c@{}}
topos (or topological space\\
or semi-simplical complex)\\
\textit{modulo} $n$-homotopy
\end{tabular}
\arrow[dl]\arrow[dr]&\\
\begin{tabular}{@{}l@{}}
$n$-groupoids\\
(up to $n$-equivalence)
\end{tabular}
\arrow[rr]&
& \begin{tabular}{@{}l@{}}
``special'' $n$-categories\\
(up to $n$-equivalence)
\end{tabular}\\
\end{tikzcd}
\]
\end{document}
答案2
感谢@David Carlisle 提供旧打字机字体(使用 LaTeX 模拟老式打字机书写的文本)。
这里还有另一种选择,始终使用tikz-cd
包裹。
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath,amssymb}
\usepackage{geometry}
\usepackage{tikz-cd}
\usepackage{luaotfload}
\font\cmuntt = cmuntt at 12pt \cmuntt
\edef\cmunttid{\fontid\cmuntt}
\expandafter\let\expandafter\%\csname @percentchar\endcsname
\directlua{
local cbl = luatexbase.callback_descriptions('define_font')
% print('\string\n======' .. cbl[1] .. '===\string\n')
original_fontloader = luatexbase.remove_from_callback('define_font', cbl[1])
luatexbase.add_to_callback(
'define_font',
function(name, size, i)
if (name=='cmtt10x') then
% this works in my dev version but for older setups
% make sure cmuntt.otf has been loaded before we mess
% up the font loader.
% f = original_fontloader('cmuntt.otf',size)
f = font.getfont(\cmunttid)
f.name = 'cmtt10x'
f.type = 'virtual'
f.fonts = {{name = 'cmuntt', size = size}}
for j, v in pairs(f.characters) do
local gr = 0.4*math.random()
local gr2 = 0.4*math.random()
v.commands = {
{
'lua',
'r1 = 0.01*math.random(-10, 10)
pdf.print(string.format(
" q \%f \%f \%f \%f 0 0 cm ",
math.cos(r1), - math.sin(r1),
math.sin(r1), math.cos(r1)
))'
},
{'special', 'pdf: ' .. gr2 .. ' g'},
{'push'},
{'right', math.random(-20000,20000)},
{'down', math.random(-20000,20000)},
{'char', j},
{'pop'},
{'lua', 'pdf.print(" Q ")'},
{'down', math.random(-20000,20000)},
{'special', 'pdf: ' .. gr .. ' g'},
{'char', j},
{'special', 'pdf: 0 g'}
}
end % end of for
return f
else
return original_fontloader(name, size, i)
end % end of if
end, % end of function
'define font'
) % end of add_to_callback
}
\def\sqrt#1{^^^^221a\overline{#1}}
\begin{document}
$\relax$
\font\myfont= cmtt10x at 12pt \myfont
\font\myfonts= cmtt10x at 7pt
\let\selectfont\relax
\textfont0=\myfont
\scriptfont0=\myfonts
\scriptscriptfont0=\myfonts
\textfont1=\myfont
\textfont2=\myfont
\textfont3=\myfont
\[\begin{tikzcd}[column sep=-4pt,every arrow/.append style={<->}]
& \begin{array}{c}
topos\, (or\, topological\, space\\
or\, semi$-$simplical\, complex)\\
modulo\, n$-$homotopy
\end{array} & \\
\begin{array}{c}
n$-$\,groupoids\\
(up\, to\, n$-$equivalence)
\end{array} \arrow[rr] \arrow[ru] & & \begin{array}{c}
\mbox{\textquotedbl} special\mbox{\textquotedbl}\, n$-$categories\\
(up\, to\, n$-$equivalence)
\end{array} \arrow[lu]
\end{tikzcd}\]
\end{document}
答案3
使用tikz-cd
包(与其他答案一样)进行节点放置,makecell
进行多行文本包并\ttfamily
在节点中使用字体:
\documentclass[border=3.141592]{standalone}
\usepackage{makecell}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}[column sep=-2em, row sep=5ex,
cells={nodes={
font=\ttfamily\linespread{0.92}\selectfont,
align=center}
},
]
& \makecell{topos (or topological space\\
or semi-simplical complex)\\
\textit{modulo} $n$-homotopy} \ar[dl, <->] \ar[dr, <->]
& \\
\makecell{$n$-groupoids (up\\
to $n$-equivalence)} \ar[rr,<->]
& & \makecell{``special'' $n$-categories\\
(up to $n$-equivalence)}
\\
\end{tikzcd}
\end{document}