同一图中两个 tikz png 从 matlab 到 tex 出现分组错误 255

同一图中两个 tikz png 从 matlab 到 tex 出现分组错误 255

我尝试使用两个单独的 tikz 图形在 LaTeX 中为我的硕士论文创建一个图形。使用以下命令从 MatLAB 导出 tikz 图形:

matlab2tikz('tikz/figure.tikz', 'height', '\figureheight', 'width', '\figurewidth');

结果是一个指向相应 .png 文件的 tikz 文件,因为这不是绘图,而是图像。这似乎是导致问题的原因。

也就是说,使用 tikz 方法的目标是维护 LaTeX 文档中用于轴标签等的字体。

现在,这些数字实际上很容易相加,因为两个独立的数字如下:

\begin{figure}[h]
    \centering
    \setlength\figureheight{6cm}
    \setlength\figurewidth{7cm}
    \input{path/to/tikzfile/figure1.tikz}
    \caption{loremipsum1}
    \label{fig:some:figure}
\end{figure}

\begin{figure}[h]
    \centering
    \setlength\figureheight{6cm}
    \setlength\figurewidth{7cm}
    \input{path/to/tikzfile/figure2.tikz}
    \caption{loremipsum2}
    \label{fig:some:other:figure}
\end{figure}

但是,无论我怎么尝试,似乎都无法将它们并排显示?我尝试了网上找到的很多建议,但大多数情况下我都会得到“TeX 容量超出,抱歉 [grouping levels=255]。 \end{axis}”,它指向第一个添加的 tikz 文件。

我例如尝试过这个:

\begin{figure}[h]
    \begin{tikzpicture}
        \setlength\figureheight{5cm}
        \setlength\figurewidth{.4\textwidth}
        \input{path/to/tikzfile/figure1.tikz}
        \subcaption{loremipsum subfigure 1}
    \end{tikzpicture}
    \begin{tikzpicture}
        \setlength\figureheight{5cm}
        \setlength\figurewidth{.4\textwidth}
        \input{path/to/tikzfile/figure2.tikz}
        \subcaption{loremipsum subfigure 2}
    \end{tikzpicture}
\caption{loremipsum for total figure}
\end{figure}

我已经尝试将每个 tikzpicture 标签包装在小页面中,如下所示\begin{minipage}[b]{.5\linewidth} ... \end{minipage}:)。

如果 tikz 文件是绘图,则 minipage 方法非常有效,我已成功将两个绘图并排放置,并将四个绘图以 2x2 格式放入文档中。但如果像本例一样,tikz 文件指向 .png,这似乎无法实现?

有人能帮助我理解我做错了什么,或者让我知道我是否完全迷失了方向?

我的序言包含(我添加了所有 usepackage 语句以防我“做了蠢事”和/或在这里得到一些不兼容的东西):

\documentclass[12pt, a4paper]{book}
\usepackage[utf8]{inputenc} % File encoding, utf8 includes æ ø å
\usepackage[T1]{fontenc} % Use EC fonts
\usepackage{ae} % Fonts for pdf-files
\usepackage{textcomp} % Text-companion-symbols (e.g. \texteuro)
\usepackage[danish,finnish,english]{babel}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{graphicx}
\usepackage[font=small]{caption}
\usepackage{subcaption}
\usepackage[table]{xcolor}
\usepackage{pdfpages}
\usepackage{fancyhdr}
\usepackage{layout}
\usepackage{listings}
\usepackage{color}
\usepackage[square,super,numbers,sort&compress]{natbib}
\usepackage{algpseudocode}
\usepackage{algorithmicx}
\usepackage{algorithm}
\usepackage{amsmath}
\usepackage{bm}
\usepackage{amssymb}
\usepackage{pifont}
\usepackage{xfrac}
\usepackage{gensymb}
\usepackage{ctable}
\usepackage{array}
\usepackage{tabularx}
\usepackage{tabulary}
\usepackage{multirow}
\usepackage{pgfplots} % Matlab plots with LaTeX (http://www.howtotex.com/packages/beautiful-matlab-figures-in-latex/)
\usepackage{tikz}
\usepackage{tkz-tab}
\usepackage{latexsym}
\newlength\figureheight
\newlength\figurewidth
\pgfplotsset{compat=1.3} % Adjusts distance between y-label and y-tick in tikz-figures
\usetikzlibrary{plotmarks}
\usepackage{rotating}
\usepackage{siunitx}
\usepackage{nth}
\usepackage{lipsum}
\usepackage[titletoc, toc]{appendix}
\usepackage[hyperindex=false,pdftitle={HybridPolarizationSAR},pdfauthor={AuthorName}]{hyperref}
\usepackage{longtable}
\usepackage[numbered, framed, final]{mcode}
\usepackage[
    nonumberlist,   % Do not show page numbers for where listing is found
    acronym,        % Generate acronym listing
    sort=def,   % Sorting. Options are standard, def and use
    toc]            % Show listing as entries in table of contents
    {glossaries}

tikz 文件看起来像这样(除了\addplot一些点元最小值/最大值、标题等之外都相等):

% This file was created by matlab2tikz
%
%The latest updates can be retrieved from
% 
http://www.mathworks.com/matlabcentral/fileexchange/22022-matlab2tikz-matlab2tikz
%where you can also make suggestions and rate matlab2tikz.
%
\begin{tikzpicture}
\begin{axis}[%
width=0.799\figurewidth,
height=\figureheight,
at={(0\figurewidth,0\figureheight)},
scale only axis,
point meta min=-44.9058788364739,
point meta max=42.6233629409421,
axis on top,
separate axis lines,
every outer x axis line/.append style={black},
every x tick label/.append style={font=\color{black}},
xmin=0.5,
xmax=3601.5,
xlabel={Range},
every outer y axis line/.append style={black},
every y tick label/.append style={font=\color{black}},
y dir=reverse,
ymin=0.5,
ymax=4201.5,
ylabel={Azimuth},
axis background/.style={fill=white},
title={$some latex math formula title$},
colormap/jet,
colorbar,
colorbar style={separate axis lines,every outer x axis line/.append style={black},every x tick label/.append style={font=\color{black}},every outer y axis line/.append style={black},every y tick label/.append style={font=\color{black}}}
]
\addplot [forget plot] graphics [xmin=0.5,xmax=3601.5,ymin=0.5,ymax=4201.5] {path/to/tikz/figure/figure-1.png};
\end{axis}
\end{tikzpicture}%

提前致谢。

答案1

正如@cfr 非常正确指出的那样,我刚刚将图像包装在双 tikzpicture 环境中,一次在.tex 文件中,一次在.tikz 文件中......当然,那是行不通的......

下面的代码可以工作(请注意,.tikz 没有发生任何变化,我只是将 .tex 文件中对 .tikz 文件的调用更改为):

\begin{figure}[h]
    \begin{minipage}[b]{0.5\linewidth}
        \setlength\figureheight{5cm}
        \setlength\figurewidth{0.5\textwidth}
        \input{path/to/tikzfile/figure1.tikz}
        \subcaption{loremipsum subfigure 1}
    \end{minipage}
    \begin{minipage}[b]{0.5\linewidth}
        \setlength\figureheight{5cm}
        \setlength\figurewidth{0.5\textwidth}
        \input{path/to/tikzfile/figure2.tikz}
        \subcaption{loremipsum subfigure 2}
    \end{minipage}
    \caption{loremipsum for total figure}
\end{figure}

我猜有时候人只是盯着某样东西看就会变得盲目......

非常感谢@cfr,你拯救了我的周末!:)

相关内容