Using command line values in a TeX document; writing a script?
Currently, I process a file like this: mtxrun --autogenerate --script context test12.tex and in the file test12.tex one sees something like this: \input archimate-mp \ctxlua{moduledata.archimate(“myarchimatefile.xml")} The latter parses the xml file and produces a PDF using generated MP code. What I would like to do is not have to edit the .tex file when I want to process another .xml file but just pass the name of the xml file on the command line. And I would like to pass on a second filename with some local overrides settings fr my code. All of this needs to be data that I can use in my programming. E.g. something like: mtxrun --autogenerate --script myscriptname “ myarchimatefile.xml” “myhelper.xml" It is OK that this would produce a fixed name output file (e.g. myparsedxml.pdf), so it is OK to have some generic myparsedxml.tex (instead of test12.tex as per my example) file that produces a .pdf and more in the current working directory but resides somewhere in a generic place. But preferably, this would produce myarchimatefile.pdf I’ve read the manual on mtxrun scripts to see if I can make my own, but I’m utterly failing to understand what is written in a way that let me write my own. G
Hi Gerben, What you want is quite easy to do since you are using lua already. Try this: % context --whatever=green test with test.tex: \starttext \startluacode table.print(environment.arguments) \stopluacode \stoptext everything from the command line ends up in environment.arguments. Best wishes, Taco
This helps for adding information to my processing. What I was also looking for is that I don’t have a test.tex anymore, just the XML file I am parsing and a command line action. So, I use mtxrun, give it the name of an XML. lua code (using a ’script’ somewhere?) reads the XML, extracts a name (e.g. ‘foo’) from it, creates a .tex file (e.g. ‘foo.tex’), produces a .pdf file from that .tex file (e.g. ‘foo.pdf'). G
On 14 Apr 2020, at 09:16, Taco Hoekwater
wrote: Hi Gerben,
What you want is quite easy to do since you are using lua already. Try this:
% context --whatever=green test
with test.tex:
\starttext \startluacode table.print(environment.arguments) \stopluacode \stoptext
everything from the command line ends up in environment.arguments.
Best wishes, Taco ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________
On 14 Apr 2020, at 11:25, Gerben Wierda
wrote: This helps for adding information to my processing.
What I was also looking for is that I don’t have a test.tex anymore, just the XML file I am parsing and a command line action.
So, I use mtxrun, give it the name of an XML. lua code (using a ’script’ somewhere?) reads the XML, extracts a name (e.g. ‘foo’) from it, creates a .tex file (e.g. ‘foo.tex’), produces a .pdf file from that .tex file (e.g. ‘foo.pdf').
When processing XML, I normally use context —environment=whatever.tex file.xml with whatever.tex being a mix of tex and lua to setup and process the XML directly, perhaps including other XML files as needed. But when you need to extract stuff and rename files, a Makefile or shell script comes more naturally (at least for me). Taco
On 14 Apr 2020, at 11:52, Taco Hoekwater
wrote: On 14 Apr 2020, at 11:25, Gerben Wierda
wrote: This helps for adding information to my processing.
What I was also looking for is that I don’t have a test.tex anymore, just the XML file I am parsing and a command line action.
So, I use mtxrun, give it the name of an XML. lua code (using a ’script’ somewhere?) reads the XML, extracts a name (e.g. ‘foo’) from it, creates a .tex file (e.g. ‘foo.tex’), produces a .pdf file from that .tex file (e.g. ‘foo.pdf').
When processing XML, I normally use
context —environment=whatever.tex file.xml
with whatever.tex being a mix of tex and lua to setup and process the XML directly, perhaps including other XML files as needed.
But this means that the whatever.tex file needs to exist beforehand and the result is whatever.pdf I want the actual PDF to be produced have a name that comes from the XML I am processing and thus the whatever.tex file be created by lua. There is no whatever.tex file before I run the command. Pre-command: XML: contains file name “foo” there is no .tex file Command: produces foo.tex (gets the name from the XML) and “foo.pdf" G
But when you need to extract stuff and rename files, a Makefile or shell script comes more naturally (at least for me).
Taco ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________
Gerben Wierda schrieb am 15.04.2020 um 12:19:
On 14 Apr 2020, at 11:52, Taco Hoekwater
wrote: On 14 Apr 2020, at 11:25, Gerben Wierda
wrote: This helps for adding information to my processing.
What I was also looking for is that I don’t have a test.tex anymore, just the XML file I am parsing and a command line action.
So, I use mtxrun, give it the name of an XML. lua code (using a ’script’ somewhere?) reads the XML, extracts a name (e.g. ‘foo’) from it, creates a .tex file (e.g. ‘foo.tex’), produces a .pdf file from that .tex file (e.g. ‘foo.pdf'). When processing XML, I normally use
context —environment=whatever.tex file.xml
with whatever.tex being a mix of tex and lua to setup and process the XML directly, perhaps including other XML files as needed. But this means that the whatever.tex file needs to exist beforehand and the result is whatever.pdf
I want the actual PDF to be produced have a name that comes from the XML I am processing and thus the whatever.tex file be created by lua. There is no whatever.tex file before I run the command.
Pre-command: XML: contains file name “foo” there is no .tex file
Command: produces foo.tex (gets the name from the XML) and “foo.pdf"
The TeX file in Tacos example contains the xmlsetup entries which are used to map the XML tags to ConTeXt commands and environment, the resulting PDF file has the same name as the XML file. Wolfgang
On 15 Apr 2020, at 13:54, Wolfgang Schuster
wrote: Gerben Wierda schrieb am 15.04.2020 um 12:19:
On 14 Apr 2020, at 11:52, Taco Hoekwater
wrote: On 14 Apr 2020, at 11:25, Gerben Wierda
wrote: This helps for adding information to my processing.
What I was also looking for is that I don’t have a test.tex anymore, just the XML file I am parsing and a command line action.
So, I use mtxrun, give it the name of an XML. lua code (using a ’script’ somewhere?) reads the XML, extracts a name (e.g. ‘foo’) from it, creates a .tex file (e.g. ‘foo.tex’), produces a .pdf file from that .tex file (e.g. ‘foo.pdf'). When processing XML, I normally use
context —environment=whatever.tex file.xml
with whatever.tex being a mix of tex and lua to setup and process the XML directly, perhaps including other XML files as needed. But this means that the whatever.tex file needs to exist beforehand and the result is whatever.pdf
I want the actual PDF to be produced have a name that comes from the XML I am processing and thus the whatever.tex file be created by lua. There is no whatever.tex file before I run the command.
Pre-command: XML: contains file name “foo” there is no .tex file
Command: produces foo.tex (gets the name from the XML) and “foo.pdf"
The TeX file in Tacos example contains the xmlsetup entries which are used to map the XML tags to ConTeXt commands and environment, the resulting PDF file has the same name as the XML file.
That is different from the resulting PDF file has the name of an entry/field in the XML file. So, what I am looking for is: command foo.xml which results in bar.pdf where ‘bar’ is text in foo.xml G
Wolfgang
Gerben,
I do not know if it is possible with Context.
But this definitely works with an xsl operation.
You will need an xsl file like this:
myxslfile.xsl:
<?xml version="1.0" encoding="UTF-8"?>
Op 15 apr. 2020, om 14:13 heeft Gerben Wierda
het volgende geschreven: On 15 Apr 2020, at 13:54, Wolfgang Schuster
mailto:wolfgang.schuster.lists@gmail.com> wrote: Gerben Wierda schrieb am 15.04.2020 um 12:19:
On 14 Apr 2020, at 11:52, Taco Hoekwater
mailto:taco@elvenkind.com> wrote: On 14 Apr 2020, at 11:25, Gerben Wierda
mailto:gerben.wierda@rna.nl> wrote: This helps for adding information to my processing.
What I was also looking for is that I don’t have a test.tex anymore, just the XML file I am parsing and a command line action.
So, I use mtxrun, give it the name of an XML. lua code (using a ’script’ somewhere?) reads the XML, extracts a name (e.g. ‘foo’) from it, creates a .tex file (e.g. ‘foo.tex’), produces a .pdf file from that .tex file (e.g. ‘foo.pdf'). When processing XML, I normally use
context —environment=whatever.tex file.xml
with whatever.tex being a mix of tex and lua to setup and process the XML directly, perhaps including other XML files as needed. But this means that the whatever.tex file needs to exist beforehand and the result is whatever.pdf
I want the actual PDF to be produced have a name that comes from the XML I am processing and thus the whatever.tex file be created by lua. There is no whatever.tex file before I run the command.
Pre-command: XML: contains file name “foo” there is no .tex file
Command: produces foo.tex (gets the name from the XML) and “foo.pdf"
The TeX file in Tacos example contains the xmlsetup entries which are used to map the XML tags to ConTeXt commands and environment, the resulting PDF file has the same name as the XML file.
That is different from
the resulting PDF file has the name of an entry/field in the XML file.
So, what I am looking for is:
command foo.xml
which results in
bar.pdf
where ‘bar’ is text in foo.xml
G
Wolfgang
___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________
On 4/14/2020 11:25 AM, Gerben Wierda wrote:
This helps for adding information to my processing.
What I was also looking for is that I don’t have a test.tex anymore, just the XML file I am parsing and a command line action.
So, I use mtxrun, give it the name of an XML. lua code (using a ’script’ somewhere?) reads the XML, extracts a name (e.g. ‘foo’) from it, creates a .tex file (e.g. ‘foo.tex’), produces a .pdf file from that .tex file (e.g. ‘foo.pdf').
G
On 14 Apr 2020, at 09:16, Taco Hoekwater
wrote: Hi Gerben,
What you want is quite easy to do since you are using lua already. Try this:
% context --whatever=green test
with test.tex:
\starttext \startluacode table.print(environment.arguments) \stopluacode \stoptext
everything from the command line ends up in environment.arguments. \doifdocumentargument {whatever} { ... \getdocumentargument{whatever} ... }
----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
participants (5)
-
Gerben Wierda
-
Hans Hagen
-
r.ermers@hccnet.nl
-
Taco Hoekwater
-
Wolfgang Schuster