pdfpages 中的旋转算法问题

pdfpages 中的旋转算法问题

该软件包存在算术或接口问题pdf页面。让我们附上一本书的扫描件:

% !TEX TS 程序 = pdflatex

\documentclass[11pt]{book}  
\usepackage{pdfpages}

\begin{document}
\includepdf[pages = 1, scale = 0.10, offset = 0mm 0mm, angle =  0.90 ]{scan1}
\includepdf[pages = 1, scale = 0.56, offset = 0mm 0mm, angle = -0.9  ]{scan2}
\end{document}

包含 scan2 的正确角度是 -0.9。

— 如果第一个包含的角度不同 0.9作为字符串 (例如 0.90),包含 scan2 是可以的(这些线不属于扫描):

在此处输入图片描述

— 但如果第一个包含的角度是 0.90作为字符串,则 scan2 的方向是错误的:

在此处输入图片描述

答案1

问题是 trig 用于\number#1强制对值进行十进制扩展(可能是寄存器或 chardef 标记),但是由于只看到整数部分和 0=-0,所以结果\number-0.9是 0.9 。\number

您可以强制正确解释 sin,如下所示(或者更简单地将 360 添加到该值中,这样它就不是 0 到 -1 之间的值,这是唯一失败的范围)

\documentclass{article}
\usepackage{graphicx}
\makeatletter
\def\UseSin#1{\csname sin(\ifdim#1\p@<\z@-\number-#1\else\number#1\fi)\endcsname}
\def\UseCos#1{\csname cos(\ifdim#1\p@<\z@-\number-#1\else\number#1\fi)\endcsname}


\CalculateSin{0.9}
\CalculateCos{0.9}
\typeout{A: \UseSin{0.9},\UseCos{0.9}}
\expandafter\xdef\csname sin(-0.9)\endcsname{-\UseSin{0.9}}
\expandafter\xdef\csname cos(-0.9)\endcsname{\UseCos{0.9}}
\expandafter\xdef\csname sin(-0.91)\endcsname{-\UseSin{0.91}}
\expandafter\xdef\csname cos(-0.91)\endcsname{\UseCos{0.91}}

\typeout{B: \UseSin{-0.9},\UseCos{-0.9}}


\begin{document}

\includegraphics[scale = 0.50, angle =  0.9 ]{example-image-a}
\includegraphics[scale = 0.50, angle = -0.9 ]{example-image-b}

\includegraphics[scale = 0.50, angle =  0.910 ]{example-image-a}
\includegraphics[scale = 0.50, angle = -0.91 ]{example-image-b}

\end{document}

我会看看是否能想到一个更好的解决方案来添加到 trig...

相关内容