MaTeX:在Mathematica的图片中插入LaTeX代码的工具

2024-02-04 00:48

本文主要是介绍MaTeX:在Mathematica的图片中插入LaTeX代码的工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Mathematica图片中对laTeX的支持实在不敢恭维。连Geogebra都比Mathematica强。


今天搜了一下,发现有这个工具可以用,看上去不错。

作者说32位的Windows下可能无法使用,所以,如果是win32就暂时不用尝试了;不过,我尝试了下,还是搞定了大笑

配置的时候,需要用这样的代码,而不是作者所提到的,不论32位还是64位windows都必须这样,很奇怪。仅供参考。


我把涉及到的GhostScript 920的windows版安装程序(32bit ,64bit)以及MaTeX源文件1.1.0版放在CSDN供下载。

ConfigureMaTeX[ "pdfLaTeX" ->  "X:\\Program Files\\CTEX\\MiKTeX\\miktex\\bin\\pdflatex.exe", "Ghostscript" -> "X:\\Program Files\\gs\\gs9.18\\bin\\gswin32c.exe"]


下载的github地址:https://github.com/szhorvat/MaTeX/releases

https://github.com/szhorvat/MaTeX/releases


https://github.com/szhorvat/MaTeX/archive/v1.6.3.zip

当前1.60

https://github.com/szhorvat/MaTeX/releases/download/v1.6.0/MaTeX-1.6.0.zip


建议使用1.3.0以前的版本;之后的版本作者把它们改得使用起来颇为繁琐。本来只是为了实现一个小小的功能,偏要添加太多复杂的花头。简单实用才好。

当前1.3.0版本

当前1.2.0版本

当前1.1.0版本

主页和介绍

http://szhorvat.net/pelican/latex-typesetting-in-mathematica.html

LaTeX typesetting in Mathematica

Thu 05 March 2015 By szhorvat

In Notes.

tags: mathematica

Mathematica is an excellent and flexible visualization tool, and even supports displaying complex mathematical formulae. However, its typesetting quality is not on par with LaTeX. The visual style is not a good match for inclusion in LaTeX documents either. To improve the quality of my figures, I wrote a small Mathematica package that makes it easy to use LaTeX-generated labels: MaTeX.

Update: The post below has been updated for MaTeX version 1.1.0. The changelog is available on GitHub.

There are already several solutions for this problem, such as PSTricks or drawing axes and labels withPGFPlots. None of these solutions make it easy to use a Mathematica-centric workflow though. MaTeX makes generating LaTeX-typeset expressions as simple as

I originally wrote these functions for my own needs, but seeing that others may be interested in them too, I wrapped them up into a package. Feel free to leave comments below and keep in mind that this it is still a work in progress.

Installation

To install MaTeX, download the latest release and drop the MaTeX.m file in the directory opened bySystemOpen@FileNameJoin[{$UserBaseDirectory, "Applications"}].

You will also need:

  • A TeX system that includes pdflatex with the standalone and lmodern packages. Both TeX Live and MiKTeX should work.
  • Ghostscript 9.15 or later.(Ghostscript 9.20)

    On OS X, MacTeX 2015 includes a compatible version of Ghostscript. If you use an older TeX distribution on OS X, get a recent Ghostscript from Richard Koch’s page.

When loading MaTeX for the first time, it will try to automatically detect TeX and Ghostscript. If this fails, it will display instructions on configuring the location of the pdflatex and gs executables using theConfigureMaTeX command. As an example, on my OS X system I needed to use the following configuration:

ConfigureMaTeX["pdfLaTeX" -> "/Library/TeX/texbin/pdflatex", "Ghostscript" -> "/usr/local/bin/gs"]

The existing configuration can always be queried using the command ConfigureMaTeX[].

Note: On Windows use the c-suffixed command line Ghostscript executable, i.e. gswin64c.exe instead ofgswin64.exe.

If you prefer, you can use xelatex instead of pdflatex. Unlike plain pdfLaTeX, XeLaTeX can load any installed system font.

MaTeX should now be ready to use. Test it using MaTeX["x^2"].

Usage examples

First we need to load MaTeX:

