summaryrefslogtreecommitdiff
path: root/macros/plain/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'macros/plain/contrib')
-rw-r--r--macros/plain/contrib/xintsession/README.md37
-rw-r--r--macros/plain/contrib/xintsession/xintsession.tex20
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%