我正在写博士论文,我刚刚发现了matlab2tikz
MATLAB 的脚本,所以我想转换我的图表并将它们放入文档中pgfplots
。我的论文已经很大了,编译需要很长时间,所以我想利用包standalone
在外部编译图表,以加快进程。matlab2tikz
输出一个.tex
或.tikz
文件,其中包含必要的代码,例如:
\begin{tikzpicture}
\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt
\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1]
\draw (23,42) .. controls (23,28.19) and (34.19,17) .. (48,17) .. controls (61.81,17) and (73,28.19) .. (73,42) .. controls (73,55.81) and (61.81,67) .. (48,67) .. controls (34.19,67) and (23,55.81) .. (23,42) -- cycle ;
\end{tikzpicture}
\end{tikzpicture}
在这种情况下,我将文件保存为.tex
。然后,按照软件包手册的说明standalone
,我修改了该文件,如下所示
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt
\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1]
\draw (23,42) .. controls (23,28.19) and (34.19,17) .. (48,17) .. controls (61.81,17) and (73,28.19) .. (73,42) .. controls (73,55.81) and (61.81,67) .. (48,67) .. controls (34.19,67) and (23,55.81) .. (23,42) -- cycle ;
\end{tikzpicture}
\end{document}
并将其另存为test.tex
。当我尝试编译文档时,我是否有\includestandalone[width=\textwidth]{test}
或\input{test}
我得到Can be used only in preamble
错误。我确信这与不在主文档文件夹中的事实有关test.tex
,而是在与所有图像相同的文件夹中。因此,我的问题是:序言中应该包含什么来指向包含带有 TikZ 图的文件的文件夹?下面是我的序言,其中包含一个最小的工作示例:
\documentclass[11pt,english,a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{mathpazo}
\usepackage{setspace}
\usepackage[acronym,nopostdot,style=index,nogroupskip,nomain]{glossaries-extra}
\usepackage{epsfig}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{ragged2e}
\usepackage{graphicx}
\usepackage{comment,array,url}
\usepackage[font={small,it},center]{caption}
\usepackage[list=true]{subcaption}
\usepackage{multirow}
\usepackage{geometry}
\usepackage{framed}
\usepackage[Conny]{fncychap}
\usepackage[toc,page]{appendix}
\usepackage{bibentry}
\nobibliography*
\usepackage{gensymb}
\usepackage{standalone}
\usepackage{pgfplots}
\usepackage[hidelinks]{hyperref}
\makeglossaries
\setabbreviationstyle[acronym]{long-short}
\loadglsentries{D:/Dropbox/NTU/Research/Resources/03_glossary.tex}
\graphicspath{{D:/Dropbox/NTU/Research/Resources/02_All_images/}{}}
\begin{document}
\begin{figure}
\includestandalone[width=\textwidth]{test}
\caption{Caption}
\end{figure}
\end{document}
答案1
我使用的方法略有不同。我保存全部TikZ 文件仅带有\begin{tikzpicture}
和\end
,然后使用 插入它们\input{fig_TikZ_name}
。因此,主文件的前言中必须有\usepackage
和tikz
的pgfplots
。
Can be used only in preamble
当\usepackage
位于 内时,会出现该消息\begin{document}
。要编辑这些 TikZ 文件,我使用 TikzEdt 或仅插入我正在编辑的 TikZ 文件的最小 .tex。
该包\adjustbox
只是缩放图片的一个选项,不是最好的,也不是万能的,只是在许多场景中有用。
可能仍然可以使用 的方法standalone
,但我不知道如何操作或是否可行。很抱歉。
接下来是 MWE。
fig_TikZ_name.tex 文件:
\begin{tikzpicture}
\draw[blue, ->] (0,0) -- (10,10);
\end{tikzpicture}
主文件:
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots} % Can be used only in preamble. \usepackage
\usepackage{adjustbox}
\begin{document}
\begin{figure}[h]
\centering
\input{figTikZname}
\caption{text}
\end{figure}
\begin{figure}[h]
{\adjustbox{width = 0.9\linewidth}{\input{figTikZname}}}
\caption{adjustbox}
\end{figure}
\input{figTikZname}
\end{document}
答案2
修改生成的代码时要小心。 在您的例子中,您有两个\begin{tikzpicture}
但只有一个\end{tikzpicture}
。
正确的test.tex
文件应该是:
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt
\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1]
\draw (23,42) .. controls (23,28.19) and (34.19,17) .. (48,17) .. controls (61.81,17) and (73,28.19) .. (73,42) .. controls (73,55.81) and (61.81,67) .. (48,67) .. controls (34.19,67) and (23,55.81) .. (23,42) -- cycle;
\end{tikzpicture}
\end{document}
我还从你的 MWE 中删除了不必要的东西:
\documentclass[11pt,english,a4paper]{report}
\usepackage{graphicx}
\usepackage{standalone}
\usepackage{pgfplots}
\usepackage[hidelinks]{hyperref}
\begin{document}
\begin{figure}
\includestandalone[width=\textwidth]{test}
\caption{Caption}
\end{figure}
\end{document}
编译时没有错误。