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

相关文章

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

sqlite3 命令行工具使用指南

《sqlite3命令行工具使用指南》本文系统介绍sqlite3CLI的启动、数据库操作、元数据查询、数据导入导出及输出格式化命令,涵盖文件管理、备份恢复、性能统计等实用功能,并说明命令分类、SQL语... 目录一、启动与退出二、数据库与文件操作三、元数据查询四、数据操作与导入导出五、查询输出格式化六、实用功

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,