• Tidak ada hasil yang ditemukan

Field flags

Dalam dokumen Hypertext marks in LaTeX - Index of / (Halaman 120-128)

5049 \fi

5050 \fi

5051 \fi

5052 \fi

5053 \ifHy@activeanchor

5054 \anchor@spot

5055 \else

5056 \hyper@anchor{#1}%

5057 \fi

5058 \expandafter\put@me@back

5059 \fi

5060 \let\anchor@spot\@empty

5061}

5062\let\anchor@spot\ltx@empty

18 Compatibility with the L

A

TEX2html package

Map our macro names on to Nikos’, so that documents prepared for that system will work without change.

Note, however, that the whole complicated structure for segmenting documents is not supported; it is assumed that the user will loadhtml.styfirst, and thenhyperref.sty, so that the definitions inhtml.stytake effect, and are then overridden in a few circumstances by this package.

5063\let\htmladdimg\hyperimage

5064\def\htmladdnormallink#1#2{\href{#2}{#1}}

5065\def\htmladdnormallinkfoot#1#2{\href{#2}{#1}\footnote{#2}}

5066\def\htmlref#1#2{% anchor text, label

5067 \label@hyperref[{#2}]{#1}%

5068}

This is really too much. The LATEX2html package defines its own\hyperrefcommand, with a different syntax. Was this always here? Its weird, anyway. We interpret it in the

‘printed’ way, since we are about fidelity to the page.

5069\def\@@latextohtmlX{%

5070 \let\hhyperref\hyperref

5071 \def\hyperref##1##2##3##4{% anchor text for HTML

5072 % text to print before label in print

5073 % label

5074 % post-label text in print

5075 ##2\ref{##4}##3%

5076 }%

5077}

19 Forms creation

Allow for creation of PDF or HTML forms. The effects here are limited somewhat by the need to support both output formats, so it may not be as clever as something which only wants to make PDF forms.

I (Sebastian) could not have started this without the encouragement of T V Raman.

Each flag has a option name, an\ifswitch, and a bit position. The default is always

‘false’, the flag is clear. This is also the default of the switch created by\newif.

The names of the flags in the PDF specification (1.7) are used as lowercase option names.

\HyField@NewFlag #1: type:Fannot flags,Fffield flags

#2: PDF name

#3: PDF position

5079\def\HyField@NewFlag#1#2{%

