配置code-server和texlive实现网页写tex

使用overleaf太卡了,有云服务器或者nas小主机,配置自己的code-server+texlive,来写论文。
之前用服务器配置过自己的overleaf,感觉不是很好用,缺少东西。

一、思路

  1. 使用docker先安装一个ubuntu,用dockerfile在里面配置好ssh;(如果是云服务器,则不需要安装ubuntu,直接操作下面接即可)
  2. 通过ssh,依次安装code-server、texlive、git(当然也可以在dockerfile中直接配置好,但是code-server需要科学上网,不一定成功)
  3. 然后在code-server中配置相应的文件,即可运行。(主要是安装插件、配置tex指令)

二、操作步骤

  1. Dockerfile内容如下:
FROM ubuntu# Install SSH
RUN apt-get update && apt-get install -y openssh-server && rm -rf /var/lib/apt/lists/*# Configure SSH
RUN mkdir /var/run/sshd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config# Setup the root password
ARG ROOT_PASSWORD
RUN echo "root:${ROOT_PASSWORD}" | chpasswdEXPOSE 22CMD ["/usr/sbin/sshd", "-D"]RUN apt-get update && \apt-get upgrade -y && \apt-get install -y iputils-ping nanoRUN apt-get install -y curl git
  1. docker-compose.yml文件如下,可以修改你自己的ubuntu密码,默认账户是root。

这里映射了/home文件夹,用于放自己的文件夹

version: '3.8'
services:ubuntu_texlive:build:context: .dockerfile: Dockerfileargs:ROOT_PASSWORD: UBUNTU_PASSWORDnetwork_mode: hostvolumes:- /mnt/user/appdata/ubuntu-texlive/home:/home

上面网络设置为host,会需要22端口,对于云服务器可能不适用。可以映射两个端口出来,分别为ssh的22和code-server的8080。可以将network_mode: host改为:

ports:- "2222:22"- "8081:8080"
  1. 运行上述后,将会生成一个docker容器,通过ssh访问,进行后操作。账户是root,密码上前面设置的
  2. 安装texlive:
    基于官方网页进行安装即可:https://tug.org/texlive/quickinstall.html
    完成后需要在~/.bashrc添加路径:
PATH=$PATH:/usr/local/texlive/2024/bin/x86_64-linux
  1. 安装code-server:
    基于官方一件安装脚本即可:https://github.com/coder/code-server/tree/main
    可能会下载失败,如果有代理,可以添加代理:
export http_proxy="http://192.168.1.104:7893"
export https_proxy="http://192.168.1.104:7893"
export all_proxy="socks5://192.168.1.104:7893"

如果云服务器不方便走代理,可以下载release后,进行手动sh安装即可。
完成后使用code-server --host 0.0.0.0 --port 8081即可运行,并从外部从ip+端口访问

  1. code-server登录密码
    运行上述code-server后,会有一个路径告诉你配置文件的路径,可以从里面获得默认密码,也可以修改里面的文件,包括密码、host和port。

  2. code-server后台运行
    使用nohup xxx &即可后台运行,通过ps -aux | grep code-server可以找到该命令,使用kill进行关闭。
    官方的使用systemctl指令,无法在docker的ubuntu中运行,如果是云服务器则可以,后面需要使用systemctl stop进行关闭。

  3. code-server插件安装
    安装插件如下,需要就这三个。
    在这里插入图片描述

  4. code-server json配置
    在code-server命令面板中,输入json,打开 首选项:打开用户设置,输入以下内容:
    (有些是其他的不必要的,但是我也判断不出来了


{"files.autoSave": "onFocusChange","latex-workshop.view.pdf.viewer": "tab","latex-workshop.view.pdf.hand": true,"latex-workshop.synctex.afterBuild.enabled": true,"latex-workshop.latex.tools": [{"name": "xelatex","command": "xelatex","args": ["-synctex=1","-interaction=nonstopmode","-file-line-error","%DOCFILE%"]},{"name": "latexmk","command": "latexmk","args": ["-synctex=1","-interaction=nonstopmode","-file-line-error","-pdf","%DOCFILE%"]},{"name": "pdflatex","command": "pdflatex","args": ["-synctex=1","-interaction=nonstopmode","-file-line-error","%DOCFILE%"]},{"name": "bibtex","command": "bibtex","args": ["%DOCFILE%"]}],"latex-workshop.latex.recipes": [{"name": "PDFLaTeX","tools": ["pdflatex"]},{"name": "XeLaTeX","tools": ["xelatex"]},{"name": "latexmk","tools": ["latexmk"]},{"name": "BibTeX","tools": ["bibtex"]},{"name": "pdflatex -> bibtex -> pdflatex*2","tools": ["pdflatex","bibtex","pdflatex","pdflatex"]},{"name": "xelatex -> bibtex -> xelatex*2","tools": ["xelatex","bibtex","xelatex","xelatex"]}],"editor.suggestSelection": "first","vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue","editor.fontSize": 18,"terminal.integrated.enableMultiLinePasteWarning": false,"git.autofetch": true,"git.confirmSync": false,"diffEditor.ignoreTrimWhitespace": false,"explorer.confirmDelete": false,"pdf-preview.default.sidebar": true,"platformio-ide.activateProjectOnTextEditorChange": true,"git.enableSmartCommit": true,"editor.unicodeHighlight.ambiguousCharacters": false,"grammarly.files.include": ["**/README.md","**/readme.md","**/*.txt","**/*.tex"],// "commentTranslate.hover.concise":true,"commentTranslate.hover.enabled": true,"grammarly.config.documentDialect": "american","grammarly.config.documentDomain": "academic","workbench.editorAssociations": {"*.pdf": "latex-workshop-pdf-hook"},"workbench.colorTheme": "Quiet Light","workbench.editor.enablePreview": false,"translation.target-language": "zh","todo-tree.general.schemes": ["file","ssh","untitled","vscode-notebook-cell","tex"],
}
  1. 运行测试
    在/home文件夹(从容器映射到了外面)下,写一个tex文件进行测试。

  2. 快捷方式修改
    grammally的快捷方式会被占用,修改成alt+x比较合适。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/593375.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openGauss学习笔记-256 openGauss性能调优-使用Plan Hint进行调优-优化器GUC参数的Hint

