TeXMaker 中的 xelatex 问题

TeXMaker 中的 xelatex 问题

以下代码在 Mac OS 上的 TeXMaker 中与 XeLaTeX + ViewPDF 一起使用时对我有用:

\documentclass{article}
%\usepackage{pst-3dplot}
 \newcommand{\C}{\mathbb{C}}
 %\usepackage{pstricks,auto-pst-pdf}
  \usepackage{pst-3dplot}
  %\usepackage{pst-math}
  % ...
  \begin{document}
   % ...
  \begin{center} 
  \begin{pspicture}(0,0)(8,5)
  \psdot(1,3)
  \psline(0,0)(8,2)
  \rput(1,3.3){$A$}
  \rput(0.2,0.5){$L$}
  \rput(8, 3){$NICE$}
  \end{pspicture}
  \end{center} 
  % ...
  \end{document}

但是当将此代码与我通常的序言一起使用时:

    \documentclass[a4paper, 10pt, twoside, headsepline, pointlessnumbers]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[pdftex]{graphicx}

\usepackage{latexsym}
\usepackage{amsmath,amssymb,amsthm}
\usepackage{microtype}
\usepackage{xcolor}

\usepackage{tocstyle}
        \usepackage{mdframed}
        \usetocstyle{KOMAlike}
        \usepackage[hidelinks]{hyperref}
        \usepackage{mathtools}
        \usepackage{float}
        \setcounter{MaxMatrixCols}{20}
        \newcommand{\RM}[1]{\MakeUppercase{\romannumeral #1{}}}
        \makeatletter \g@addto@macro\@floatboxreset\centering        \makeatother
       \usepackage{verbatim}
       \usepackage{multirow}
       \usepackage{booktabs}
       \usepackage{array}
       \usepackage{comment}
       \usepackage{esvect}
       \DeclareMathAlphabet{\mathcal}{OMS}{cmsy}{m}{n}
       \usepackage{collcell}

       \usepackage{pst-3dplot}

      %\usepackage{pst-3dplot}

       \newcommand{\C}{\mathbb{C}}

      %\usepackage{pstricks,auto-pst-pdf}

      \usepackage{pst-3dplot}
     %\usepackage{pst-math}

     % ...



     \begin{document}

     % ...

     \begin{center} 
     \begin{pspicture}(0,0)(8,5)
     \psdot(1,3)
     \psline(0,0)(8,2)
     \rput(1,3.3){$A$}
     \rput(0.2,0.5){$L$}
     \rput(8, 3){$NICE$}
     \end{pspicture}
     \end{center} 

     % ...

     \end{document}

我收到了几个错误,例如“命令 \C 已定义”、“未定义控制序列 \ifnum \pdfshellescape...”

哪里有问题?

答案1

如果你\show\C在每个 usepackage 之后插入,你会看到它是未定义的,直到

> \C=undefined.
l.19 \show\C

? 
(./hyperref.sty
(/usr/local/texlive/2019/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty
(/usr/local/texlive/2019/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty))
(/usr/local/texlive/2019/texmf-dist/tex/generic/ifxetex/ifxetex.sty)
(/usr/local/texlive/2019/texmf-dist/tex/latex/hyperref/pd1enc.def)
(/usr/local/texlive/2019/texmf-dist/tex/latex/latexconfig/hyperref.cfg)
(/usr/local/texlive/2019/texmf-dist/tex/latex/url/url.sty))
(/usr/local/texlive/2019/texmf-dist/tex/latex/hyperref/hxetex.def
(/usr/local/texlive/2019/texmf-dist/tex/latex/hyperref/puenc.def)
(/usr/local/texlive/2019/texmf-dist/tex/generic/oberdiek/stringenc.sty)
(/usr/local/texlive/2019/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty))
> \C=macro:
->\PU-cmd \C \PU\C .
l.21 \show\C

那是 hyperref 定义的。如果您不需要该定义,则只需在进行定义时使用\renewcommand而不是即可,或者选择一个名称\newcommand免费供您使用。

请注意,您切勿将 T1 编码与 xelatex 一起使用(连字符会出错)。

所以你应该删除

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

还可以使用

\usepackage{graphicx}

不是

\usepackage[pdftex]{graphicx}

您几乎永远不应该在那里使用可选参数,因为它只会强制 graphicx 使用 pdftex 特定的代码,即使它检测到它正在 xetex 上运行。pdftex如果您使用 pdftex,该选项是无害的但不是必需的,并且在所有其他情况下都会导致错误。

相关内容