2D 和 3D Tikz 图片并排显示

2D 和 3D Tikz 图片并排显示

以前,我遇到过 3D Tikz 图片一侧添加了大量空白的问题,使用 解决了该问题\documentclass[varwidth,border=5pt]{standalone}

但是,现在我试图并排绘制 2D 和 3D 图片。subcaption由于期刊图形要求,我无法将这两张图片单独包含在软件包的最终文档中。以前,我会生成两个单独的图片 pdf,然后将它们与另一个 .tex 文件合并为一个 pdf(用于插入最终文档)。但这似乎是一种复杂的做事方式。

这是我的 MWE:

\documentclass[varwidth,border=5pt]{standalone}
\usepackage{tikz}
\usepackage{tikz-3dplot}

\usetikzlibrary{arrows}
\usetikzlibrary{3d}
\tikzset{>=latex}

\begin{document}

\begin{tikzpicture}

\draw[-] (0,0)--(3,0)--(3,2)--(0,2)--cycle;
\draw[-] (0,2)--(3,2)--(3,4)--(0,4)--cycle;
\draw[-] (0,4)--(3,4)--(3,6)--(0,6)--cycle;
\node at (-0.4,5.7) {{\large a}};

\end{tikzpicture}
\tdplotsetmaincoords{90}{90}
\tdplotsetrotatedcoords{0}{20}{70}
\begin{tikzpicture}[tdplot_rotated_coords]

\draw[->, thick] (0,0,0) --++ (20:3);
\draw[->] (0,0,0) --++ (60:2);

\draw[dashed] (0,0,-2) circle(2);
\draw[dashed] (0,0,0) circle(2);
\draw[dashed] (0,0,2) circle(2);

\node[left] at (0,0,0) {{ $i$}};
\node[right] at (2.2,0.15,-0.05) {{\large {\bf M}}};
\node[below] at (0.5,0.5,0) {{\large $\phi_i$}};

\draw[->] (0,0,-2) -- (0,0,3.5);
\node[above] at (0,0,3.5) {{\large $z$}};

\node at (-2,0,3.5) {{\large b}};

\end{tikzpicture}

\end{document}

如果按原样编译,则两个 tikz 图片会一个在另一个上方对齐。我认为这是因为参数varwidth。如果将其取出,图片将并排显示,但会出现与 3D 图片相关的空白,因此两者之间会有很大间隙。

有人知道解决这个问题的最佳方法吗?

谢谢。

答案1

第二版本:

因此,问题似乎是在一个 pdf 文件中包括不同的图形。有几种解决方案,但当您使用standalone类时,TiKZ您只需将tikz作为选项包含到原始示例 ( \documentclass[tikz,varwidth,border=5pt]{standalone}) 中,即可获得包含页数为 的 pdf 文件tikzpictures。您可以使用 在文本中包含图形\includegraphics[page=...]{...}

\documentclass{article}
\usepackage{subcaption}
\usepackage{graphicx}
\usepackage{lipsum}

\begin{document}

\begin{figure}
\begin{subfigure}{.5\linewidth}
\centering
\includegraphics[page=1]{sensetitol-3}
\subcaption{Subfigure}
\end{subfigure}
\begin{subfigure}{.5\linewidth}
\centering
\includegraphics[page=2]{sensetitol-3}
\subcaption{Subfigure}
\end{subfigure}
\end{figure}

\lipsum[2]
\end{document}

在此处输入图片描述

原始答案:

我不明白您对 journalgraphics 要求有何问题,但如果您想将两个图形并排放置,那么varwidth一个可能的解决方案就是将两个图形绘制在同一个图形内,tikzpicture并将其中一个图形绘制在正确放置的图形内scope

注意:shift这些值都是通过反复试验找到的。

\documentclass[varwidth,border=5pt]{standalone}
\usepackage{tikz}
\usepackage{tikz-3dplot}

\usetikzlibrary{arrows}
\usetikzlibrary{3d}
\tikzset{>=latex}

\begin{document}

\tdplotsetmaincoords{90}{90}
\tdplotsetrotatedcoords{0}{20}{70}
\begin{tikzpicture}

\draw[-] (0,0)--(3,0)--(3,2)--(0,2)--cycle;
\draw[-] (0,2)--(3,2)--(3,4)--(0,4)--cycle;
\draw[-] (0,4)--(3,4)--(3,6)--(0,6)--cycle;
\node at (-0.4,5.7) {{\large a}};
\begin{scope}[tdplot_rotated_coords, xshift=6cm, yshift=2.5cm]
\draw[->, thick] (0,0,0) --++ (20:3);
\draw[->] (0,0,0) --++ (60:2);

\draw[dashed] (0,0,-2) circle(2);
\draw[dashed] (0,0,0) circle(2);
\draw[dashed] (0,0,2) circle(2);

\node[left] at (0,0,0) {{ $i$}};
\node[right] at (2.2,0.15,-0.05) {{\large {\bf M}}};
\node[below] at (0.5,0.5,0) {{\large $\phi_i$}};

\draw[->] (0,0,-2) -- (0,0,3.5);
\node[above] at (0,0,3.5) {{\large $z$}};

\node at (-2,0,3.5) {{\large b}};
\end{scope}

\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

你可以将图片放入两个独立的varwidth环境中来实现这一目的:

\documentclass[varwidth,border=5pt]{standalone}
\usepackage{tikz}
\usepackage{tikz-3dplot}

\usetikzlibrary{arrows}
\usetikzlibrary{3d}
\tikzset{>=latex}

\begin{document}

\begin{varwidth}{\linewidth}
\begin{tikzpicture}

\draw[-] (0,0)--(3,0)--(3,2)--(0,2)--cycle;
\draw[-] (0,2)--(3,2)--(3,4)--(0,4)--cycle;
\draw[-] (0,4)--(3,4)--(3,6)--(0,6)--cycle;
\node at (-0.4,5.7) {{\large a}};

\end{tikzpicture}
\end{varwidth}
\begin{varwidth}{\linewidth}
\tdplotsetmaincoords{90}{90}
\tdplotsetrotatedcoords{0}{20}{70}
\begin{tikzpicture}[tdplot_rotated_coords]

\draw[->, thick] (0,0,0) --++ (20:3);
\draw[->] (0,0,0) --++ (60:2);

\draw[dashed] (0,0,-2) circle(2);
\draw[dashed] (0,0,0) circle(2);
\draw[dashed] (0,0,2) circle(2);

\node[left] at (0,0,0) {{ $i$}};
\node[right] at (2.2,0.15,-0.05) {{\large {\bf M}}};
\node[below] at (0.5,0.5,0) {{\large $\phi_i$}};

\draw[->] (0,0,-2) -- (0,0,3.5);
\node[above] at (0,0,3.5) {{\large $z$}};

\node at (-2,0,3.5) {{\large b}};

\end{tikzpicture}
\end{varwidth}

\end{document}

在此处输入图片描述

相关内容