TeXMaker의 xelatex 문제

TeXMaker의 xelatex 문제

다음 코드는 XeLaTeX + ViewPDF를 사용하는 Mac OS의 TeXMaker에서 작동합니다.

\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

각 usepackage 다음에 삽입하면 \show\C다음까지 정의되지 않은 것을 볼 수 있습니다.

> \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~이다당신의 명령에 따라 무료입니다.

xelatex와 함께 T1 인코딩을 사용하면 안 됩니다(하이픈 연결이 잘못될 수 있음).

그래서 제거해야합니다

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

또한 사용

\usepackage{graphicx}

~ 아니다

\usepackage[pdftex]{graphicx}

xetex에서 실행 중임을 감지한 경우에도 graphicx가 pdftex 관련 코드를 사용하도록 강제하기 때문에 선택적 인수를 거의 사용해서는 안 됩니다. 이 pdftex옵션은 무해하지만 pdftex를 사용하는 경우에는 필요하지 않으며 다른 모든 경우에는 오류가 발생합니다.

관련 정보