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