文章目录 openGauss学习笔记-256 openGauss性能调优-使用Plan Hint进行调优-优化器GUC参数的Hint256.1 功能描述256.2 语法格式256.3 参数说明 openGauss学习笔记-256 openGauss性能调优-使用Plan Hint进行调优-优化器GUC参数的Hint 256.1 功能描述 设置本次查询执行内生效的…

ruoyi-nbcio-plus基于vue3的flowable流程元素选择区面板的升级修改

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

BoostCompass —— 搜索引擎

文章目录 一、项目简介二、Boost库简介1. 简介2. Boost 库的特点 三、项目主要模块1. 网页内容获取,数据预处理模块2. 建立正排索引和倒排索引,项目核心模块3. 编写 http_server 模块,进行网络开放 四、项目功能预览1. 项目文件预览2. 项目执…

什么是工业协议转换软件?

在现代工业自动化领域,随着技术的不断革新和智能化水平的提升,各种工业设备和系统之间的通信变得日益重要。然而,由于历史、技术差异和标准多样化等原因,不同的工业设备和系统往往采用各自独特的通信协议,导致它们之间…

【T5中的激活函数】GLU Variants Improve Transformer

【mT5中的激活函数】GLU Variants Improve Transformer 论文信息 阅读评价 Abstract Introduction Gated Linear Units (GLU) and Variants Experiments on Text-to-Text Transfer Transformer (T5) Conclusion 论文信息 名称内容论文标题GLU Variants Improve Transfo…

算法设计与分析实验报告c++实现(排序算法、三壶谜题、交替放置的碟子、带锁的门)

一、实验目的 1.加深学生对分治法算法设计方法的基本思想、基本步骤、基本方法的理解与掌握; 2.提高学生利用课堂所学知识解决实际问题的能力; 3.提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 1、 编…

HackTheBox-Mist

整体思路 端口扫描->Pluck CMS组件文件读取漏洞->文件上传获取shell->创建指向exe的快捷方式来提权-> 信息收集&端口利用 namp -sSVC 10.10.11.17目标只开放了80端口,将mist.htb加入到hosts文件后,访问mist.htb Pluck CMS文件读取 在…

05 - 7 段十进制数码管显示

---- 整理自B站UP主 踌躇月光 的视频 1. 实验设计 根据前一节的内容,这里也通过 ROM 的方法显示十进制。这里我们设计显示 3 位十进制数,需要三个数码管,地址位宽为 8,数据位宽为 12。 A7A6A5A4A3A2A1A0number000000000000000011…

DNS和HTTP

DNS应用层协议 域名解析系统 使用IP地址,来描述设备在网络上的位置 IP地址并不适合来进行传播网站,就采用了域名的方式来解决网站传播的问题。如www.baidu.com这样类似的就很容易让人记住。其域名就直接代表了这个网站。而且有一套自动的系统会将域名解…

js猜拳游戏

文章目录 1. 演示效果2. 分析思路3. 代码实现3.1. 方式一3.2. 方式二 1. 演示效果 2. 分析思路 获取玩家的出拳(获取按钮的标签体)获取电脑的出拳(随机数)比较二者的出拳,将比较的结果设置到对应的 span 标签中 3. 代码实现 3.1. 方式一 将点击事件进行动态绑定…

爬虫实战三、PyCharm搭建Scrapy开发调试环境

#一、环境准备 Python开发环境以及Scrapy框架安装,参考:爬虫实战一、Scrapy开发环境(Win10Anaconda)搭建 PyCharm安装和破解,参考:爬虫实战二、2019年PyCharm安装(激活到2100年) …

【随笔】Git 高级篇 -- 相对引用2(十三)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…