zoukankan      html  css  js  c++  java
  • tikz作图

    如果你选择了Latex,那也就意味着义无反顾的勇气。作图是科技写作的重要部分,工科生最熟悉的作图软件通常是matlab,它的缺点是难以与Latex无缝融合,比如字体的统一就是个大问题。好在有能人意识到这个问题,并且做出了出色的转化工具——matlab2tikz,可以将matlab的图转化为tex文件,然后在主文档中直接input即可。接下来的问题是:

    1)如果图很多,主文档编译很变得很慢;

    2)能否将每一幅matlab的图通过matlab2tikz转化成一幅pdf格式的图?这样就可以在主文档以图的形式包含即可。

    没有做不到,只有想不到的。tikz/pgf(pgfplots)可以实现这一功能。到目前为止,还没发现有效的xeLatex编译方法,pgfplots手册都是以pdflatex编译的。以下是一个完成的例子:

    documentclass[UTF8]{article}%UTF8必须大写

    usepackage{CTEX}%大写

    usepackage{tikz,pgfplots}

    usepgfplotslibrary{external}

    ikzexternalize% activate externalization!

    egin{document}

             egin{figure}

                      centering

                      egin{tikzpicture}

                      egin{axis}[

                      width=8cm,

                      height=4cm,

                      xlabel={时间坐标},

                      ylabel={幅度坐标},title={示例1}]

                      addplot {x^2};

                      end{axis}

                      end{tikzpicture}

                      caption{第一幅外部图例子}%输出的图像文件不包含caption

             end{figure}

             egin{figure}

                      centering

                      egin{tikzpicture}

                      egin{axis}[

                      width=8cm,

                      height=4cm,

                      xlabel={时间坐标},

                      ylabel={幅度坐标},title={示例2}]

                      addplot {x^3};

                      end{axis}

                      end{tikzpicture}

                      caption{第二幅图}

             end{figure}

    end{document}

    且将命令行改为pdflatex -synctex=1 -interaction=nonstopmode --shell-escape %.tex。编译之后,除了可以生成主文档对应的pdf文件,还会生成每幅图对应的pdf文件,自动去除白边哦。

      pdfLatex的内存分配不如luaLatex灵活,因此,当图像数据量较大时,建议选用luaLatex编译方法。一个完整的例子(Logistic分岔图):

    ifxdirectlua@undefined
    else
    RequirePackage{luatex85}
    RequirePackage{shellesc}
    fi

    documentclass[tikz]{article}
    usepackage{luatexja-fontspec}
    setmainjfont{FandolSong}
    usepackage{luacode}
    usepackage{filecontents}
    usepackage{pgfplots}
    usepgfplotslibrary{external}
    ikzexternalize

    egin{luacode*}
      function logistic()

        local function map(r,x)
          return r*x*(1-x)
        end

        for r = 2.5,4,0.005 do
          x = 0.1
          for i = 1, 200 do
            x = map(r,x)
          end
          for i = 1, 200 do
            x = map(r,x)
            tex.sprint("("..r..","..x..")")
          end
        end
      end
    end{luacode*}

    egin{document}
    egin{figure}
    egin{tikzpicture}
      egin{axis}[xlabel={参数$mu$},ylabel={幅度}]
      edeflogisticplot{ oexpandaddplot [color=black!10, mesh, only marks,
      mark size = 0.05pt, opacity = 0.1] coordinates{ directlua{logistic()} };}
      logisticplot
      end{axis}
    end{tikzpicture}
    end{figure}
    end{document}

    命令行设置:lualatex.exe -synctex=1 -interaction=nonstopmode -shell-escape %.tex。

    luaLatex另一亮点是支持编程语言。

  • 相关阅读:
    十七、S3C2440 音频解码芯片WM8976声卡驱动移植、madplay测试
    2.3 摄像头驱动_vivi驱动程序分析
    3.1 wifi网卡RT3070在S3C2440的移植和使用
    项目简介
    2.2 vivi虚拟视频驱动测试
    2.1 摄像头V4L2驱动框架分析
    LCD驱动程序编写
    LCD驱动程序
    1. Linux内核的配置与裁减:
    第5章 docker run、exec和attach使用和区别
  • 原文地址:https://www.cnblogs.com/gemstone/p/6420871.html
Copyright © 2011-2022 走看看