在 MikTeX 中使用 dot2texi 时出错

在 MikTeX 中使用 dot2texi 时出错

尝试编译以下代码时,我在日志文件中收到错误:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
\usepackage{dot2texi}

\begin{document}
  \begin{dot2tex}[neato,options=-tmath]
    digraph G {
      node [shape="circle"];
      a_1 -> a_2 -> a_3 -> a_4 -> a_1;
 }
\end{dot2tex}
\end{document}

这是来自 dot2tex 网站的一个例子。错误示例如下:

Undefined control sequence \begin{dot2tex}[neato,options=-tmath]

该包的作者建议在此链接上,你应该定义

\@ifundefined{verbatim@out}{\newwrite\verbatim@out}{}%

在你的包里,但是我仍然不明白应该把这个命令放在哪里,因为我是 TeX 新手。

修复:我在一开始就输入\@ifundefined{verbatim@out}{\newwrite\verbatim@out}{}%了:dot2texi.sty

\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{dot2texi}[2008/05/07 v3.0 Run dot2tex from LaTeX]
\RequirePackage{moreverb}
\RequirePackage{xkeyval}[2005/02/22]

\@ifundefined{verbatim@out}{\newwrite\verbatim@out}{}% 

\newif\ifdtt@ShellEscape
%\newif\ifmiktex \miktexfalse

答案1

修改样式文件通常不是一个好主意。在中间\makeatletter\makeatother后面写一行\usepackage{dot2texi}也是不错的选择:

\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
\usepackage{dot2texi}
\makeatletter
\@ifundefined{verbatim@out}{\newwrite\verbatim@out}{}
\makeatother

相关内容