编辑

编辑

我想要\q{}多行,但现在它只设计为一行。例如,取值从 2 到每帧的最大行数。代码基于 Christian 的帖子答案创建可填写的 PDF

% https://tex.stackexchange.com/a/14845/13173
\documentclass{beamer}
\usetheme{Berkeley}

%https://tex.stackexchange.com/a/14845/13173
    \usepackage[latin1]{inputenc} 

    \newdimen\longline
    \longline=\textwidth\advance\longline-4cm

    \def\LayoutTextField#1#2{#2} % override default in hyperref

    \def\lbl#1{\hbox to 4cm{#1\dotfill\strut}}%
    \def\labelline#1#2{\lbl{#1}\vbox{\hbox{\TextField[name=#1,width=#2,bordercolor=white]{\null}}\kern2pt\hrule}} % https://tex.stackexchange.com/a/374712/13173

    \def\q#1{\hbox to \hsize{\labelline{#1}{\longline}}\vskip1.4ex}

\begin{document}

\section{Lorem}
\begin{frame}
  \begin{Form}
    \q{Merkki:} % TODO have here many lines
%   \q{}
%   \q{}
  \end{Form}
\end{frame}

\end{document}

图 1 中的输出

图 1 仅一行的输出

在此处输入图片描述

预期输出:输入多行(例如 3 行),并在另一个页面上显示输入

在一个环境中测试 UlrikeFisher 的提案

代码

\documentclass{beamer}
\usepackage[english]{babel}
\usetheme{Berkeley}

%\usepackage[margin=1pt]{geometry}% http://ctan.org/pkg/geometry % Beamer loads geometry already!

% https://tex.stackexchange.com/a/387474/13173
\usepackage{xparse,calc}
\usepackage{eforms}

\begin{document}

