如何使用 pgfplots 包强制 LaTeX 画断线?

如何使用 pgfplots 包强制 LaTeX 画断线?

我正在使用pgfplotstikz打包来制作一些随机函数的 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}

相关内容