我正在使用pgfplots
和tikz
打包来制作一些随机函数的 3D 图形,但我的计算机编译 tex 文件需要花费太多时间,所以我想使用 documentclass 在单独的文档中创建每组图形standalone
,然后使用\includegraphic
命令导入它们。问题是,当我这样做时,所有图形都停留在同一行,因此它们不适合页面。以下是我所做的:
\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5}
\begin{document}
\begin{tikzpicture}
\begin{axis}[view={-40}{30}, baseline,
zlabel=$Q^H_i$,
xlabel=$P_i^H$, ylabel=$P_i^C$
]
\addplot3[surf,
domain=4.5:18.5,
domain y=9.5:25.5
]{exp(1)*x^(-.34)*y^(1.46)};
\end{axis}
\end{tikzpicture}%
%---------------------------------
\hskip 3pt
%---------------------------------
\begin{tikzpicture}%
\begin{axis}[view={130}{30}, baseline,
zlabel=$Q^H_i$,
xlabel=$P_i^H$, ylabel=$P_i^C$
]
\addplot3[surf,
domain=4.5:18.5,
domain y=9.5:25.5
]{exp(1)*x^(-.34)*y^(1.46)};
\end{axis}
\end{tikzpicture}%
%---------------------------------
\hskip 3pt
%---------------------------------
\begin{tikzpicture}%
\begin{axis}[view={230}{30}, baseline,
zlabel=$Q^H_i$,
xlabel=$P_i^H$, ylabel=$P_i^C$
]
\addplot3[surf,
domain=4.5:18.5,
domain y=9.5:25.5
]{exp(1)*x^(-.34)*y^(1.46)};
\end{axis}
\end{tikzpicture}
\end{document}
使用最后一个代码我得到了这个:
但是我想要一些类似于我在主 tex 文件中编译相同代码时得到的东西(看起来 LaTeX 会自动进行对齐),但正如我之前所说,这需要花费太多时间,最好先完成图表,然后再导入它们(请忽略最后一张图中的点):
答案1
如果将它们分成单独的standalone
文件,则可以让 LaTeX 进行对齐:
笔记
- 您显示的输出是不是如果你用最后一张图片中的
standalone
类替换它,你得到的输出是article
不是居中。 - 输出确实
not
符合标准边距。您可以看到这是您取消注释的use package{show frame}
。 如果您使用以下内容,您将获得每条位于其自己行上的图:
\noindent\sloppy \includegraphics{GraphA} \includegraphics{GraphB} \includegraphics{GraphC}
包裹
filecontents
用于设置要为此测试用例读取的文件。实际用例中不需要它。
或者,您可以使用介于两者之间的类varwidth
的选项来实现:standalone
\par
代码:单独standalone
文件
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5}
\usepackage{filecontents}
\begin{filecontents*}{GraphA.tex}
\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5}
\begin{document}
\begin{tikzpicture}
\begin{axis}[view={-40}{30}, baseline,
zlabel=$Q^H_i$,
xlabel=$P_i^H$, ylabel=$P_i^C$
]
\addplot3[surf,
domain=4.5:18.5,
domain y=9.5:25.5
]{exp(1)*x^(-.34)*y^(1.46)};
\end{axis}
\end{tikzpicture}%
\end{document}
\end{filecontents*}
\begin{filecontents*}{GraphB.tex}
\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5}
\begin{document}
\begin{tikzpicture}%
\begin{axis}[view={130}{30}, baseline,
zlabel=$Q^H_i$,
xlabel=$P_i^H$, ylabel=$P_i^C$
]
\addplot3[surf,
domain=4.5:18.5,
domain y=9.5:25.5
]{exp(1)*x^(-.34)*y^(1.46)};
\end{axis}
\end{tikzpicture}%
\end{document}
\end{filecontents*}
\begin{filecontents*}{GraphC.tex}
\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5}
\begin{document}
\begin{tikzpicture}%
\begin{axis}[view={230}{30}, baseline,
zlabel=$Q^H_i$,
xlabel=$P_i^H$, ylabel=$P_i^C$
]
\addplot3[surf,
domain=4.5:18.5,
domain y=9.5:25.5
]{exp(1)*x^(-.34)*y^(1.46)};
\end{axis}
\end{tikzpicture}%
\end{document}
\end{filecontents*}
%\usepackage{showframe}
\begin{document}
\noindent
\includegraphics{GraphA}
\hskip 3pt
\includegraphics{GraphB}
\hskip 3pt
\includegraphics{GraphC}%
\end{document}
代码:[varwidth]
类选项
\documentclass[varwidth]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5}
\begin{document}
\begin{tikzpicture}
\begin{axis}[view={-40}{30}, baseline,
zlabel=$Q^H_i$,
xlabel=$P_i^H$, ylabel=$P_i^C$
]
\addplot3[surf,
domain=4.5:18.5,
domain y=9.5:25.5
]{exp(1)*x^(-.34)*y^(1.46)};
\end{axis}
\end{tikzpicture}%
\par
\begin{tikzpicture}%
\begin{axis}[view={130}{30}, baseline,
zlabel=$Q^H_i$,
xlabel=$P_i^H$, ylabel=$P_i^C$
]
\addplot3[surf,
domain=4.5:18.5,
domain y=9.5:25.5
]{exp(1)*x^(-.34)*y^(1.46)};
\end{axis}
\end{tikzpicture}%
\par
\begin{tikzpicture}%
\begin{axis}[view={230}{30}, baseline,
zlabel=$Q^H_i$,
xlabel=$P_i^H$, ylabel=$P_i^C$
]
\addplot3[surf,
domain=4.5:18.5,
domain y=9.5:25.5
]{exp(1)*x^(-.34)*y^(1.46)};
\end{axis}
\end{tikzpicture}
\end{document}