为什么 LaTeX 可以旋转页面而 pdfLaTeX 却不会?

为什么 LaTeX 可以旋转页面而 pdfLaTeX 却不会?

在此示例中,来自解决方案*如何在矩阵图的右侧添加数字,并在其下方或上方添加额外的彩色单线数组*

\documentclass{article}
\usepackage{filecontents}
\usepackage[table]{xcolor}
\usepackage{pgfplotstable}
\usetikzlibrary{calc}
\pgfplotsset{compat=1.16}

\begin{filecontents}{matrix.cvs}
0 1 1 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 1 1 0 1 1 1 1 0 0 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0 1 1
0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0
0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0
0 0 1 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0
1 0 1 1 0 0 1 1 0 1 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0
0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
1 0 1 0 0 0 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1 1 0 1 0 0 1 1 1 0 0 1 1 1
\end{filecontents}

\makeatletter
\tikzset{
    zero color/.initial=white,
    zero color/.get=\zerocol,
    zero color/.store in=\zerocol,
    one color/.initial=red,
    one color/.get=\onecol,
    one color/.store in=\onecol,
    cell wd/.initial=1ex,
    cell wd/.get=\cellwd,
    cell wd/.store in=\cellwd,
    cell ht/.initial=1ex,
    cell ht/.get=\cellht,
    cell ht/.store in=\cellht,
    xlabels/.store in=\myxlabels,
    ylabels/.store in=\myylabels,
}
\newcommand{\drawgrid}[2][]{
\medskip
\begin{tikzpicture}[#1]
  \pgfplotstableforeachcolumn#2\as\col{
    \pgfplotstableforeachcolumnelement{\col}\of#2\as\colcnt{%
      \ifnum\colcnt=0
        \fill[\zerocol]($ (0,-\pgfplotstablerow*\cellht) + (\col*\cellwd,0) $) rectangle+(\cellwd,\cellht);
      \fi
      \ifnum\colcnt=1
        \fill[\onecol]($ (0,-\pgfplotstablerow*\cellht) + (\col*\cellwd,0) $) rectangle+(\cellwd,\cellht);
      \fi
    }
  }
  \pgfplotstablegetrowsof{#2}
  \pgfmathtruncatemacro{\numrows}{\pgfplotsretval}
  \pgfplotstablegetcolsof{#2}
  \pgfmathtruncatemacro{\numcols}{\pgfplotsretval}
  \draw[white] (0,\cellht) grid[xstep=\cellwd,ystep=\cellht]
     (\cellwd*\numcols,\cellht-\cellht*\numrows); %
  \foreach \Z [count=\Y] in \myylabels   
   {\node[anchor=west,font=\sffamily,scale=0.7] at 
    (\cellwd*\numcols,1.5*\cellht-\cellht*\Y) {\Z};}
  \foreach \Z [count=\X,evaluate=\Z as \CC using {int(\Z*100)}] in \myxlabels    
   {\fill[black!\CC]  
   (-\cellwd+\X*\cellwd,0.5*\cellht-\cellht*\numrows)
    rectangle ++ (\cellwd,-\cellht);
    \node[anchor=west,rotate=-90,font=\sffamily,scale=0.7] at 
    (-0.5*\cellwd+\X*\cellwd,-0.5*\cellht-\cellht*\numrows) {\Z};
    }
\end{tikzpicture}
\medskip
}
\makeatother

\begin{document}
% read the file
\pgfplotstableread{matrix.cvs}{\matrixfile}


\begin{figure}[!t]
    \centering
        \drawgrid[zero color=orange, 
          one color=violet,
          cell ht=0.75em,
          cell wd=0.75em,
          xlabels={0.2833,0.0336,0.7766,0.0468,0.0228,0.0143,0.6877,0.0700,0.1287,0.6659,0.7123,0.0143,0.0143,0.6325,0.8049,0.7282,0.1624,0.6346,0.0564,0.0176,0.0143,0.0271,0.6463,0.7268,0.4798,0.1637,0.0297,0.3054,0.5039,0.0246,0.7140,0.3091,0.4256,0.3418,0.6493,0.0508,0.0143,0.2927,0.0291,0.6622,0.0143,0.0177,0.1610,0.1287,0.7471,0.0563,0.0143,0.3275,0.6773,0.5992},
          ylabels={0.0293,0.0211,0.0165,0.0163,0.0134,0.0382,0.0150,0.8501}]{\matrixfile}
    \caption{caption}
    \label{fig:label}
\end{figure}

\end{document}

编译后的 pdf 文件会导致页面方向不同。使用 LaTeX 编译结果会旋转 90 度,如果使用 pdfLaTeX 编译,结果则是预期结果。

发生这种情况可能是因为 pdfLaTeX 中不存在与 postscript 生成相关的某些内容。

有人知道如何用 LaTeX 编译 TeX 示例并获得与 pdfLaTeX 相同的页面方向吗?

问候

答案1

默认情况下,Ghostscript (ps2pdf) 会根据纵横比自动旋转图像。要防止这种情况发生,请使用ps2pdf -dAutoRotatePages=/None

相关内容