我想要建立一个可以用 LaTex、pdfLaTeX 或 xeLateX 编译的文档。
但是在下面的代码中你可以看到它不能用 LaTeX 编译:问题似乎来自 \ifPDFTeX,因为使用 ifpdf 包中的 \ifpdf 没有任何问题。xelatex 和 pdflatex 都没有问题。
问题在于 auto-pst-pdf 和 \ifPDFTeX
怎么了 ???
谢谢
\documentclass[a4paper,11pt]{article}
\usepackage{iftex}
\ifXeTeX
\usepackage[tuenc]{fontspec}
\usepackage{xunicode} %à charger après fontspec
\else
\usepackage[utf8]{inputenc} %pour linux
\usepackage[T1]{fontenc} %lettres accentuées %problème de flou en .pdf mais pas avec cm-super
\fi
%This does not work :
\ifXeTeX\else\ifPDFTeX\usepackage{auto-pst-pdf}\fi\fi
%This works :
%\usepackage{ifpdf}
%\ifXeTeX\else\ifpdf\usepackage{auto-pst-pdf}\fi\fi
\usepackage{pstricks-add}
\begin{document}
Essai
\begin{pspicture}(0,0)(4,4)
\psline(0,0)(4,4)
\end{pspicture}
\end{document}
日志如下:
This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016) (preloaded format=latex)
restricted \write18 enabled.
entering extended mode
<recently read> \fi
l.14 ...\else\ifPDFTeX\usepackage{auto-pst-pdf}\fi
\fi
! Extra \fi.
l.14 ...se\ifPDFTeX\usepackage{auto-pst-pdf}\fi\fi
编辑 1:此示例的新问题:
使用 pdflatex 编译时,一些材料被放在第二页,并且“essai”单词出现了两次。
\documentclass[a4paper,11pt]{article}
\usepackage{iftex,ifpdf}
\ifXeTeX
\usepackage[tuenc]{fontspec}
\else
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\fi
%Some material put on a 2nde page :
\ifpdf\usepackage{auto-pst-pdf}\fi
%Works normalty with this :
%\usepackage{auto-pst-pdf}
\usepackage{pstricks-add}
\begin{document}
Essai
\begin{pspicture}(0,0)(4,4)
\psline(0,0)(4,4)
\end{pspicture}
\end{document}
编辑2:当不使用 ifpdf 时这里也会出现同样的问题:
\documentclass[a4paper,11pt]{article}
%without this no problem ...
\newif\ifpdf
\ifx\pdfoutput\undefined
\pdffalse % we are not running PDFLaTeX
\else
\pdfoutput=1 % we are running PDFLaTeX
\pdftrue
\fi
%%%%%%%%%%%%%
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
%\usepackage{auto-pst-pdf}
\usepackage{pst-pdf}
\usepackage{pstricks-add}
\begin{document}
Essai
\begin{pspicture}(0,0)(4,4)
\psline(0,0)(4,4)
\end{pspicture}
\end{document}
答案1
这适用于xelatex
,pdflatex
并且latex
\documentclass[a4paper,11pt]{article}
\usepackage{iftex,ifpdf}
\ifXeTeX
\usepackage{fontspec}
\else
\ifpdf
\typeout{==== pdflatex ===}%
\usepackage{auto-pst-pdf}
\else
\usepackage{auto-pst-pdf}
\pagestyle{empty}
\fi
\usepackage[utf8]{inputenc} %pour linux
\usepackage[T1]{fontenc}
\fi
\usepackage{pstricks-add}
\begin{document}
Essai
\begin{pspicture}(0,0)(4,4)
\psline(0,0)(4,4)
\end{pspicture}
\end{document}
答案2
我不知道为什么,但是 \usepackage{geometry} 解决了这个问题。此示例现在也适用于 LaTeX 和 pdfLaTeX。
\documentclass[a4paper,11pt]{article}
\usepackage{ifpdf}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
%solution to the problem :
\usepackage{geometry}
%\ifpdf %not necessary with geometry
\usepackage{auto-pst-pdf}
%\fi
\usepackage{pstricks-add}
\begin{document}
Essai
\begin{pspicture}(0,0)(4,4)
\psline(0,0)(4,4)
\end{pspicture}
\end{document}