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,則不需要,並且在所有其他情況下都會導致錯誤。

相關內容