<<MaTeX`

My primary use for it is creating figure annotations, as below:

texStyle = {FontFamily -> "Latin Modern Roman", FontSize -> 12};
ContourPlot[x^2 + y^4 == 1, {x, -1.2, 1.2}, {y, -1.2, 1.2},BaseStyle -> texStyle,Epilog -> {Arrow[{{0.1, 0.3}, {0.5, 0.80}}],Inset[MaTeX["x^2+y^4=1", Magnification -> 2], {0.1, 0.3}, Scaled[{0.5, 1}]]}]

Here I used the Latin Modern font for tick labels for visual consistency with the MaTeX/LaTeX output.

We can also use MaTeX to generate beautifully typeset frame labels and frame ticks. Mathematica’s default frame and axes style is dark grey, while MateX outputs black. The BlackFrame style below makes the frames black too for consistency.

Plot[Sin[x], {x, 0, 2 Pi},Frame -> True, FrameStyle -> BlackFrame,FrameTicks -> {{Automatic, None},{Table[{x, MaTeX[x, "DisplayStyle" -> False]}, {x, Pi/4 Range[0, 8]}], None}},FrameLabel -> MaTeX /@ {"x", "\\sin x"},BaseStyle -> texStyle]

The MaTeX function can be used either with a string containing math-mode LaTeX code, or with an arbitrary Mathematica expression. It will automatically apply TeXForm to non-string expressions.

When writing TeX code in Mathematica strings, remember to always escape backslashes. Thus \sum must be written as "\\sum".

Advanced usage

Options

  • "DisplayStyle".  By default display style is used. Use "DisplayStyle" -> False for inline style.

    Inline formatting looks like  k=11k2=π26 ∑k=1∞1k2=π26. Display style looks like  k=11k2=π26 ∑k=1∞1k2=π26.

  • FontSize.  Use it to set the font size. Note that LaTeX uses different glyph shapes for different font sizes to improve readability. Depending on the font used, only standard sizes may be available with this option. Use Magnification instead for proportional scaling.

  • "Preamble".  This is a list of lines to be included in the LaTeX preamble. The default is{"\\usepackage{lmodern,exscale}", "\\usepackage{amsmath,amssymb}"}. The AMS packages are included by default because they may be required for compiling the output of Mathematica’s TeXForm, while lmodernprovides vector fonts and flexible font sizing. On most systems "\\usepackage{lmodern,exscale}" can be omitted.

    This option is most convenient to set permanently for the session, for example:

    SetOptions[MaTeX, "Preamble" -> {"\\usepackage{amsmath,amssymb}", "\\usepackage{color,txfonts}"}]
    MaTeX["\\color{red}\\sqrt{x}"]
  • Magnification.  Set a scaling factor for MaTeX’s output. Magnification scales the result proportionally, unlike FontSize, which will use different glyph shapes for small text.

Performance

MaTeX needs to call pdflatex for every  LATEX LATEX expression it generates. Each call might take as long as a second, which can be annoyingly slow when using MaTeX on many small expression, e.g. creating tick labels. As a partial remedy for this, MaTeX caches each result, so a second call with the same TeX code should be instantaneous.

The maximum number of expressions to be cached can be controlled using ConfigureMaTeX["CacheSize" -> ...].ClearMaTeXCache[] will clear the cache.

How does it work?

MaTeX uses pdflatex and the standalone document class to create PDF files from TeX code. The height of thePDF files is ensured to be at least the line height by including a \strut. Mathematica can import PDF files, but it can only interpret simple ones correctly. To avoid problems, all font glyphs are converted to outline curves using Ghostscript before import. This capability is new in Ghostscript 9.15, hence the version requirement.

Troubleshooting

MaTeX no longer works on OS X 10.11 El Capitan

If you use MacTeX on OS X El Capitan, the path to pdflatex or xelatex must be set as

ConfigureMaTeX["pdfLaTeX" -> "/Library/TeX/texbin/pdflatex"]

If you used the path /usr/texbin/pdflatex on OS X 10.10 or earlier, it will no longer work on 10.11. You must reconfigure MaTeX with the new path. Please see the explanation here.

The path to Ghostscript is unchanged, /usr/local/bin/gs.

Invalid syntax in or before <!DOCTYPE html>” error

This error indicates that MaTeX was not downloaded correctly. Please download the latest release of MaTeX.mfrom this page, and re-install it according to the instructions above.

MaTeX::texerr on 32-bit Windows

If you are using a 32-bit version of Mathematica on Windows, MaTeX may not work correctly and may show the following error every time the MaTeX function is used:

MaTeX::texerr: Error while running LaTeX

This is due to a bug in Mathematica for 32-bit Windows. Due to the rarity of this platform, I decided not to work around this problem. Please consider using the 64-bit version. If you must use the 32-bit version for some reason, contact me for partial workarounds.

MaTeX still doesn’t work!

Please restart Mathematica, then enter the following lines in a new notebook and evaluate them:

Needs["MaTeX`"]
ConfigureMaTeX[]
MaTeX`Developer`$Version

Save the notebook and email it to me along with a complete description of the problems you are seeing.

Comments !



这篇关于MaTeX:在Mathematica的图片中插入LaTeX代码的工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/675917

相关文章

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

基于C#实现PDF文件合并工具

《基于C#实现PDF文件合并工具》这篇文章主要为大家详细介绍了如何基于C#实现一个简单的PDF文件合并工具,文中的示例代码简洁易懂,有需要的小伙伴可以跟随小编一起学习一下... 界面主要用于发票PDF文件的合并。经常出差要报销的很有用。代码using System;using System.Col

redis-cli命令行工具的使用小结

《redis-cli命令行工具的使用小结》redis-cli是Redis的命令行客户端,支持多种参数用于连接、操作和管理Redis数据库,本文给大家介绍redis-cli命令行工具的使用小结,感兴趣的... 目录基本连接参数基本连接方式连接远程服务器带密码连接操作与格式参数-r参数重复执行命令-i参数指定命

使用Python将长图片分割为若干张小图片

《使用Python将长图片分割为若干张小图片》这篇文章主要为大家详细介绍了如何使用Python将长图片分割为若干张小图片,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果1. Python需求

python多进程实现数据共享的示例代码

《python多进程实现数据共享的示例代码》本文介绍了Python中多进程实现数据共享的方法,包括使用multiprocessing模块和manager模块这两种方法,具有一定的参考价值,感兴趣的可以... 目录背景进程、进程创建进程间通信 进程间共享数据共享list实践背景 安卓ui自动化框架,使用的是