寄存器
寄存器
这家伙很懒,什么也没写!

注册于 4年前

回答
170
文章
5
关注者
17

可以用tkz-fct宏包进行函数曲线绘制:

\documentclass[margin=5pt]{standalone}

\usepackage{tkz-fct}

\begin{document}

\begin{tikzpicture}
  \tkzInit [xmin=-8,xmax=8,ymin=-8,ymax=8,xstep=1,ystep=1]
  \tkzFctPolar[domain=0:2*pi,samples=1000]%
  { sqrt(2*cos(2*t)) }
\end{tikzpicture}

\end{document}

基结果为:
2021-09-08_15-55.png


TikZ能可以画隐函数的方程,做法是构造一个f(x,y)=(x^2+y^2)^2-a^2(x^2-y^2)函数,然后进行绘制,如:

\documentclass{standalone}

\usepackage{tikz}

\begin{document}
  \begin{tikzpicture}[xscale=1,yscale=.25]
    \draw plot[id=curve, raw gnuplot] function{
      f(x,y) = ((x**2 + y**2)**2) - 2*(x**2 - y**2);
      set xrange [-8:8];
      set yrange [-8:8];
      set view 0,0;
      set isosample 2000,2000;
      %set size square;
      set cont base;
      set cntrparam levels incre 0,0.1,0;
      unset surface;
      splot f(x,y)
    };
  \end{tikzpicture}
\end{document}

其结果为:
2021-09-08_15-54.png


好像画出来的不一样,不知对与不对?


注意,由于使用了外部gnuplot进行计算,所以需要安装gnuplot工具,并在编译时使用--shell-escape参数。

TikZ就能干的事,为什么搞这么复杂呢?

texdoc tikz看看手册,随便找个样例改一改就是了。

用TikZ实现了一下:插图局部放大的一种实现方式


用楼上的方法实现了一下:

\documentclass{standalone}

% 插图宏包
\usepackage{graphicx}
% 引入TikZ宏包
\usepackage{tikz}
% TikZ宏包扩展库
\usetikzlibrary{fit}% 坐标适配
\usetikzlibrary{spy}% 局部缩放库
\usetikzlibrary{arrows.meta}% 箭头样式

\input{formats.tex}% \drawgrid命令的定义

\begin{document}

\def\imgratio{0.85}

\begin{tikzpicture}[%
  spy using outlines = {rectangle,
                        magnification=3,
                        connect spies}]

  % 载入图像(注意定位锚点为西南,即左下角)
  \node[anchor=south west, inner sep=0] (img1) at (0,0)
  {\includegraphics[width=\imgratio\textwidth]{example-image-a}};

  % 限定坐标区域
  \begin{scope}[x={(img1.south east)}, y={(img1.north west)}]
    % 绘制坐标辅助网络
    % \drawgrid

    % 定位缩放点
    \coordinate (spypoint) at (0.46, 0.66);
    \coordinate (magnifyglass) at (0.0, 0.0);
  \end{scope}

  \spy[anchor=south west, red, size=2.5cm, very thick] on (spypoint)
    in node[fill=white] at (magnifyglass);
\end{tikzpicture}
\end{document}

实现结果为:
2021-08-28_14-55.png

正确配置环境变量后,应该是可以的,没有用过。

LaTeX发行版与编辑器没有直接的关系,可以用任何编辑器编写LaTeX文档。

可以使用如下两个方案实现:

1、使用tikz-imagelabels宏包实现插图注解,如:
image.png

2、使用用TikZ的fit库实现插图标注,如:
image.png


不知什么原因,连接中的代码的命令和环境开始的\成了\\,请自行删除处理一下。

与编译引擎有关,而且还相对复杂,可以在其主页Welcome to the PSTricks web site看到具体说明:
image.png

我当前工作的是TeXLive2021+Ubuntu20.04,能用pdflatex --shell-escape main.tex一次性编译通过。
image.png

提供MWE(最小工作示例)


建议以后问问题时,将MWE置于代码环境中。

问题的原因是在\tabletail{\midrule{Continued}}和表格最后一行LLLL & & 0.83中缺少换行\\造成的,分别在这两行加上\\即可:

...
\tabletail{\midrule{Continued}\\}
...
LRWL &  & 0.83\\
...

其原因是由于supertabular要求每行必须有\\结束。


建议使用texdoc supertabular打开其说明书,认真阅读和分析。

个人觉得直接使用exam实现可能更为方便,如果一定要自己实现,可以考虑LaTeX3。

可以参考一下这个:Is it possible to remove the mesh but keep the outline of this pgf plot?,适当调整一下参数看能不能符合需求。

个人建议,可以考虑使用其它工具绘制,再用TikZ进行标注,这样可确保字体、字号等与正文的一致性。


一个可能的参数:

\begin{axis}[%
  domain=-1:1, y domain=-1:1,
  axis lines=center,
  ticks=none,
  enlargelimits=false,
  xmin=-1, xmax=1, ymin=-1, ymax=1, zmin=-2, zmax=2,
  xlabel=$x$, ylabel=$y$, zlabel=$z$,
  every axis x label/.style={
    at={(axis cs:1,0,0)},
    anchor=west,
  },
  every axis y label/.style={
    at={(axis cs:0,1,0)},
    anchor=west,
  },
  every axis z label/.style={
    at={(axis cs:0,0,2)},
    anchor=south,
  },
  colormap={blueblack}{color=(black) color=(white)}]
  \addplot3[point meta={1-ifthenelse(abs(x)==1,1,ifthenelse(abs(y)==1,1,0))},
    z buffer=sort,
    surf,opacity=0,
    samples=30,fill opacity=0.5] {x^2-y^2};
  \end{axis}
\end{tikzpicture}

其结果为:
image.png

强烈建议直接使用最新的tabularray宏包进行表格排版。

Word思维,尽量早点转换到LaTeX的内容与格式分离的思维上来,并习惯接受LaTeX给出的默认结果。

发布
问题