diff options
Diffstat (limited to 'macros/plain/contrib')
-rw-r--r-- | macros/plain/contrib/xintsession/README.md | 37 | ||||
-rw-r--r-- | macros/plain/contrib/xintsession/xintsession.tex | 20 |
2 files changed, 34 insertions, 23 deletions
diff --git a/macros/plain/contrib/xintsession/README.md b/macros/plain/contrib/xintsession/README.md index 4b9e918a82..a062562b67 100644 --- a/macros/plain/contrib/xintsession/README.md +++ b/macros/plain/contrib/xintsession/README.md @@ -1,6 +1,6 @@ # xintsession README # -Release: 0.3 (2021-05-31) +Release: 0.3a (2021-06-08) ## Usage ## @@ -8,27 +8,29 @@ xintsession.tex is to be used with etex (or pdftex or the other engines with Plain as preloaded format) *interactively on the command line*. It will load [xintexpr](http://www.ctan.org/pkg/xint) and -[polexpr](http://www.ctan.org/pkg/polexpr) -(its version `0.8` or later is needed). +[polexpr](http://www.ctan.org/pkg/polexpr). To start a session: -1. execute `etex xintsession`, or if available, `rlwrap etex xintsession` +1. Execute `etex xintsession`, or if available, `rlwrap etex xintsession` to benefit from arrow keys navigation and other improvements such - as parentheses highlighting. + as parentheses highlighting.\ + \ Alternatively, execute `rlwrap etex` and enter `xintsession` at the `**` - prompt. - One can also use the `-jobname` option of `etex` at this step. -2. an `>>>` invite appears, start entering input, terminate it via `;`. - You can say `&help` for help. + prompt.\ + \ + One can also use the `-jobname` option of `etex` at this step.\ + \ + At my locale I added `alias xs="rlwrap etex xintsession"` to my `.bashrc` + so I only have to type `xs` at the command line. +2. An `>>>` invite appears, and computations can begin!\ + \ + Start entering input, terminate it via a semi-colon `;`. + Say `&help` for help and `&bye` to quit. The above explanations have been tested on a Unixen (Mac OS), and probably `rlwrap` is not available on all platforms, but it is not a requirement. -At my locale I added `alias xs="rlwrap etex xintsession"` to my `.bashrc` -so I only have to type `xs` at the command line. - -You are now ready to make computations! Here is a sample session (spaces do not matter): >>> 1+1/2+1/3+1/4+1/5; @@ -60,8 +62,8 @@ Here is a sample session (spaces do not matter): As this example illustrates, the computational engine can work in various modes: exact, fp, int, and pol. Say `&fp=number` at the -`>>>` prompt -to activate floating point mode with "Digits" set to `number`. +`>>>` prompt to activate floating point mode with `number` digits +of precision. If ill-formed input drops you deep into TeX error interaction mode, try hitting `S` as it may work to bring you back to normal session. @@ -70,6 +72,11 @@ For additional explanations, enter `&help` at the `>>>` prompt. ## Change log ## +- 0.3a (2021-06-08) + - fix extremely weird `0.3` breakage of user function definition + interface, caused by last line being `\endinput\xintsession`, + and the latter using `\scantokens` in certain circumstances + - fix extra `(` in a help panel - 0.3 (2021-05-31) - implement `>>>` primary and `...` secondary invite prompts - breaking: rename `\xintresume` into `\xintsession` diff --git a/macros/plain/contrib/xintsession/xintsession.tex b/macros/plain/contrib/xintsession/xintsession.tex index d7f6cffb06..1cf708bab5 100644 --- a/macros/plain/contrib/xintsession/xintsession.tex +++ b/macros/plain/contrib/xintsession/xintsession.tex @@ -1,4 +1,4 @@ -% Release 0.3 (2021-05-31) of xintsession.tex +% Release 0.3a (2021-06-08) of xintsession.tex % author: Jean-Francois Burnol % License: LPPL 1.3c (author-maintained) % Usage: execute "etex (or pdftex) xintsession" @@ -55,7 +55,7 @@ _ / _ / / / /_ / __/ / / /_/ // /__ / /_ _ / __ |/ // __/__ /_/ /_/ /_/\__/ \___//_/ \__,_/ \___/ \__/ /_/ _____/ \___//_/% }% ?xdef?xs_copyright{% - xintsession 0.3 (2021-05-31) + xintsession 0.3a (2021-06-08) Copyright (c) Jean-Francois Burnol, 2021.% }}% \def\xs_no{0}% @@ -151,8 +151,8 @@ _ / _ / / / /_ / __/ / / /_/ // /__ / /_ _ / __ |/ // __/__ \immediate\write\xs_out {\expandafter\string\xs_xintdefvar\space @_\xs_no:=% \detokenize\expandafter{\xs_in};}% - \XINT_expr_defvar_one{@___}{\csname XINT_expr_varvalue_@__\endcsname}% - \XINT_expr_defvar_one{@__}{\csname XINT_expr_varvalue_@_\endcsname}% + \XINT_expr_defvar_one{@___}{\XINT_expr_varvalue_@__}% + \XINT_expr_defvar_one{@__}{\XINT_expr_varvalue_@_}% \XINT_expr_defvar_one{@_}{\csname XINT_expr_varvalue_@_\xs_no\endcsname}% \xs_message{% @_\expandafter\xs_keepsix\xs_no\space\space\space\space\space\relax @@ -191,8 +191,8 @@ _ / _ / / / /_ / __/ / / /_/ // /__ / /_ _ / __ |/ // __/__ \immediate\write\xs_out {\expandafter\string\xs_xintdefvar\space\detokenize\expandafter{\xs_left}:=% \detokenize\expandafter{\xs_right};}% - \XINT_expr_defvar_one{@___}{\csname XINT_expr_varvalue_@__\endcsname}% - \XINT_expr_defvar_one{@__}{\csname XINT_expr_varvalue_@_\endcsname}% + \XINT_expr_defvar_one{@___}{\XINT_expr_varvalue_@__}% + \XINT_expr_defvar_one{@__}{\XINT_expr_varvalue_@_}% \XINT_expr_defvar_one{@_}{\csname XINT_expr_varvalue_@_\xs_no\endcsname}% % this is to allow multiple assignments \expandafter\xs_xintdefvar\xs_left=@_\xs_no;% @@ -308,7 +308,7 @@ _ / _ / / / /_ / __/ / / /_/ // /__ / /_ _ / __ |/ // __/__ - The computing kernel can work in various modes: exact (uses \xintexpr), fp (uses \xintfloatexpr), int (uses - (\xintiiexpr), and pol (makes definitions using \poldef). + \xintiiexpr), and pol (makes definitions using \poldef). To activate a mode enter `&<mode name>' at the prompt - Issue `&mode' if you forgot in what mode you are currently in. @@ -484,4 +484,8 @@ _ / _ / / / /_ / __/ / / /_/ // /__ / /_ _ / __ |/ // __/__ % \xsrestorecatcodes% \csname xs\string _storeenv\endcsname\endlinechar13\relax% -\endinput\xintsession% +% extremely eTeX-weird bug of 0.3 which had here \endinput\xintsession, +% causing breakage if the latter attempts a \scantokens in an \edef +% (which is what happens for function definitions). +% bugfix 0.3a by simply moving \xintsession to before the \endinput +\xintsession\endinput% |