5080 \lowercase{\HyField@NewOption{#2}}%

5081 \lowercase{\HyField@NewBitsetFlag{#2}}{#2}{#1}%

5082}

\HyField@NewFlagOnly

5083\def\HyField@NewFlagOnly#1#2{%

5084 \lowercase{\HyField@NewBitsetFlag{#2}}{#2}{#1}%

5085}

\HyField@NewOption #1: option name

5086\def\HyField@NewOption#1{%

5087 \expandafter\newif\csname ifFld@#1\endcsname

5088 \define@key{Field}{#1}[true]{%

5089 \lowercase{\Field@boolkey{##1}}{#1}%

5090 }%

5091}

\HyField@NewBitsetFlag Package ‘bitset’ uses zero based positions, the PDF specification starts with one.

#1: option

#2: PDF name

#3: type:Fannot flags,Fffield flags

#4: PDF position

5092\def\HyField@NewBitsetFlag#1#2#3#4{%

5093 \begingroup

5094 \count@=#4\relax

5095 \advance\count@\m@ne

5096 \def\x##1{%

5097 \endgroup

5098 \expandafter\def\csname HyField@#3@#1\endcsname{##1}%

5099 \expandafter\ifx\csname HyField@#3@##1\endcsname\relax

5100 \expandafter\edef\csname HyField@#3@##1\endcsname{%

5101 (\number#4) #2%

5102 }%

5103 \else

5104 \expandafter\edef\csname HyField@#3@##1\endcsname{%

5105 \csname HyField@#3@##1\endcsname

5106 /#2%

5107 }%

5108 \fi

5109 }%

5110 \expandafter\x\expandafter{\the\count@}%

5111}

\HyField@UseFlag The bit set isHyField@#1

5112\def\HyField@UseFlag#1#2{%

5113 \lowercase{\HyField@@UseFlag{#2}}{#1}%

5114}

\HyField@@UseFlag

5115\def\HyField@@UseFlag#1#2{%

5116 \bitsetSetValue{HyField@#2}{%

5117 \csname HyField@#2@#1\endcsname

5118 }{%

5119 \csname ifFld@#1\endcsname 1\else 0\fi

5120 }%

5121}

\HyField@SetFlag The bit set isHyField@#1

5122\def\HyField@SetFlag#1#2{%

5123 \lowercase{\HyField@@SetFlag{#2}}{#1}%

5124}

\HyField@@SetFlag

5125\def\HyField@@SetFlag#1#2{%

5126 \bitsetSetValue{HyField@#2}{%

5127 \csname HyField@#2@#1\endcsname

5128 }{1}%

5129}

\HyField@PrintFlags

5130\def\HyField@PrintFlags#1#2{%

5131 \ifHy@verbose

5132 \begingroup

5133 \let\Hy@temp\@empty

5134 \let\MessageBreak\relax

5135 \expandafter\@for\expandafter\x\expandafter:\expandafter=%

5136 \bitsetGetSetBitList{HyField@#1}\do{%

5137 \edef\Hy@temp{%

5138 \Hy@temp

5139 \csname HyField@#1@\x\endcsname\MessageBreak

5140 }%

5141 }%

5142 \edef\x{\endgroup

5143 \noexpand\Hy@Info{%

5144 Field flags: %

5145 \expandafter\ifx\@car#1\@nil S\else/\fi

5146 #1 %

5147 \bitsetGetDec{HyField@#1} %

5148 (0x\bitsetGetHex{HyField@#1}{32})\MessageBreak

5149 \Hy@temp

5150 for #2%

5151 }%

5152 }\x

5153 \fi

5154}

19.1.1 Declarations of field flags

“Table 8.70 Field flags common to all field types”

5155\HyField@NewFlag{Ff}{ReadOnly}{1}

5156\HyField@NewFlag{Ff}{Required}{2}

5157\HyField@NewFlag{Ff}{NoExport}{3}

“Table 8.75 Field flags specific to button fields”

5158\HyField@NewFlag{Ff}{NoToggleToOff}{15}

5159\HyField@NewFlag{Ff}{Radio}{16}

5160\HyField@NewFlag{Ff}{Pushbutton}{17}

5161\HyField@NewFlag{Ff}{RadiosInUnison}{26}

“Table 8.77 Field flags specific to text fields”

5162\HyField@NewFlag{Ff}{Multiline}{13}

5163\HyField@NewFlag{Ff}{Password}{14}

5164\HyField@NewFlag{Ff}{FileSelect}{21}% PDF 1.4

5165\HyField@NewFlag{Ff}{DoNotSpellCheck}{23}% PDF 1.4

5166\HyField@NewFlag{Ff}{DoNotScroll}{24}% PDF 1.4

5167\HyField@NewFlag{Ff}{Comb}{25}% PDF 1.4

5168\HyField@NewFlag{Ff}{RichText}{26}% PDF 1.5

“Table 8.79 field flags specific to choice fields”

5169\HyField@NewFlag{Ff}{Combo}{18}

5170\HyField@NewFlag{Ff}{Edit}{19}

5171\HyField@NewFlag{Ff}{Sort}{20}

5172\HyField@NewFlag{Ff}{MultiSelect}{22}% PDF 1.4

5173% \HyField@NewFlag{Ff}{DoNotSpellCheck}{23}% PDF 1.4

5174\HyField@NewFlag{Ff}{CommitOnSelChange}{27}% PDF 1.5 Signature fields are not supported.

Until 6.76i hyperref uses field option ‘combo’ to set three flags ‘Combo’, ‘Edit’, and

‘Sort’. Option ‘popdown’ sets flag ‘Combo’ only.

5175\newif\ifFld@popdown

5176\define@key{Field}{popdown}[true]{%

5177 \lowercase{\Field@boolkey{#1}}{popdown}%

5178}

Annotation flags. The form objects are widget annotations. There are two flags for readonly settings, the one in the annotation flags is ignored, instead the other in the field flags is used.

FlagPrintis not much useful, because hyperref do not use the appearance entry of the annotations for most fields.

5179\HyField@NewFlag{F}{Invisible}{1}

5180\HyField@NewFlag{F}{Hidden}{2}% PDF 1.2

5181\HyField@NewFlag{F}{Print}{3}% PDF 1.2

5182\HyField@NewFlag{F}{NoZoom}{4}% PDF 1.2

5183\HyField@NewFlag{F}{NoRotate}{5}% PDF 1.3

5184\HyField@NewFlag{F}{NoView}{6}% PDF 1.3

5185\HyField@NewFlag{F}{Locked}{8}% PDF 1.4

5186\HyField@NewFlag{F}{ToggleNoView}{9}% PDF 1.5

5187\HyField@NewFlag{F}{LockedContents}{10}% PDF 1.7

5188\ifHy@pdfa

5189 \def\HyField@PDFAFlagWarning#1#2{%

5190 \Hy@Warning{%

5191 PDF/A: Annotation flag ‘#1’ must\MessageBreak

5192 be set to ‘#2’%

5193 }%

5194 }%

5195 \Fld@invisiblefalse

5196 \def\Fld@invisibletrue{%

5197 \HyField@PDFAFlagWarning{invisible}{false}%

5198 }%

5199 \Fld@hiddenfalse

5200 \def\Fld@hiddentrue{%

5201 \HyField@PDFAFlagWarning{hidden}{false}%

5202 }%

5203 \Fld@printtrue

5204 \def\Fld@printfalse{%

5205 \HyField@PDFAFlagWarning{print}{true}%

5206 }%

5207 \Fld@nozoomtrue

5208 \def\Fld@nozoomfalse{%

5209 \HyField@PDFAFlagWarning{nozoom}{true}%

5210 }%

5211 \Fld@norotatetrue

5212 \def\Fld@norotatefalse{%

5213 \HyField@PDFAFlagWarning{norotate}{true}%

5214 }%

5215 \Fld@noviewfalse

5216 \def\Fld@noviewtrue{%

5217 \HyField@PDFAFlagWarning{noview}{false}%

5218 }%

5219\fi

Submit flags. Flag 1 Include/Exclude is not supported, use option noexport instead.

5220\HyField@NewFlag{Submit}{IncludeNoValueFields}{2}

5221\HyField@NewFlagOnly{Submit}{ExportFormat}{3}

5222\HyField@NewFlag{Submit}{GetMethod}{4}

5223\HyField@NewFlag{Submit}{SubmitCoordinates}{5}

5224\HyField@NewFlagOnly{Submit}{XFDF}{6}

5225\HyField@NewFlag{Submit}{IncludeAppendSaves}{7}

5226\HyField@NewFlag{Submit}{IncludeAnnotations}{8}

5227\HyField@NewFlagOnly{Submit}{SubmitPDF}{9}

5228\HyField@NewFlag{Submit}{CanonicalFormat}{10}

5229\HyField@NewFlag{Submit}{ExclNonUserAnnots}{11}

5230\HyField@NewFlag{Submit}{ExclFKey}{12}

5231\HyField@NewFlag{Submit}{EmbedForm}{14}

5232\define@key{Field}{export}{%

5233 \lowercase{\def\Hy@temp{#1}}%

5234 \@ifundefined{Fld@export@\Hy@temp}{%

5235 \@onelevel@sanitize\Hy@temp

5236 \Hy@Error{%

5237 Unknown export format ‘\Hy@temp’.\MessageBreak

5238 Known formats are ‘FDF’, ‘HTML’, ‘XFDF’, and ‘PDF’%

5239 }\@ehc

5240 }{%

5241 \let\Fld@export\Hy@temp

5242 }%

5243}

5244\def\Fld@export{fdf}

5245\@namedef{Fld@export@fdf}{0}%

5246\@namedef{Fld@export@html}{1}%

5247\@namedef{Fld@export@xfdf}{2}%

5248\@namedef{Fld@export@pdf}{3}%

19.1.2 Set submit flags

\HyField@FlagsSubmit

5249\def\HyField@FlagsSubmit{%

5250 \bitsetReset{HyField@Submit}%

5251 \ifcase\@nameuse{Fld@export@\Fld@export} %

5252 % FDF

5253 \HyField@UseFlag{Submit}{IncludeNoValueFields}%

5254 \HyField@UseFlag{Submit}{SubmitCoordinates}%

5255 \HyField@UseFlag{Submit}{IncludeAppendSaves}%

5256 \HyField@UseFlag{Submit}{IncludeAnnotations}%

5257 \HyField@UseFlag{Submit}{CanonicalFormat}%

5258 \HyField@UseFlag{Submit}{ExclNonUserAnnots}%

5259 \HyField@UseFlag{Submit}{ExclFKey}%

5260 \HyField@UseFlag{Submit}{EmbedForm}%

5261 \or % HTML

5262 \HyField@SetFlag{Submit}{ExportFormat}%

5263 \HyField@UseFlag{Submit}{IncludeNoValueFields}%

5264 \HyField@UseFlag{Submit}{GetMethod}%

5265 \HyField@UseFlag{Submit}{SubmitCoordinates}%

5266 \HyField@UseFlag{Submit}{CanonicalFormat}%

5267 \or % XFDF

5268 \HyField@SetFlag{Submit}{XFDF}%

5269 \HyField@UseFlag{Submit}{IncludeNoValueFields}%

5270 \HyField@UseFlag{Submit}{SubmitCoordinates}%

5271 \HyField@UseFlag{Submit}{CanonicalFormat}%

5272 \or % PDF

5273 \HyField@SetFlag{Submit}{SubmitPDF}%

5274 \HyField@UseFlag{Submit}{GetMethod}%

5275 \fi

5276 \HyField@PrintFlags{Submit}{submit button field}%

5277 \bitsetIsEmpty{HyField@Submit}{%

5278 \let\Fld@submitflags\ltx@empty

5279 }{%

5280 \edef\Fld@submitflags{/Flags \bitsetGetDec{HyField@Submit}}%

5281 }%

5282}

19.1.3 Set annot flags in fields

\HyField@FlagsAnnot

5283\def\HyField@FlagsAnnot#1{%

5284 \bitsetReset{HyField@F}%

5285 \HyField@UseFlag{F}{Invisible}%

5286 \HyField@UseFlag{F}{Hidden}%

5287 \HyField@UseFlag{F}{Print}%

5288 \HyField@UseFlag{F}{NoZoom}%

5289 \HyField@UseFlag{F}{NoRotate}%

5290 \HyField@UseFlag{F}{NoView}%

5291 \HyField@UseFlag{F}{Locked}%

5292 \HyField@UseFlag{F}{ToggleNoView}%

5293 \HyField@UseFlag{F}{LockedContents}%

5294 \HyField@PrintFlags{F}{#1}%

5295 \bitsetIsEmpty{HyField@F}{%

5296 \let\Fld@annotflags\ltx@empty

5297 }{%

5298 \edef\Fld@annotflags{/F \bitsetGetDec{HyField@F}}%

5299 }%

5300}

19.1.4 Pushbutton field

\HyField@FlagsPushButton

5301\def\HyField@FlagsPushButton{%

5302 \HyField@FlagsAnnot{push button field}%

5303 \bitsetReset{HyField@Ff}%

5304 \HyField@UseFlag{Ff}{ReadOnly}%

5305 \HyField@UseFlag{Ff}{Required}%

5306 \HyField@UseFlag{Ff}{NoExport}%

5307 \HyField@SetFlag{Ff}{Pushbutton}%

5308 \HyField@PrintFlags{Ff}{push button field}%

5309 \bitsetIsEmpty{HyField@Ff}{%

5310 \let\Fld@flags\ltx@empty

5311 }{%

5312 \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}%

5313 }%

5314}

19.1.5 Check box field

\HyField@FlagsCheckBox

5315\def\HyField@FlagsCheckBox{%

5316 \HyField@FlagsAnnot{check box field}%

5317 \bitsetReset{HyField@Ff}%

5318 \HyField@UseFlag{Ff}{ReadOnly}%

5319 \HyField@UseFlag{Ff}{Required}%

5320 \HyField@UseFlag{Ff}{NoExport}%

5321 \HyField@PrintFlags{Ff}{check box field}%

5322 \bitsetIsEmpty{HyField@Ff}{%

5323 \let\Fld@flags\ltx@empty

5324 }{%

5325 \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}%

5326 }%

5327}

19.1.6 Radio button field

\HyField@FlagsRadioButton

5328\def\HyField@FlagsRadioButton{%

5329 \HyField@FlagsAnnot{radio button field}%

5330 \bitsetReset{HyField@Ff}%

5331 \HyField@UseFlag{Ff}{ReadOnly}%

5332 \HyField@UseFlag{Ff}{Required}%

5333 \HyField@UseFlag{Ff}{NoExport}%

5334 \HyField@UseFlag{Ff}{NoToggleToOff}%

5335 \HyField@SetFlag{Ff}{Radio}%

5336 \HyField@UseFlag{Ff}{RadiosInUnison}%

5337 \HyField@PrintFlags{Ff}{radio button field}%

5338 \bitsetIsEmpty{HyField@Ff}{%

5339 \let\Fld@flags\ltx@empty

5340 }{%

5341 \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}%

5342 }%

5343}

19.1.7 Text fields

\HyField@FlagsText

5344\def\HyField@FlagsText{%

5345 \HyField@FlagsAnnot{text field}%

5346 \bitsetReset{HyField@Ff}%

5347 \HyField@UseFlag{Ff}{ReadOnly}%

5348 \HyField@UseFlag{Ff}{Required}%

5349 \HyField@UseFlag{Ff}{NoExport}%

5350 \HyField@UseFlag{Ff}{Multiline}%

5351 \HyField@UseFlag{Ff}{Password}%

5352 \HyField@UseFlag{Ff}{FileSelect}%

5353 \HyField@UseFlag{Ff}{DoNotSpellCheck}%

5354 \HyField@UseFlag{Ff}{DoNotScroll}%

5355 \ifFld@comb

5356 \ifcase0\ifFld@multiline

5357 \else\ifFld@password

5358 \else\ifFld@fileselect

5359 \else 1\fi\fi\fi\relax

5360 \Hy@Error{%

5361 Field option ‘comb’ cannot used together with\MessageBreak

5362 ‘multiline’, ‘password’, or ‘fileselect’%

5363 }\@ehc

5364 \else

5365 \HyField@UseFlag{Ff}{Comb}%

5366 \fi

5367 \fi

5368 \HyField@UseFlag{Ff}{RichText}%

5369 \HyField@PrintFlags{Ff}{text field}%

5370 \bitsetIsEmpty{HyField@Ff}{%

5371 \let\Fld@flags\ltx@empty

5372 }{%

5373 \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}%

5374 }%

5375}

19.1.8 Choice fields

\HyField@FlagsChoice

5376\def\HyField@FlagsChoice{%

5377 \HyField@FlagsAnnot{choice field}%

5378 \bitsetReset{HyField@Ff}%

5379 \HyField@UseFlag{Ff}{ReadOnly}%

5380 \HyField@UseFlag{Ff}{Required}%

5381 \HyField@UseFlag{Ff}{NoExport}%

5382 \HyField@UseFlag{Ff}{Combo}%

5383 \ifFld@combo

5384 \HyField@UseFlag{Ff}{Edit}%

5385 \fi

5386 \HyField@UseFlag{Ff}{Sort}%

5387 \HyField@UseFlag{Ff}{MultiSelect}%

5388 \ifFld@combo

5389 \ifFld@edit

5390 \HyField@UseFlag{Ff}{DoNotSpellCheck}%

5391 \fi

5392 \fi

5393 \HyField@UseFlag{Ff}{CommitOnSelChange}%

5394 \HyField@PrintFlags{Ff}{choice field}%

5395 \bitsetIsEmpty{HyField@Ff}{%

5396 \let\Fld@flags\ltx@empty

5397 }{%

5398 \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}%

5399 }%

5400}

Dalam dokumen Hypertext marks in LaTeX - Index of / (Halaman 120-128)

Dokumen terkait