# how to draw this diagram so that it looks better?

I'm a beginner in using LaTeX and my problem is that the dots of the following diagram are too close to the boundary (the dots should have the same distance to the boundary than the text), and the terms in the lower row of this diagram look much bigger than the terms in the upper row... i.e. the whole diagram looks ugly. I used tikzcd for this, here is the code:

\documentclass[pdftex,12pt,a4paper,twoside]{article}

\usetikzlibrary{arrows,chains,matrix,positioning,scopes,snakes,cd}

\begin{document}

$\adjustbox{scale=0.9,center}{ \begin{tikzcd}[font=\small, row sep=1.2em] \cdots \arrow{r} & \overset{\large{K_*(A)}}{\underset{\large{K_*(B)}}{\otimes}}\arrow{r} \arrow{d} {\alpha(A,B)}[swap]{\cong} & \overset{\Large{K_*(A)}}{\underset{\Large{K_*(B)}}{\otimes}} \arrow{r} \arrow{d} {\alpha(A,B)}[swap]{\cong}& \overset{\large{K_*(A)}}{\underset{\large{K_*(B\rtimes_\varphi\mathbb{Z})}}{\otimes}} \arrow{r} \arrow{d}{\alpha(A,B\rtimes_\varphi\mathbb{Z})} & \overset{\Large{K_{*}(A)}}{\underset{\Large K_{*-1}(B)}{\otimes}} \arrow{r}\arrow{d}{\alpha(A,B)}[swap]{\cong} & \cdots \\ \cdots \arrow{r} & K_*(A\otimes B) \arrow{r} & K_*(A\otimes B) \arrow{r} & \tiny{K_*(A\otimes (B\rtimes_\varphi\mathbb{Z}))} \arrow{r} & \tiny{K_{*-1}(A\otimes B)} \arrow{r} & \cdots \end{tikzcd} }$
\end{document}


If I scale everything down, it becomes unreadable, so that it isn't a solution. One idea is to shorten just the outter arrows so that the dots have the same distance to the boundary than the whole text, but I don't know how it works. Can you help me to draw it in a 'more efficient' way, so that it looks better than now? Will drawing it in tikzpicture be a solution?

Thank you.

• welcome to tex.sx. the reason the terms in the lower row of the diagram look larger is because they are larger, or rather, the terms in the upper row are smaller than they would ordinarily be because that is how \overset works. you can try applying {\scriptstyle ...} to the terms in the lower row, to match. (not tested) if that works as intended, the result won't be the "right" size, but it should help make that line a little shorter. – barbara beeton Aug 20 '17 at 21:20
• thank you, barbara. It helps and it works to change both, so that the whole diagram is smaller, readable and the lower row is not that big anymore! – user141524 Aug 20 '17 at 21:44
• okay, i'll post an answer tomorrow, when i'm at a computer with a tex system installed, and can add a visual. – barbara beeton Aug 20 '17 at 23:56

The text size commands in math mode do absolutely nothing. Also, note that \large, \Large, &c. are not commands with an argument, but directives, hence they don't require braces. Another remark, the snakes library is obsolete and should be replaced with decorations. Also, the pdftex option is useless. Finally I simplified the code of the first row with the \Vectorstack command, from the stackengine package, instead of the nested \underset/\overset.

I suggest you nest the diagram inside a medsize environment from nccmath, which makes formulae about 80 % of \displaystyle, and set column sep to a convenient value:

\documentclass[12pt,a4paper,twoside]{article}

\usepackage{amssymb, mathtools, nccmath}
\usepackage{tikz-cd}
\usepackage[usestackEOL]{stackengine}
\usetikzlibrary{arrows,chains,matrix,positioning,scopes,decorations,cd}

\usepackage[showframe]{geometry}

\begin{document}

$\begin{medsize} \begin{tikzcd}[ row sep=1.2em, column sep = 2.2em] \hspace{-0.25em} \cdots \arrow{r} & \Vectorstack{K_*(A)\\ \otimes \\ K_*(B)}\arrow{r} \arrow{d} {\alpha (A,B)}[swap]{ \cong } & \Vectorstack{K_*(A)\\ \otimes \\ K_*(B)}\arrow{r} \arrow{d} {\alpha (A,B)}[swap]{ \cong }& \Vectorstack{K_*(A) \\ \otimes \\ K_*(B\rtimes_\varphi \mathbb{Z})} \arrow{r} \arrow{d}{\alpha (A,B\rtimes_\varphi \mathbb{Z})} & \Vectorstack{K_{*}(A) \\ \otimes \\ K_{*-1}(B)} \arrow{r}\arrow{d}{\alpha (A,B)}[swap]{ \cong } & \cdots \\ \hspace{-0.25em} \cdots \arrow{r} & K_*(A \otimes B) \arrow{r} & K_*(A \otimes B) \arrow{r} & K_*(A \otimes (B\rtimes_\varphi \mathbb{Z})) \arrow{r} & K_{*-1}(A \otimes B) \arrow{r} & \cdots \end{tikzcd} \end{medsize}$

\end{document}


here is the example recoded using \scriptstyle to re-size the expressions in the last row as suggested in my comment. only the four \*style sizing commands are recognized in math mode; those sizes are display, text, script, and scriptscript.

it was possible to increase the scaling from 0.9 to 0.95 when comparing the result to the line width shown by the "xxx" indicating the margin settings.

all other attempts at specifying font size have been removed.

\documentclass[12pt,a4paper,twoside]{article}

\usepackage{mathtools}
\usepackage{amssymb}
$\adjustbox{scale=0.95,center}{ \begin{tikzcd}[row sep=1.2em] \cdots \arrow{r} & \overset{K_*(A)}{\underset{K_*(B)}{\otimes}}\arrow{r} \arrow{d} {\alpha(A,B)}[swap]{\cong} & \overset{K_*(A)}{\underset{K_*(B)}{\otimes}} \arrow{r} \arrow{d} {\alpha(A,B)}[swap]{\cong}& \overset{K_*(A)}{\underset{K_*(B\rtimes_\varphi\mathbb{Z})}{\otimes}} \arrow{r} \arrow{d}{\alpha(A,B\rtimes_\varphi\mathbb{Z})} & \overset{K_{*}(A)}{\underset{K_{*-1}(B)}{\otimes}} \arrow{r}\arrow{d}{\alpha(A,B)}[swap]{\cong} & \cdots \\ \cdots \arrow{r} & \scriptstyle K_*(A\otimes B) \arrow{r} & \scriptstyle K_*(A\otimes B) \arrow{r} & {\scriptstyle K_*(A\otimes (B\rtimes_\varphi\mathbb{Z}))} \arrow{r} & {\scriptstyle K_{*-1}(A\otimes B)} \arrow{r} & \cdots \end{tikzcd} }$