\begin{frame}{Henkil\"{o}tiedot}
 % #Henkilotiedot https://tex.stackexchange.com/a/387474/13173
 \medskip
 \textField[
    \Ff\FfMultiline
    \Ff\FfDoNotSpellCheck
           ]
  {myinput}{\dimexpr\linewidth-10ex}{5\baselineskip}
\end{frame}

% https://tex.stackexchange.com/a/385265/13173
\pdfpagewidth 21cm
\pdfpageheight 29.7cm

%% #Henkilotiedot
 \textField[
    \Ff\FfMultiline
    \Ff\FfDoNotSpellCheck
    \Ff\FfReadOnly
    \AA{\AACalculate{event.value=getField("myinput").value;}}
           ]
  {myoutput}{\dimexpr\linewidth-10ex}{5\baselineskip}

% https://tex.stackexchange.com/q/385438/13173
\newcommand*{\TableA}{%
%  \textcolor{gray}{\rule{.5\linewidth}{10cm}}%
    \begin{table}[hpt]
        \setlength\tabcolsep{1pt} % default value: 6pt % https://tex.stackexchange.com/a/201117/13173

        \begin{tabular}{|p{.2cm}|l|l|l|l|l|l|l|p{.2cm}|}
        \hline
        \rot{{\tiny\textbf{Avain muuttuja}}} 
        & \textbf{V2} & \textbf{V1} & \textbf{V0} 
            & \textbf{TESTI Muuttujat} 
            & \textbf{P1} & \textbf{P2} & \textbf{P3} 
            & \rot{{\tiny\textbf{Kriittinen muuttuja}}} \\ \hline
         &  &  &  & 1. Sosiaaliset taidot &  &  & & \\ \hline
         &  &  &  & 2. Ihmissuhteet (TS: K/E)* &  &  & & \\ \hline
         &  &  &  & 3. Ammatillinen arvio &  &  & & \\ \hline
        \end{tabular}
    \end{table}
}
\newcommand*{\TableB}{%
  \textcolor{red}{\rule{.5\linewidth}{3cm}}%
}
\newcommand*{\TableC}{%
  \textcolor{green}{\rule{.5\linewidth}{3cm}}%
}
\newcommand*{\TableD}{%
  \textcolor{blue}{\rule{.5\linewidth}{3cm}}%
}


% Show summary here from Page 1 and 2
\begingroup
\setbeamertemplate{navigation symbols}{}%remove navigation symbols
\section{Summary}
\begin{frame}[plain]
    \vskip 1.5cm
    \hspace*{-1.7cm}% to leave 1.0 cm margin
\begin{minipage}{19cm}
    \begin{center}
    TESTI
    \end{center}


    % Pisteytyskohta https://tex.stackexchange.com/q/385438/13173
    \begin{adjustbox}{max width=\textwidth}
        \sbox0{\TableA}%
        \noindent
        \vtop{%
          \kern0pt % Align at the top
          \copy0 %
        }%
        \kern-.2pt %
        \vrule
        \kern-.2pt %
        \vtop to \dimexpr\ht0+\dp0{%
          \kern0pt % Align at the top
          \hbox{\TableB}%
          \vfill
          \hbox{\TableC}%
          \vfill
          \hbox{\TableD}%
        }
    \end{adjustbox}

\end{minipage}
\end{frame}

% these below eventually are not needed, if this is the last slide of your document
\makeatletter
\pdfpagewidth \beamer@paperwidth
\pdfpageheight \beamer@paperheight
\makeatother
\endgroup

\end{document}

图2 页面设置受环境影响

在此处输入图片描述

操作系统:Debian 9
TeXLive:2017
Acrotex 安装:这里

答案1

你说的很多行是什么意思有点不清楚。但如果你想要一个多行文本字段,这里有一个电子表格示例。要将值发送到输出页面,你可以使用相同的字段名称(但你不能给它们不同的“只读”值),或者使用 javascript(这需要一个可以处理的 pdf 查看器):

\documentclass{beamer}
\usetheme{Berkeley}
\usepackage[utf8]{inputenc}
\usepackage{xparse,calc}
\usepackage{eforms}
\begin{document}
\begin{Form}
\begin{frame}{Input}
 Question:  Say something about ....

 \medskip

 \textField[
    \Ff\FfMultiline
    \Ff\FfDoNotSpellCheck
           ]
  {myinput}{\dimexpr\linewidth-10ex}{5\baselineskip}

\end{frame}
\begin{frame}{Output}


 \textField[
    \Ff\FfMultiline
    \Ff\FfDoNotSpellCheck
    \Ff\FfReadOnly
    \AA{\AACalculate{event.value=getField("myinput").value;}}
           ]
  {myoutput}{\dimexpr\linewidth-10ex}{5\baselineskip}

\end{frame}
\end{Form}
\end{document}

在此处输入图片描述

在此处输入图片描述

答案2

如果没有 Adob​​e Reader(或其他兼容的 PDF 查看器),我无法测试这一点。但是,根据通常的行为,这应该可以工作。此外,评论说,即使使用此处的命令包装器,这也能按预期工作。

基本上,如果您为两个文本字段提供相同的内容name,则填写其中一个字段会填充两个字段。我知道这一点,因为我从来不想要这种行为,有时我会不小心造成这种情况,但在课堂上发现我无法用不同的内容填写两个不同的文本字段。(当我进入第二张具有相同名称的字段的幻灯片时,该字段已预先填充了较早的答案。我可以删除它并写一个新的答案,但这会删除我在较早的幻灯片上输入的内容。)

但是,Okular 似乎不尊重这种行为,所以我无法检查将其包装在宏中是否正常工作。(Adobe 在 Linux 上崩溃得还来不及。嗯,首先它需要几个小时才能启动。然后它冻结了。然后它崩溃得还来不及。一般来说。它并不像人们想象的那样可预测。)

这是我对多个单行字段情况的原始回答。 (有关多个多行字段的情况,请参见下文。)

\documentclass{beamer}
\usetheme{Berkeley}
\usepackage[utf8]{inputenc}
\usepackage{xparse,calc}
\makeatletter
\newlength\textinput@labelwd
\newlength\textinput@fieldwd
\newlength\textinput@ht
\setlength\textinput@labelwd{40mm}
\setlength\textinput@fieldwd{\textwidth-40mm}
\setlength\textinput@ht{12pt}
\def\LayoutTextField#1#2{%
  \makebox[\textinput@labelwd]{\strut #1: \dotfill{} }#2%
}
\NewDocumentCommand\textinput{ s o +m }{%
  \IfValueTF{#2}{\edef\textinput@tempa{#2}}{\edef\textinput@tempa{#3}}%
  \IfBooleanTF{#1}{\edef\textinput@tempb{true}}{\def\textinput@tempb{false}}%
  \TextField[charsize={10pt},multiline=false,height=\textinput@ht,width={\textinput@fieldwd},name={\textinput@tempa},bordercolor={1 1 1},readonly=\textinput@tempb]{#3}%
}
\makeatother
\begin{document}
\begin{Form}
  \begin{frame}{Input}
  \textinput{Merkki}

  \textinput[qna]{Qn.~A}

  \textinput[qnb]{Qn.~B}

  \textinput[merkki2]{Merkki}
\end{frame}
\begin{frame}{Output}
  \textinput{Merkki}

  \textinput[qna]{Qn.~A}

  \textinput[qnb]{Qn.~B}

  \textinput[merkki2]{Merkki}
\end{frame}
\end{Form}
\end{document}

请注意,帧出现在同一个 中可能很重要Form。但是,我从未尝试Form在 中使用frame,所以我不能确定这一点。(我只是\begin{document}\begin{Form} ... \end{Form}\end{document}在 Beamer 演示文稿中一直这样做。)

以下是 Okular 的一张无用截图:

不具信息量的截图

编辑

这是一个多个多行字段的情况,这显然是这里想要的。

\documentclass{beamer}
\usetheme{Berkeley}
\usepackage[utf8]{inputenc}
\usepackage{xparse,calc,xcoffins}
\makeatletter
\newlength\textinput@labelwd
\newlength\textinput@fieldwd
\newlength\textinput@ht
\setlength\textinput@labelwd{40mm}
\setlength\textinput@fieldwd{\textwidth-40mm}
\setlength\textinput@ht{15mm}
\NewCoffin\textinputcoffin
\def\LayoutTextField#1#2{%
  \SetVerticalCoffin\textinputcoffin{\textinput@labelwd}{%
    \strut #1: \dotfill{} %
  }%
  \TypesetCoffin\textinputcoffin[t,l](0pt,\textinput@ht)#2%
}
\NewDocumentCommand\textinput{ s o +m }{%
  \IfValueTF{#2}{\edef\textinput@tempa{#2}}{\edef\textinput@tempa{#3}}%
  \IfBooleanTF{#1}{\edef\textinput@tempb{true}}{\def\textinput@tempb{false}}%
  \TextField[charsize={10pt},multiline=true,height=\textinput@ht,width={\textinput@fieldwd},name={\textinput@tempa},bordercolor={1 1 1},readonly=\textinput@tempb]{#3}%
}
\makeatother
\begin{document}
\begin{Form}
  \begin{frame}{Input}
  \textinput{Merkki}

  \textinput[qna]{Qn.~A}

  \textinput[qnb]{Qn.~B}

  \textinput[merkki2]{Merkki}
\end{frame}
\begin{frame}{Output}
  \textinput{Merkki}

  \textinput[qna]{Qn.~A}

  \textinput[qnb]{Qn.~B}

  \textinput[merkki2]{Merkki}
\end{frame}
\end{Form}
\end{document}

Okular 的截图同样没有任何信息量:

另一张没有提供任何信息的截图

请注意,Okular 确实显示了字段,但没有在屏幕截图中显示。

相关内容