以下代码在 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,该选项是无害的但不是必需的,并且在所有其他情况下都会导致错误。