Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/frvnzj/xjustexx.nvim
Write, compile and stay edge with xJUSTEXx
https://github.com/frvnzj/xjustexx.nvim
just justfile latex lua neovim neovim-plugin
Last synced: about 1 month ago
JSON representation
Write, compile and stay edge with xJUSTEXx
- Host: GitHub
- URL: https://github.com/frvnzj/xjustexx.nvim
- Owner: frvnzj
- License: mit
- Created: 2024-08-18T08:36:18.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-09-17T05:40:00.000Z (2 months ago)
- Last Synced: 2024-10-10T04:02:58.507Z (about 1 month ago)
- Topics: just, justfile, latex, lua, neovim, neovim-plugin
- Language: Lua
- Homepage:
- Size: 5.17 MB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# xJUSTEXx
![xJAVx](assets/xJAVx.png)
Hice este plugin con la idea de facilitar la creación de mis ensayos con LaTeX a través de Neovim. Mezclo la creación de proyectos (una estructura básica de workspace e inicialización de repositorio git) con el fácil acceso a los comandos de TeXlive para compilar a través Just y justfile.
I made this plugin with the idea of create project articleas easy with LaTeX and Neovim. This plugin create a project directory with the name of the project, a main.tex and a .justfile for compile.
## Tabla de Contenidos
- [Dependencias](#dependencias)
- [Instalación](#instalación)
- [Configuración](#configuración)
- [Uso](#uso)
- [Comandos](#comandos)
- [Opciones de Configuración](#opciones-de-configuración)
- [Contribuciones](#contribuciones)## Dependencias
- Neovim >= 0.10
- Git
- Just
- fidget.nvim (opcional)
- [texclear](https://github.com/LukeSmithxyz/voidrice/blob/master/.local/bin/texclear) (opcional)## Instalación / Install
Para instalar puedes usar el plugin manager que prefieras. El siguiente ejemplo es con [lazy.nvim](https://github.com/folke/lazy.nvim) y depende de [fidget.nvim](https://github.com/j-hui/fidget.nvim) para conocer el status de la compilación.
```lua
{
"frvnzj/xJUSTEXx.nvim",
dependencies = {
"j-hui/fidget.nvim",
},
config = function()
require("xJUSTEXx").setup()
end,
}
```## Configuración / Configuration
La configuración tiene tres opciones (definición de los directorios de los proyectos, plantillas o contenidos con el que se iniciará el main tex y el contenido del .justfile que declara los comandos a usar). Las opciones por default son las siguientes:
The configuration have three options (project directories, templates for main tex and the content of .justfile with the commands for compile). The default setup is:
```lua
{
project_dirs = {
vim.fn.expand('$HOME') .. '/Documents/Articles',
vim.fn.expand('$HOME') .. '/Documents/Research',
},
tex_templates = {
article = {
name = 'Article',
content = [[
\documentclass{article}\begin{document}
\title{Title}
\author{Author}
\date{\today}
\maketitle\section{Introduction}
This is an article template.
\end{document}
]],
},
book = {
name = 'Book',
content = [[
\documentclass{book}\begin{document}
\title{Title}
\author{Author}
\date{\today}
\maketitle\chapter{Introduction}
This is a book template.
\end{document}
]],
},
presentation = {
name = 'Presentation',
content = [[
\documentclass{beamer}\begin{document}
\title{Title}
\author{Author}
\date{\today}
\frame{\titlepage}\begin{frame}
\frametitle{Introduction}This is a presentation template.
\end{frame}
\end{document}
]],
},
},
justfile_content = [[
main_file := "%s.tex"lualatex:
@latexmk -lualatex -interaction=nonstopmode -synctex=-1 {{main_file}}pdflatex:
@latexmk -pdf -interaction=nonstopmode -synctex=-1 {{main_file}}pdfxe:
@latexmk -pdfxe -interaction=nonstopmode -synctex=-1 {{main_file}}cleanmain:
@latexmk -c {{main_file}}cleanall:
@latexmk -c
]],
}
```## Uso / Use
![ProJustex](assets/ProJustex.png)
xJUSTEXx ofrece dos comandos: 1. crear proyecto (directorio único del proyecto, repositorio git y main file) y compilar utilizando optativamente LuaLaTeX, pdfLaTeX o XeLaTeX con la ayuda/dependencia de [Just](https://github.com/casey/just).
xJUSTEXx comes with two commands: 1. command for create projects (project directory with repository git, main tex file and .justile); 2. command for compile with LuaLaTeX, pdfLaTeX or XeLaTeX with the help of [Just](https://github.com/casey/just).
### Comandos / Commands
Para iniciar un proyecto nuevo de LaTeX usa el comando:
For init a new project of LaTeX use the command:
```lua
:ProJustex-- o
require("xJUSTEXx").xTEXx()
```Para compilar el proyecto utiliza el comando:
For compile the main.tex use the command:
```lua
:Justex lualatex -- pdflatex or pdfxe-- o
require("xJUSTEXx").xJUSTEXx("lualatex")
```## Opciones de Configuración / Change default configuration
![Justex](assets/Justex.png)
La configuración no se limita a las 3 opciones disponibles a modificar del plugin. Por ejemplo, la configuración de uso personal para iniciar proyectos de ensayo:
You can change the default configuration, for example, I set my own template and directories:
```lua
require("xJUSTEXx").setup {
tex_templates = {
article = {
name = "Article",
content = [[
\documentclass[doc,12pt]{apa7}% Font option: Arial[Arial], Carlito[Carlito], Droid Serif[Droid],
% GFS Didot [GFSDidot](default), IM FELL English[IMFELLEnglish], Kerkis[Kerkis], Times New Roman[TNR].
\usepackage{xJAVx-apa7}\addbibresource{~/Documentos/LaTeX/refs.bib}
% \hypersetup{
% pdftitle={<++>},
% pdfkeywords={<++>}
% }\begin{document}
\authorsnames{<++>}
\authorsaffiliations{<++>}
\title{<++>}
\shorttitle{<++>}% \abstract{<++>}
% \keywords{<++>}% \authornote{<++>}
\maketitle
% \fontsize{12pt}{14pt}\selectfont\doublespacing{}
\fontsize{12pt}{14pt}\selectfont\onehalfspacing{}<++>
% ----- Bibliografía -----
% \printbibliography
\end{document}
]],
},
},
project_dirs = {
vim.fn.expand "$HOME" .. "/Documentos/Ensayos",
vim.fn.expand "$HOME" .. "/Documentos/Research",
},
}
```También puedes definir tu propia plantilla siguiendo la tabla de ```tex_templates```:
Also you can define your own template following the table of ```tex_templates```:
```lua
tex_templates = {
myTemplate = {
name = 'MyTemplate',
content = [[
This is MyTemplate
]],
},
},
```---
![xJUSTEXx](assets/xJUSTEXx.png)
También es recomendable el uso de [which-key](https://github.com/folke/which-key.nvim) o nvim_set_keymap() en `ftplugin/tex.lua` y `ftplugin/plaintex.lua`, por ejemplo:
It is also recommended to use [which-key](https://github.com/folke/which-key.nvim) or nvim_set_keymap() in `ftplugin/tex.lua` y `ftplugin/plaintex.lua`, for example:
```lua
local wk = require("which-key")wk.add {
{ "wa", "Justex lualatex", desc = "xJAVx LuaLaTeX", icon = { icon = "", color = "azure" }, },
{ "wb", "Justex pdflatex", desc = "xJAVx LaTeX", icon = { icon = "", color = "azure" }, },
{ "wc", "Justex pdfxe", desc = "xJAVx XeLaTeX", icon = { icon = "", color = "azure" }, },
{ "wd", "Justex cleanmain", desc = "xJAVx CleanMainAuxFiles", icon = { icon = "", color = "azure" }, },
{ "we", "Justex cleanall", desc = "xJAVx CleanAllFilesAux", icon = { icon = "", color = "azure" }, },
}-- Estos keymaps permiten ir rápidamente a los sitios que quiero modificar,
-- por ejemplo, en \authorsnames{<++>} me lleva dentro de { } borrando <++>
-- permitiéndome ingresar el nombre \authorsnames{xJAVx}
vim.keymap.set("n", ",,", "keepp /<++>ca<", { noremap = true, silent = true })
vim.keymap.set("i", ",,", "0keepp /<++>ca<", { noremap = true, silent = true })
```## Contribuciones
Si deseas contribuir mejorando el plugin o reportar errores, quedo atento.
### License MIT