什么是 web2js?
这是一个针对 WebAssembly 的 Pascal 编译器,专门用于编译 TeX,以便可以在浏览器中运行。更具体地说,这个存储库包含一个名为 jsTeX 的 TeX 引擎,它类似于 LuaTeX,但它嵌入的是 JavaScript,而不是 Lua。
具体来说,web2js 通过以下方式生成 core.dump 和 tex.wasm:这一步在Makefile
。
问题
web2js
有一些依赖项需要生成core.dump
。很难设置本地环境,因此我需要 Docker 环境。
FROM adnrv/texlive:full
# Update tex packages
RUN tlmgr update --self --all
ARG WORKDIR=/usr/var
WORKDIR ${WORKDIR}
# Install apt pacakges
RUN apt update && apt install -y \
build-essential \
cmake \
git \
libkpathsea-dev \
python3-pip
# Install npm and node
ARG NODE_MAJOR_VERSION=14
ARG NODE_MINOR_VERSION=14.18.1
RUN wget https://deb.nodesource.com/node_${NODE_MAJOR_VERSION}.x/pool/main/n/nodejs/nodejs_${NODE_MINOR_VERSION}-deb-1nodesource1_amd64.deb \
&& apt install ./nodejs_${NODE_MINOR_VERSION}-deb-1nodesource1_amd64.deb \
&& rm nodejs_${NODE_MINOR_VERSION}-deb-1nodesource1_amd64.deb
# Install binaryen
ARG BINARYEN_VERSION=91
RUN wget https://github.com/WebAssembly/binaryen/archive/refs/tags/version_${BINARYEN_VERSION}.tar.gz \
&& tar -zxf version_${BINARYEN_VERSION}.tar.gz \
&& cd binaryen-version_${BINARYEN_VERSION} \
&& cmake . && make \
&& make install \
&& cd ../ && rm -rf binaryen-version_${BINARYEN_VERSION} version_${BINARYEN_VERSION}.tar.gz
# Install node packages
COPY package.json ${WORKDIR}/
RUN npm install
# Build
COPY . ${WORKDIR}/
# Produce tex.wasm and core.dump
RUN make core.dump
# Compile sampleLatex.tex by running
# RUN node tex.js sample/sampleLatex
这是我的Dockerfile
,但! I can't read TEX.POOL.
在发生了错误node initex.js
。
以下是该日志。
! I can't read TEX.POOL.
[Object: null prototype] {
'0': Memory [WebAssembly.Memory] {},
getStackPointer: [Function: 20],
setStackPointer: [Function: 21],
main: [Function: 385],
asyncify_start_unwind: [Function: 386],
asyncify_stop_unwind: [Function: 387],
asyncify_start_rewind: [Function: 388],
asyncify_stop_rewind: [Function: 387]
}
! I can't read TEX.POOL.
此消息是从源文件发出的,但我不知道需要什么或错误什么。
tex.pool
文件肯定存在tangle
。我该如何修复它?