是否可以使用乳胶在列表和等效树(均已编码)之间切换并使用可点击的链接在它们之间切换?
LaTeX 是否允许使用可点击的链接动态排版?
编辑1:下面的代码显示了一个列表及其等效树。
\documentclass[11pt]{article}
\usepackage{tikz}
\usepackage{verbatim}
\usetikzlibrary{trees}
\begin{document}
\tikzstyle{every node}=[draw=black,thick,anchor=west]
%\tikzstyle{selected}=[draw=red,fill=red!30]
%\tikzstyle{optional}=[dashed,fill=gray!50]
\begin{tikzpicture}[%
grow via three points={one child at (0.5,-0.7) and
two children at (0.5,-0.7) and (0.5,-1.4)},
edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}]
\node {texmf}
child { node {doc}}
child { node {fonts}}
child { node {source}}
child { node {tex}
child { node {generic}}
child { node {latex}}
child { node {plain}}
}
child [missing] {}
child [missing] {}
child [missing] {}
child { node {texdoc}};
\end{tikzpicture}
\begin{itemize}
\item texmf
\begin{itemize}
\item doc
\item fonts
\item source
\item tex
\begin{itemize}
\item generic
\item latex
\item plain
\end{itemize}
\item texdoc
\end{itemize}
\end{itemize}
\end{document}
输出:
我想要的是页面上有一个可点击的链接或按钮,可以在这两者之间切换(一次显示一个)。这在 LaTeX 中可以实现吗?
答案1
我们可以使用可选内容组(OCG 或层)实现这种动态:
\documentclass{article}
\usepackage{tikz}
\usepackage{verbatim}
\usetikzlibrary{trees}
\usepackage{eforms}
\usepackage[uselayers]{aeb_pro}
\begin{document}
\def\myTree{%
\tikzstyle{every node}=[draw=black,thick,anchor=west]
%\tikzstyle{selected}=[draw=red,fill=red!30]
%\tikzstyle{optional}=[dashed,fill=gray!50]
\begin{tikzpicture}[%
grow via three points={one child at (0.5,-0.7) and
two children at (0.5,-0.7) and (0.5,-1.4)},
edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}]
\node {texmf}
child { node {doc}}
child { node {fonts}}
child { node {source}}
child { node {tex}
child { node {generic}}
child { node {latex}}
child { node {plain}}
}
child [missing] {}
child [missing] {}
child [missing] {}
child { node {texdoc}};
\end{tikzpicture}
}
\def\myItem{%
\begin{itemize}
\item texmf
\begin{itemize}
\item doc
\item fonts
\item source
\item tex
\begin{itemize}
\item generic
\item latex
\item plain
\end{itemize}
\item texdoc
\end{itemize}
\end{itemize}
}
\pushButton[\CA{Press me to toggle}\autoCenter{n}%
\A{\JS{%
toggleSetThisLayer("myToggleA");
toggleSetThisLayer("myToggleB");
}}]{myBtn}{5cm}{12bp}
\bigskip
\begin{tabular}{ll}
\xBld[initState=on]{myToggleA}
\parbox{5cm}{\myTree}
\eBld
&
\xBld[initState=off]{myToggleB}
\parbox{5cm}{\myItem}
\eBld
\end{tabular}
\end{document}
技巧是将一个 OCG 的初始状态设置为“关闭”,另一个设置为“打开”。然后,您可以使用按钮在它们之间切换。
笔记:我使用的工作流程是:latex -> dvips -> distiller -> PDF
由于生成的 PDF 中实现了 JavaScript,因此需要基于 JS 的 PDF 查看器。Adobe Reader 表现最好。
这些软件包aeb_pro
和eforms
是在 CTAN 上找到的,并不是 TL 分发的一部分 - 但是是 TL 贡献的一部分。
编辑:
该aeb_pro
包附带一个aeb_pro.js
文件。此文件将保存到 Acrobat 应用程序的 JavaScripts 文件夹中。
由于我使用的是 Acrobat Pro DC,因此 JS 文件夹位于:
C:\Users\<username>\AppData\Roaming\Adobe\Acrobat\Privileged\2015\JavaScripts
如果特权文件夹不存在,使用子文件夹生成该文件夹2015\JavaScripts
对于旧版本,文件夹的位置JavaScripts
可能不同。
工作流程:使用命令行:
latex filename.tex
dvips filename.dvi
然后filename.ps
在工作文件夹中生成一个。
*.ps
使用 Distiller打开此 文件将生成一个 PDF。
这个过程肯定可以在您最喜欢的编辑器中自动实现。
笔记:蒸馏器总是要求绝对路径且不是相对的。
希望这可以帮助。
答案2
更加简单,更多便携的解决方案与包ocgx2
:
- 任何引擎:
[(pdf|lua|xe)]latex
-->不需要蒸馏器,ps2pdf
足以满足latex
+dvips
路线 - 没有嵌入 JavaScript --> 更好的可移植性(例如 Evince PDF 查看器)
- TeXLive 中所有必需的软件包(
eforms
,aeb_pro
非必需)
\documentclass{article}
\usepackage{tikz}
\usepackage{verbatim}
\usetikzlibrary{trees}
\usepackage{ocgx2}
\begin{document}
\newcommand\myTree{%
\tikzstyle{every node}=[draw=black,thick,anchor=west]
%\tikzstyle{selected}=[draw=red,fill=red!30]
%\tikzstyle{optional}=[dashed,fill=gray!50]
\begin{tikzpicture}[%
grow via three points={one child at (0.5,-0.7) and
two children at (0.5,-0.7) and (0.5,-1.4)},
edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}]
\node {texmf}
child { node {doc}}
child { node {fonts}}
child { node {source}}
child { node {tex}
child { node {generic}}
child { node {latex}}
child { node {plain}}
}
child [missing] {}
child [missing] {}
child [missing] {}
child { node {texdoc}};
\end{tikzpicture}
}
\newcommand\myItem{%
\begin{itemize}
\item texmf
\begin{itemize}
\item doc
\item fonts
\item source
\item tex
\begin{itemize}
\item generic
\item latex
\item plain
\end{itemize}
\item texdoc
\end{itemize}
\end{itemize}
}
\switchocg{tree list}{\fbox{Press me to toggle}}\\[2ex]
\begin{tabular}{ll}
\begin{ocg}{Tree}{tree}{on}
\parbox{5cm}{\myTree}
\end{ocg}
&
\begin{ocg}{List}{list}{off}
\parbox{5cm}{\myItem}
\end{ocg}
\end{tabular}
\end{document}