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