强制 pdftex 处于 pdf 模式

强制 pdftex 处于 pdf 模式

我有一个相当复杂的宏,用于在横向模式下生成 pdf 图形。

  1. 当我将宏包含在主文件主体中时,代码运行正常。
  2. 当我将宏放在单独的样式文件中时,LaTeX 无法确定图形的大小。
  3. 当我把宏放在单独的样式文件中时在宏前面加上\includegraphics命令,代码就可以正常运行。

查看日志,区别在于,在情况 1 和 3) 中,我有

Package graphics Info: Driver file: dvips.def on input line 91.

进而

Package ifpdf Info: pdfTeX in pdf mode detected

对于第二种情况,我有

Package graphics Info: Driver file: pdftex.def on input line 91

进而

Package ifpdf Info: pdfTeX in pdf mode not detected

所以问题是,我如何才能在情况 2 中引发我在情况 1 和 3 中得到的行为。

我确信这个问题可以在没有我的代码细节的情况下得到回答,但是为了以防万一,我还是把它包括进去了。这是案例 3 的主要乳胶代码。可以通过注释掉倒数第三行来创建案例 2。可以通过用下面的实际代码\includegraphics替换该行来创建案例 1\usepackage{landscapePdfPic}

\documentclass{amsart}%
\usepackage{calc}
\usepackage{pdflscape}
\usepackage{graphicx}
\usepackage{xparse}
\usepackage{ifmtarg}
\usepackage{environ}            
\usepackage{landscapePdfPic}
\def\figureDir{.}
\begin{document}
\includegraphics{pic.pdf}
\landscapePdfPic{\figureDir}{pic}
\end{document}

以下是 的内容landscapePdfPic.sty

\providecommand{\LAYOUT}[5]{%
  \setlength{\hoffset}{0pt}
  \setlength{\voffset}{0pt}
  \setlength{\topmargin}{#1 - 1in - \voffset - \headheight - \headsep}
  \setlength{\oddsidemargin}{#2 - 1in - \hoffset}
  \setlength{\evensidemargin}{\oddsidemargin}
  \setlength{\textheight}{#3}
  \setlength{\textwidth}{#4}
  \setlength{\marginparwidth}{#5}
}
\providecommand{\ARTPAGE}{\LAYOUT{1.5 in}{1.75 in}{8 in}{5 in}{1.5 in}}
\providecommand{\FULLPAGE}{\LAYOUT{1 in}{1 in}{9 in}{6.5 in}{0.75 in}}

\def\topVerticalOffset{-120pt}%Negative value moves the top of the pic up the page
\def\topHorizontalOffset{-160pt}%Negative value moves the top of the left
\def\widthMultiplier{2.4}%How much to blow up the picture horizontally, relative to \textwidth
\def\heightMultiplier{1.6}%How much to blow up the picture vertically, relative to \textheight

\makeatletter
\DeclareDocumentCommand{\landscapePdfPic}{%
O{\topVerticalOffset}
O{\topHorizontalOffset}
O{\widthMultiplier}
O{\heightMultiplier}
m m o o }{
    \newpage
    \IfNoValueTF{#7}
        {\def\hideCaptionOffset{3in}}
        {
            \@ifmtarg{#7}
            {\def\hideCaptionOffset{3in}}
            {\def\hideCaptionOffset{-0.58in}}}
    \ARTPAGE
    \begin{landscape}
    \begin{figure}
    \centering
    $\empty$\\[#1]
    $\empty$\hspace*{#2}
    \includegraphics[width=#3\textwidth,height=#4\textheight] {#5/#6.pdf}
    \vspace*{\hideCaptionOffset}
    \caption{#7}
    \vspace*{-\hideCaptionOffset}

    \IfNoValueTF{#8}
        {\label{fig:#6}}
        {\@ifmtarg{#8}
            {\label{fig:#6}}
            {\label{fig:#8}}}
    \vspace*{-30pt}
    \thepage
    \end{figure}
    \end{landscape}
    \FULLPAGE
}
\makeatother

答案1

据我所知,唯一的区别是,该驱动程序latex用于案例 2 和pdflatex其他案例。因此,案例 2 已将驱动程序加载为默认驱动程序,无法包含 PDF 文件。graphicsdvips.def

输出格式不应该被包改变。如果用户运行pdflatex并获取DVI,反之亦然,这会让用户感到困惑。

但是,如果文件使用错误的模式编译,则可以添加警告。包的附加内容:

\RequirePackage{ifpdf}
\ifpdf
\else
  \PackageWarning{landscapePdfPic}{Wrong mode, PDF expected}%
  % or \PackageError{landscapePdfPic}{Wrong mode, PDF expected}\@ehc
  %
  % As error recovery, dummy definitions for the macros, provided by
  % the package could be given.
  %
  % \expandafter\endinput % possibility to end a package early at this place
\fi

相关内容