我正在使用 ocg-p 包在 pdf 文档中添加信息层,以便读者以交互方式访问。为了将 ocg 层放置在文档上的所需位置,我使用了 pstricks 包中的 rput 命令。但是,此策略要求我调整每个层中 ocg 层的坐标,这在大型文档中会很耗时。所以我有两个问题:
有没有办法有条件地将 ocg 层放在激活它的按钮对面的文本列中?ocg 层的高度等于文本列的高度,以及其宽度;
在我目前使用的代码中(见下文),ocg 层在激活它的按钮对面的文本列上占据了按钮下方的垂直空间。我已使用 vspace 来补偿这种垂直位移,但同样,这需要在每种情况下进行手动调整,这对于较长的文档来说是一种耗时的方法。有没有更简单的方法来解决这个问题?
我在下面粘贴了一个简化的工作代码。我使用 TexStudio for Mac(最新版本)和 xetex,因为我在这个项目中使用了特定字体。非常欢迎任何代码建议,因为我以前没有编程经验,而且对 latex 也非常陌生。
\documentclass[a4paper,twocolumn,12pt]{book}
\usepackage[brazilian]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fontspec}
\usepackage[usenames,dvipsnames,svgnames,table,xcdraw]{xcolor}
\usepackage{graphicx,lipsum,eso-pic,colortbl,indentfirst,tikz,ocg-p,pstricks}
\usetikzlibrary{backgrounds}
\usepackage[hmarginratio=1:1]{geometry}
\pagestyle{myheadings}
\frenchspacing
\setlength{\parskip}{2ex plus 0.4ex minus 0.2ex}
\setlength{\parindent}{1cm}
\addtolength{\hoffset}{-1cm}
\addtolength{\voffset}{-1cm}
\addtolength{\textheight}{2cm}
\addtolength{\textwidth}{1cm}
\setlength{\marginparwidth}{0pt}
\definecolor{col1}{HTML}{203753}
\definecolor{col2}{HTML}{BF9279}
\definecolor{col3}{HTML}{6BA998}
\definecolor{col4}{HTML}{708AA9}
\definecolor{col5}{HTML}{7B75AC}
\begin{document}
\section{Lorem ipsum}
\subsection{Lorem ipsum}
\lipsum[1-2]
\noindent
\begin{tikzpicture}
\node [text width=7.3cm,fill=col2,inner sep=0.2cm,rounded corners=2mm] {\toggleocgs{topico1}{\small\textit{Lorem ipsum}}};
\end{tikzpicture}
\noindent
\begin{tikzpicture}
\node [text width=7.3cm,fill=col3,inner sep=0.2cm,rounded corners=2mm] {\toggleocgs{alg1}{\small\textit{Lorem ipsum}}};
\end{tikzpicture}
\noindent
\begin{tikzpicture}
\node [text width=7.3cm,fill=col5,inner sep=0.2cm,rounded corners=2mm] {\toggleocgs{codigo1}{\small\textit{Lorem ipsum}}};
\end{tikzpicture}
\noindent
\begin{tikzpicture}[line width=2pt]
\node [text width=7.3cm,fill=white,draw=col2,inner sep=0.2cm,rounded corners=2mm] {\toggleocgs{exerc1}{\small\textit{Lorem ipsum}}};
\end{tikzpicture}
\rput(4,-9.5){
\begin{ocg}{topico1}{topico1}{0}
\begin{tikzpicture}
\node [text width=7.5cm,fill=col2,inner sep=0.2cm,rounded corners=2mm,minimum height=23.5cm,align=justify]{\small
\textit{\lipsum[1-2]}
};
\end{tikzpicture}
\end{ocg}}
\rput(4,-9.5){
\begin{ocg}{alg1}{alg1}{0}
\begin{tikzpicture}
\node [text width=7.5cm,fill=col3,inner sep=0.2cm,rounded corners=2mm,minimum height=23.5cm,align=justify]{\small
\textit{\lipsum[1-2]}
};
\end{tikzpicture}
\end{ocg}}
\rput(-4.5,-9.5){
\begin{ocg}{codigo1}{codigo1}{0}
\begin{tikzpicture}
\node [text width=7.5cm,fill=col5,inner sep=0.2cm,rounded corners=2mm,minimum height=23.5cm,align=justify]{\small
\textit{\lipsum[1-2]}
};
\end{tikzpicture}
\end{ocg}}
\rput(-4.3,-9.5){
\begin{ocg}{exerc1}{exerc1}{0}
\begin{tikzpicture}[line width=2pt]
\node [text width=7.5cm,fill=white,draw=col2,inner sep=0.2cm,rounded corners=2mm,minimum height=23.5cm,align=justify]{\small
\textit{\lipsum[1-2]}
};
\end{tikzpicture}
\end{ocg}}
\vspace{-1cm}
\section{Lorem ipsum}
\subsection{Lorem ipsum}
\lipsum[1-1]
\end{document}
答案1
我确定了解决部分问题的有效策略。
该命令的常用用法是“\rput[refpoint]{rotation}(x,y){stuff}”。refpoints 决定了 stuff 的参考点,取值为“t,b,B”(垂直参考点,分别表示“顶部”、“底部”和“基线”)和“l,r”(水平参考点,分别表示“左”和“右”)的组合。
纳入参考点后,所有 ocg 内容都位于同一站点(就我而言,我使用了 [tl]),并给出了相同的坐标。
希望这可以帮助遇到同样问题的人。