[NTG-context] using modeset

Wolfgang Schuster wolfgang.schuster.lists at gmail.com
Thu Jun 11 11:34:27 CEST 2020


Jan Willem Flamma schrieb am 11.06.2020 um 10:41:
> Dear list members,
> 
> I write training manuals and use the Modes mechanism a lot to create 
> documents at various competency levels using a single set of source 
> files. So far the manuals have been written in English but now a 
> separate Dutch translation has to be created.
> 
> It is important that the two manuals are setup similarly so the 
> section/subsection numbers and question numbers are the same in the 
> English manual and the Dutch manual. Note: I do not intend to create a 
> manual that has the English and Dutch text at opposite sides (as can be 
> done using streams)
> 
> I’m keen to continue using a single set of source files and thought it 
> would be best to simply type the translated sections and subsections 
> just below the original English sections and subsections using modeset. 
> This gives me the option of creating an English case and a Dutch case. 
> Within this two cases I would still apply all sorts of other modes using 
> \startmode and \doifmode.
> 
> Duplication is unavoidable but it would make sense to try and re-use the 
> existing structural elements such as \startsection \startsubsection 
> \placefigure etc as much as possible. After all, only the title and 
> caption text needs to be translated.
> 
> I tried doing this but in the case of \startchapter using a \doifmode 
> but the PDF bookmarks text is not correctly generated.

You need

\enabledirectives[references.bookmarks.preroll]

in your setup files to get the correct text in the bookmarks.

> I also tried placing a figure in between 2 modeset cases but this does 
> not work.
> 
> See attached .tex file.

A alternative to modes is the selector mechanism to choose between 
different arguments.

\setupinteraction[state=start]

\placebookmarks

\enabledirectives[references.bookmarks.preroll]

\defineselector [language] [max=2,n=1]

\startmode[en]
     \setupselector[language][n=1]
\stopmode

\startmode[nl]
     \setupselector[language][n=2]
\stopmode

\starttext

\placecontent

\section{\select{language}{English section title}{Dutch section title}}

\startplacefigure[title=\select{language}{English float title}{Dutch 
float title}]
     \externalfigure[dummy]
\stopplacefigure

\stoptext

> Finally in the attached PDF below, I noticed that a double space appears 
> depending on the position of the text and curly bracket. Is this intended?

Yes because you add spaces between the braces and the text which appear 
in the output.

\startmodeset
     [...] {<space>
         ...<space>
     }
     [...] {<space>
         ...<space>
     }
\stopmodeset

> Questions:
> 
>   * Is the modeset mechanism indeed the best way forward or are there
>     better ways to achieve the desired outcome?
>   * How can I re-use the existing ConTeXt code as much as possible and
>     still have the correct English and Dutch title and caption text for
>     all the structural elements and floats.

There are different ways with pros and contras:

   - But the english and dutch texts for each section in separate files
   - Use buffers for each paragraph and load the one you need
   - Store the texts in variables and flush the ones you need
   - Use XML as input and tags your texts which you can filter
   - ...

Wolfgang


More information about the ntg-context mailing list