
Следующий код работает у меня в TeXMaker на Mac OS с 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, и вызовет ошибки во всех остальных случаях.