Changes

Jump to navigation Jump to search
7,218 bytes added ,  18:55, 11 September 2021
import PDF metadata fields from other document
</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 =
\setupinteraction[state=start,focus=standard]
</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 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
 
<texcode>
["titledata"]={
["label"]="section",
["title"]="\\xmlatt{xml:name::4}{title}",
["userdata"]={
["usertitle"]=\\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 =
* [[PDF Bookmarks and HeadersURL]] are also a type : typesetting of interaction toolsURLs 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