Changes

Jump to navigation Jump to search
7,268 bytes added ,  18:55, 11 September 2021
import PDF metadata fields from other document
  * [[Presentation effects]] and [[Presentations]]* see in [[Using Graphics| using graphics]] how to use movies.* [[Widgets]] (interactive elements, form fields etc.) and [[Interaction and button]]__TOC__
The {{cmd|setupinteraction}} command configures all interaction in the resulting PDF document. Basic interaction (meaning clickable links for references) is enabled using
</texcode>
This makes all links generated with the {{cmd|goto}} command (and indirectly the {{cmd|in}} and {{cmd|at}} commands) clickable. A page is dedicated to this system of '''[[References]]'''.
= Link coloring =
</texcode>
= PDF Bookmarks = == Quick start == For the impatient (like me), here is a complete example showing typical and useful commands, which are explained below: <texcode>\setupinteraction[state=start] % don't forget this line!% make chapter, section bookmarks visible when opening document\placebookmarks[chapter,section,subsection][chapter,section]\setupinteractionscreen[option=bookmark]\starttext\startchapter[title=The beginning]Hi!\stopchapter\startchapter[title={A very, very\\long title}]Greetings!\startsection[title=Why so long]I don't know\startsubsection[title=Why not?]Good point.\stopsubsection\stopsection\stopchapter\startchapter[title=The never-ending story]Oh no.\stopchapter\startchapter[title=The never-ending story, bookmark=Forever!]Oh no.\stopchapter\stoptext</texcode> == Explanation == You need to activate the interaction handling in order to see the bookmarks using {{cmd|setupinteraction|[state=start]}}. <texcode>\setupinteraction [state=start]</texcode> The bookmarks window is usually not visible by default. To have the bookmark window open automatically when the document is opened: <texcode>\setupinteractionscreen [option=bookmark] </texcode> ''Disclaimer:'' {{cmd|setupinteraction}} works with Adobe Reader/Acrobat, but other PDF viewers behave differently. E.g. xpdf v3.01 always opens the bookmark window. To get bookmarks for chapters, sections, and subsections, use: <texcode>\placebookmarks[chapter,section,subsection]</texcode> In the bookmark window, only chapter bookmarks are visible by default.If chapter and section bookmarks should be visible: <texcode>\placebookmarks [chapter,section,subsection] [chapter]</texcode> This will open the document with the bookmarks for chapters and sections visible (read as: and Headers open up the chapter bookmarks) The [[Titles|unnumbered headings]] ({{cmd|title}}, {{cmd|subject}} etc.) do '''not''' create bookmarks, even when listed in {{cmd|placebookmarks}}. In order to create the bookmarks, you need to add <code>force=yes</code>, for example like this: <texcode>\placebookmarks [title, subject] [force=yes]</texcode> If you do not like seeing the structure numbering in the bookmarks, you can add <code>number=no</code>, like this: <texcode>\placebookmarks [chapter,section] [chapter] [number=no]</texcode> == Unwanted output == With a long heading in a huge font, you might want to add linebreaks by hand. No problem, just use <tt>\\</tt>. The bookmark code ignores <tt>\\</tt>, so the bookmark itself won't have a linebreak.For example: <texcode>\setupinteraction[state=start]\placebookmarks[chapter]\setupinteractionscreen[option=bookmark]\starttext\startchapter[title=Long\\ title]hello\stopchapter\stoptext</texcode> ConTeXt attempts to replace commands inside bookmarks with an acceptable string. However, the result is not always optimal. To tweak ConTeXts behaviour, add specific commands to {{cmd|simplifiedcommands}}.  For example, to replace the <code>\CONTEXT</code> logo (which would normally become ''CONTEXT'') with a camel-cased version, use the following: <texcode> \appendtoks \def\CONTEXT{ConTeXt} \to \simplifiedcommands</texcode> A more general method, also usable for the above problem, is to use the <code>bookmark</code> option to specify the bookmark text explicitly. For example: <texcode>\setupinteraction[state=start]\placebookmarks[chapter]\setupinteractionscreen[option=bookmark]\starttext\startchapter[title=A very long chapter\\ about splines, bookmark=Splines]hello\stopchapter\stoptext</texcode> {{mkii|In mkii, such manual bookmarks used the {{cmd|bookmark}} command on a separate line following a {{cmd|chapter}} command. With the new {{cmd|startchapter}} command, this is no longer needed, nor recommended.}} == Private bookmarks == We can also place our own list of bookmarks: <texcode>\setupinteraction [state=start]\setupinteractionscreen [option=bookmark]\definelist [mylist]\placebookmarks [chapter,mylist] [chapter,mylist]\starttext \startchapter[title={My title}] \input knuth\page \bookmark[mylist]{Before input zapf}\input zapf \stopchapter\stoptext</texcode> == XML source =When processing XML input file information in TUC file is stored as the XML command with the reference to XML node
Refer to the dedicated <texcode>["titledata"]={ ["label"]="section", ["title"]="\\xmlatt{xml:name::4}{title}", [PDF Bookmarks and Headers"userdata"]={ ["usertitle"] page.=\\xmlatt{xml:name::4}{title}, }</texcode>
You have to expand the information to get the text in TUC file and subsequently in bookmarks by modifying sections:
<texcode>
\setuphead
[section]
[expansion=yes]
</texcode>
 
To expand userdata also, you can use <tt>\normalexpanded{\startsection[..,..=..,..][..,..=..,..]}</tt> instead of <tt>expansion=yes</tt>. They are not in conflict.
 
<texcode>
\normalexpanded{\startsection[title=\\xmlatt{xml:name::4}{title},
bookmark=\\xmlatt{xml:name::4}{title}]
[usertitle=\\xmlatt{xml:name::4}{title}]}
...
\stopsection
</texcode>
 
 
= PDF Headers and Custom Properties =
 
In order to add '''Author''', '''Title''', '''Keywords''', ... to PDF headers, use:
 
<texcode>
\setupinteraction
[state=start,
title={...},
author={...},
subtitle={...},
keyword={...}]
</texcode>
 
In order to add custom key-value properties in the PDF Document, use:
 
<texcode>
\pdfbackendsetinfo{foo}{bar}
</texcode>
 
== Prevent certain characters from appearing in pdf headers ==
 
To ignore certain TeX commands in {{cmd|setupinteraction}} add them to {{cmd|simplifiedcommands}}. For example, to ignore {{cmd|quad}} in <code>pdfauthor</code>, use the following
 
<texcode>
\appendtoks
\let\quad\space
\to \simplifiedcommands
 
\setupinteraction
[author={Author1\quad Author2}]
</texcode>
 
{{mkii|Accented characters like ''ä'', ''č'', ... will turn into their unaccented counterparts ''a'', ''c'', ... by default. If you want to prevent that, use
 
<texcode>
\input spec-tst
</texcode>
 
For example
 
<texcode>
\enableregime[utf]
 
\setupinteraction
[state=start]
\setupinteractionscreen
[option=bookmark]
 
% before \placebookmarks
\input spec-tst.tex
 
\placebookmarks
[chapter,section,subsection]
[chapter]
 
... and here is your document with accented characters in titles & bookmarks ...
 
</texcode>}}
 
== Import PDF metadata fields from other PDF documents==
 
Inspired by a [https://mailman.ntg.nl/pipermail/ntg-context/2021/103556.html reply from Hans], here is a minimal sample:
 
<texcode>
\starttext
\startluacode
function document.transfer_metadata(name)
local main_doc = lpdf.epdf.load(name)
lpdf.addtocatalog("Lang", lpdf.string(main_doc.Catalog.Lang))
lpdf.addtoinfo("Title", lpdf.unicode(main_doc.Info.Title))
lpdf.addtoinfo("Subject", lpdf.unicode(main_doc.Info.Subject))
lpdf.addtoinfo("Author", lpdf.unicode(main_doc.Info.Author))
lpdf.epdf.unload(name)
end
\stopluacode
\unexpanded\def\TransferMetadata#1%
{\ctxlua{document.transfer_metadata("#1")}}
\null
\TransferMetadata{name.pdf}
\stoptext
</texcode>
 
It also imports language to the PDF document (not to the document language).
 
= Further reading =
 
* [[URL]]: typesetting of URLs references.
* [[Presentations]], [[Presentation Styles]], [[SlideWithSteps]], [[Presentation effects]]
* [[Widgets]] (interactive elements, form fields etc.) and [[Interaction and button]]
* See in [[Using Graphics| using graphics]] how to use movies.
[[Category:Presentation]][[Category:Command/Interaction|Interaction]]
139

edits

Navigation menu