如果我编译以下 MWE
\documentclass{scrartcl}
\usepackage{ocg-p}%Layers
\begin{document}
\end{document}
使用 luaLaTeX 时,它会停止并出现以下错误:
! Package ocg-p Error: pdfeTeX, version >= 1.20, required.
这ocg-p 软件包仅支持 pdflatex 和 xelatex,但在过去(TeXLive 2014)我将它与 luaLaTeX 结合使用没有任何问题。
我需要 ocg-p 和 luaLaTeX 的组合。
这ocg-p-包其本身自 2013 年以来没有变化,因此对 pdfeTeX 版本的检查在之前的版本中已经存在。
答案1
软件包可以作为、和软件包ocgx2
的替代品。ocg-p
ocg
ocgx
看自述与其他软件包相比,有修复和添加。
\documentclass{scrartcl}
%\documentclass[dvipdfmx]{scrartcl}
\usepackage{ocgx2} %pdflatex, lualatex, xelatex, latex+dvips+ps2pdf
\begin{document}
%same interface as ocg.sty, ocg-p.sty, ocgx.sty
\begin{ocg}{hello}{hello}{1}
\strut Hello!
\end{ocg}
\begin{ocg}{good bye}{good bye}{0}
\strut Good bye!
\end{ocg}
\toggleocgs{hello {good bye}}{\fbox{Toggle visibility}} %ocg-p
%\switchocg{hello {good bye}}{\fbox{Toggle visibility}} %ocgx
\end{document}
答案2
快速帮助:将 pdftexversion-number 设置为预期值。
\documentclass{scrartcl}
\def\pdftexversion{120}
\usepackage{ocg-p}%Layers
\begin{document}
\end{document}
背景:
ocg-p 进行以下检查:
\RequirePackage{ifpdf}
\RequirePackage{ifxetex}
[...]
\ifpdf
\ifnum\pdftexversion<120
\PackageError{ocg-p}{%
pdfeTeX, version >= 1.20, required%
}{%
Install a newer version!%
}%
\fi
\else
\ifxetex
%already ok
\else
% dvips
\@ocgp@ifpstrue
\PackageWarningNoLine{ocg-p}{%
Only XeLaTeX and pdfLaTeX are supported%
}%
\fi
\fi
过去,lualatex 79 设置了 pdftexversion 200。从 TeXlive 2015 开始,该值设置为 lualatexversion 的值(实际上是 80)。因此,此检查失败,您会收到错误。
将来pdftexversion 将不会被定义。
如果有人在其他软件包中遇到类似问题。版本检查可以修改为:
\RequirePackage{ifpdf}
\RequirePackage{ifxetex}
\RequirePackage{ifluatex}
%....
\ifluatex
%already ok (tested with luatexversion ...)
\else
\ifpdf
\ifnum\pdftexversion<120
\PackageError{ocg-p}{%
pdfeTeX, version >= 1.20, required%
}{%
Install a newer version!%
}%
\fi
\else
\ifxetex
%already ok
\else
% dvips
\@ocgp@ifpstrue
\PackageWarningNoLine{ocg-p}{%
Only XeLaTeX and pdfLaTeX are supported%
}%
\fi
\fi
\fi