在 pspicture 环境中使用 \TextField

在 pspicture 环境中使用 \TextField

下面是一个 MWE,展示了我的一个问题。

代码

\DocumentMetadata{}

\documentclass{article}

\usepackage{multido}
\usepackage{pstricks}
\usepackage{hyperref}

\psset{dimen = m}

\def\skala{0.7}
\def\vandret(#1,#2)#3{%
  \multido
    {\i = #1+1}
    {#3}
    {\psframe
      (\fpeval{\skala*(\i-1)},\fpeval{\skala*(#2-1)})%
      (\fpeval{\skala*\i},\fpeval{\skala*#2})}}
%\def\lodret(#1,#2)#3{%
%  \multido
%    {\i = #2+-1}
%    {#3}
%    {\psframe
%       (\fpeval{\skala*(#1-1)},\fpeval{\skala*(\i-1)})%
%       (\fpeval{\skala*#1},\fpeval{\skala*\i})}}

\def\DefaultHeightofText{\skala cm}
\def\DefaultWidthofText{\skala cm}

\begin{document}

\begin{Form}
\begin{figure}
 \centering
  \begin{pspicture}(\fpeval{\skala*17},\fpeval{\skala*15})
    \vandret(1,9){8}
    \rput(1,9){\TextField{}}
  \end{pspicture}
\end{figure}
\end{Form}

\end{document}

问题

我想\TextField使用hyperref以便能够以交互方式填写填字游戏。我该如何实现呢?

上述代码只是将文本字段放在了 的左下角pspicture

我使用 进行编译lualatex,以防万一。

PS 请随意改进我混乱的代码。

更新

更新输出

从屏幕截图中可以看出,左侧的框(没有交互式文本字段)完全重叠,而右侧的框(有交互式文本字段)则没有完全重叠。

这是我的文档的完整代码:

\DocumentMetadata{}

\documentclass[
  a4paper,
  12pt,
  danish
]{article}


%%%%%%%%%%%%%%%%
%%            %%
%%   Pakker   %%
%%            %%
%%%%%%%%%%%%%%%%


% Skrifttype for tekst.
\usepackage{fontspec}
\setmainfont[
  NFSSFamily     = tgp,
  Extension      = .otf,
  UprightFont    = *-Regular,
  BoldFont       = *-Bold,
  ItalicFont     = *-Italic,
  BoldItalicFont = *-BoldItalic,
  Ligatures      = {
    TeX,
    CommonOff
  }
]{texgyrepagella}

% Skrifttype for matematik.
\usepackage[
  math-style = TeX
]{unicode-math}
\setmathfont{texgyrepagella-math.otf}
\setmathfont[
  version  = bold,
  FakeBold = 4
]{texgyrepagella-math.otf}

% Fiks for størrelsen af cifre i matematik.
\DeclareSymbolFont{textdigits}{TU}{tgp}{m}{n}
\SetSymbolFont{textdigits}{bold}{TU}{tgp}{b}{n}
\Umathcode`0="7 \symtextdigits `0
\Umathcode`1="7 \symtextdigits `1
\Umathcode`2="7 \symtextdigits `2
\Umathcode`3="7 \symtextdigits `3
\Umathcode`4="7 \symtextdigits `4
\Umathcode`5="7 \symtextdigits `5
\Umathcode`6="7 \symtextdigits `6
\Umathcode`7="7 \symtextdigits `7
\Umathcode`8="7 \symtextdigits `8
\Umathcode`9="7 \symtextdigits `9

% Sprog.
\usepackage{polyglossia}
\setdefaultlanguage{danish}

% Flere kolonner i dokumentet.
\usepackage{multicol}

% Specificerer marginer og lignende for dokumentet.
\usepackage[
  hmargin = 2.4cm,
  vmargin = 3cm
]{geometry}

% Muliggører eget design af sidehoved og -fod.
\usepackage{fancyhdr}

% Antal sider.
\usepackage[
  lastpage
]{zref}

% Baggrundsmateriale.
\usepackage[
  firstpage = true
]{background}

% Placering af floats.
\usepackage{float}

% Forløkker.
\usepackage{multido}

% Intern vektorgrafik.
\usepackage{pstricks}

% Interaktive krydsreferencer med mere.
\usepackage{hyperref}


%%%%%%%%%%%%%%%%%
%%             %%
%%   Makroer   %%
%%             %%
%%%%%%%%%%%%%%%%%


% Afgør, om dokumentet skal udskrives eller læses på en computerskærm.
\newif\ifprint
%\printfalse % Skærmlæsning.
\printtrue  % Papirlæsning.

% Opsætning af pakker.
% ``pstricks''
\psset{
  dimen = m
}
% ``hyperref''
\makeatletter
\@ifpackageloaded{hyperref}{
  \ifprint
    % Papirlæsning.
    \hypersetup{
      pdftitle = {Kryds og tværs om vands tilstandsformer},
      pdfauthor = {Mads Sørensen},
      pdfsubject = {Fysik/kemi},
      pdfstartview = FitH,
      bookmarksopen = true,
      bookmarksopenlevel = 1,
      hidelinks
    }
  \else
    % Skærmlæsning.
    \hypersetup{
      pdftitle = {Kryds og tværs om vands tilstandsformer},
      pdfauthor = {Mads Sørensen},
      pdfsubject = {Fysik/kemi},
      pdfstartview = FitH,
      bookmarksopen = true,
      bookmarksopenlevel = 1,
      colorlinks = true,
      citecolor = blue,
      linkcolor = red,
      urlcolor = teal
    }
  \fi
}{}
\makeatother

% Baggrundsmateriale.
\backgroundsetup{
  contents = Navn: \underline{\hspace{10em}},
  scale = 1,
  color = black,
  angle = 0,
  opacity = 1,
  position = current page.north west,
  vshift = -2cm,
  hshift = 5.13cm
}

% Automatisk placering af floats.
\makeatletter
  \providecommand*\floatlocation[2]{\@namedef{fps@#1}{#2}}
\makeatother
\floatlocation{figure}{H}

% Letter notationen.
\def\skala{0.93}
\def\DefaultHeightofText{\skala cm}
\def\DefaultWidthofText{\skala cm}

\def\vandret(#1,#2)#3{%
  \multido
    {\i = #1+1}
    {#3}
    {\psframe
      (\fpeval{\skala*(\i-1)},\fpeval{\skala*(#2-1)})%
      (\fpeval{\skala*\i},\fpeval{\skala*#2})}}
\def\lodret(#1,#2)#3{%
  \multido
    {\i = #2+-1}
    {#3}
    {\psframe
       (\fpeval{\skala*(#1-1)},\fpeval{\skala*(\i-1)})%
       (\fpeval{\skala*#1},\fpeval{\skala*\i})}}
\def\bogstav(#1,#2)#3{%
  \rput(\fpeval{\skala*(#1-0.5)},\fpeval{\skala*(#2-0.5)})
       {\MakeUppercase{#3}}}
\newcommand*\ord[1]{%
  \raisebox{0.4ex}{$\scriptscriptstyle\bullet$}\enskip\text{\MakeUppercase{#1}}}
\def\skrivefelt(#1,#2)#3{%
  \put(\fpeval{\skala*(#1-1)},\fpeval{\skala*(#2-1)})
      {\TextField[
         borderwidth = \pslinewidth,
         bordercolor = 0 0 0,
         align = 1,
         name = #3
       ]{}}}

% Opsætning af sidehoved og -fod.
\pagestyle{fancy}
\renewcommand*\headrulewidth{0pt}
\setlength\headheight{14.5pt}
\makeatletter
\zref@newprop*{numpage}{\the\value{page}}
\zref@addprop{main}{numpage}
\fancyhf{}
\fancyfoot[C]{%
  \ifnum \zref@extractdefault{LastPage}{numpage}{0} > 1
    \thepage
  \fi
    %
}
\makeatother


%%%%%%%%%%%%%%%%%%%%%%%%%%
%%                      %%
%%   Selve dokumentet   %%
%%                      %%
%%%%%%%%%%%%%%%%%%%%%%%%%%


\begin{document}

\begin{center}
  \bfseries
  \huge
  Vands tilstandsformer
\end{center}
\vspace{8ex}

\noindent
Indsæt ordene i skemaet nedenfor.

\begin{alignat*}{2}
  &\ord{is}       &\qquad\quad &\ord{kogepunkt}  \\
  &\ord{gas}      &            &\ord{smeltning}  \\
  &\ord{fast}     &            &\ord{størkning}  \\
  &\ord{vand}     &            &\ord{fortætning} \\
  &\ord{afkøling} &            &\ord{opvarmning} \\
  &\ord{flydende} &            &\ord{smeltepunkt}\\
  &\ord{vanddamp} &            &
\end{alignat*}
\begin{figure}
 \centering
  \begin{pspicture}(\fpeval{\skala*17},\fpeval{\skala*15})
%    \vandret(7,15){11}
    \multido
      {\iA = 7+1,
       \iB = 1+1}
      {11}
      {\skrivefelt(\iA,15){vA\iB}}
%    \vandret(9,13){8}
    \multido
      {\iA = 9+1,
       \iB = 1+1}
      {8}
      {\skrivefelt(\iA,13){vB\iB}}
%    \vandret(1,9){8}
    \multido
      {\iA = 1+1,
       \iB = 1+1}
      {8}
      {\skrivefelt(\iA,9){vC\iB}}
    
    \vandret(5,6){9}
    \vandret(2,3){9}
    \vandret(8,1){3}
    \lodret(1,9){4}
    \lodret(2,5){4}
    \lodret(3,15){10}
    \lodret(5,7){2}
    \lodret(8,10){10}
    \lodret(10,13){11}
    \lodret(12,11){8}
    \lodret(16,15){9}
%    \bogstav(10,13){f}
%    \bogstav(10,12){o}
%    \bogstav(10,11){r}
%    \bogstav(10,10){d}
%    \bogstav(10,9){a}
%    \bogstav(10,8){m}
%    \bogstav(10,7){p}
%    \bogstav(10,6){n}
%    \bogstav(10,5){i}
%    \bogstav(10,4){n}
%    \bogstav(10,3){g}
  \end{pspicture}
\end{figure}

\end{document}

答案1

使用

\put(1,9){\TextField[name=blub]{}}

代替\rput

在此处输入图片描述

或者对于多个文本字段:

\put(1,9){\multido{\iA=1+1}{6}{\TextField[name=blub\iA,align=1]{}}}

在此处输入图片描述

相关内容