This project provides the functionality to use GNU TeXmacs as the frontend of Wolfram language.
To use this package, you need to confirm executable wolframscript or wolfram
locates in one of you system search paths. The disired directory on windows may
be something like C:\Program Files\Wolfram Research\Mathematica\13.0\ for
Mathematica or C:\Program Files\Wolfram Research\WolframScript\ for
WolframEngine (enable the extra component wolframscript when installing
WolframEngine). When you have the directory, add it to environment variable
Path on Windows or shell variable PATH on *nix.
After that, put this package in your plugin directory inside TeXmacs home path
and name it as mma. By default it should be $HOME/.TeXmacs/plugins on Linux
and macos, and %AppData%/Roaming/TeXmacs/plugins on windows. You can either
git clone or download a zip packed directory from the github interface.
If you use git
For Linux/macos:
cd $HOME/.TeXmacs/plugins #
git clone https://github.com/hammerfunctor/tm-mathematica mmaFor windows
cd %AppData%/Roaming/TeXmacs/plugins
git clone https://github.com/hammerfunctor/tm-mathematica mmaDownload this package as a zip file, put it in the the directory just mentioned,
change the name of dir to mma, and you are done.
On windows once you properly set the environment variable Path, TeXmacs will
correctly recognize this plugin.
For macos and Linux the PATH TeXmacs is aware of is a little tricky. When you
login, your login shell init file, $HOME/.zprofile, $HOME/.profile or
$HOME/.bash_profile depending the way you start your desktop environment and
your login shell, should be executed.
On Linux just set your PATH variable in one of the login-shell init files
respected by your system, and everything is okay.
On macos TeXmacs is aware of the existence of $HOME/.zprofile if you start it
from terminal, while not if you run texmacs from spotlight search. I’m no expert
of Apple stuff, and the only workaround I can come up with is to link, say,
/usr/local/bin/wolframscript to /path/to/wolframscript, which is always in
PATH.
wolframscript now merged into main, and original main written in cpp is
now left in the branch cpp.
- Breaking change: Magic line style changed from
% -width 400to
(** width:400px **)Note that you need to specify
pxif what you want is in number of pixels. - You can now use
%or%nto refer to previous output. As usual, output prompt, whose index is the same as the input prompt index, won’t be printed when there’s a single output.
Adapt mogan.
Add a more consistent code dumping script bin/tmdumpcode1 using
TeXmacs scheme. Look into and use it at your own risk.
Introduced some syntax highlight Elements. If you want to enable
it, add to you init file my-init-texmacs.scm:
(lazy-format (mma-format) mma)Formula input is still buggy as of now. I’m too busy to get some time fixing it. If you have trouble with that, just don’t use it.
You can now enter math formulus in a mathematica session, type $ followed by tab to enter math
environment! This is especially useful when you need to manually do some manipulations on the
results returned by mathematica, or to copy from somewhere else within TeXmacs.
At present only a limited set of math formulus can be remapped to mathematica functions. Look into
mw-converter.scm for details. Since all this function does is to map string snippet, it’s hard
to define a standard remap rules set for everyone. Anyway, you can hack and tailor it to your own
use case.
NOTE: You need to take care of what you type in a math environment. Basically the process is:
math env -> texmacs routine -> string match and replace, so use math env only for formulus if you have
little knowledge on TeXmacs internals and don’t want to make your hands dirty.
Your codes now can be indented automatically.
Outputname prefix like Out[12]= now will not be displayed only when there is one single return,
which is really useful for that wrapped in a executable fold, e.g. a figure in the demo.
Added a python script to dump all codes within mma sessions of a .tm file to a .m file. This will be
helpful if you want to collect all codes for some specific use case. Run:
# if path of this script is already added to $PATH
# use an alias or different link name if you like
tmdumpcode <path to .tm file like rep.tm> [<target .m file like rep-out.m>]Then rep-out.m (or rep.m if no target is specified) will appear in your current directory.
⚠️NOTE: This will override your target file. Be careful!
One night I wanted to neither read books nor sleep, then I rewrote this project.
Now % like that in notebook frontend is supported, and, the logic of format and inter-communication
is clarified. (Though it’s possible to write %12, I personally recommend you not to do like this,
since each time codes are rerun, indices will most probably change.)
