update: fileless spawn of LaTeX Environment

This commit is contained in:
2026-05-27 01:38:25 +09:00
parent 9a16caafc9
commit 67f994d7ee
13 changed files with 281 additions and 160 deletions
+36
View File
@@ -0,0 +1,36 @@
{
"env": [
{ "alias": "alignenv", "target": "align" },
{ "alias": "arrayenv", "target": "array" },
{ "alias": "casesenv", "target": "cases" },
{ "alias": "emptyenv", "target": "" },
{ "alias": "enumenv", "target": "enumerate" },
{ "alias": "equi", "target": "equation" },
{ "alias": "figenv", "target": "figure" },
{ "alias": "gatherenv", "target": "gather" },
{ "alias": "itemenv", "target": "itemize" },
{ "alias": "minienv", "target": "minipage" },
{ "alias": "split", "target": "split" },
{ "alias": "tableenv", "target": "table" },
{ "alias": "tabularenv", "target": "tabular" }
],
"math": [
{ "alias": "prs", "target": "\\left(\\right)<Esc>?\\<CR>i" },
{ "alias": "/", "target": "\\frac{}{}" },
{ "alias": "inv", "target": "\\frac{1}{}<Esc>i" },
{ "alias": "txt", "target": "\\text{}<Esc>i" },
{ "alias": "bks", "target": "\\left{\\right}<Esc>?\\<CR>i" }
],
"generic": [
{ "alias": "cpt", "target": "\\caption{}<Esc>i" },
{ "alias": "itm", "target": "\\item{}<Esc>i" },
{ "alias": "lbl", "target": "\\label{}<Esc>i" },
{ "alias": "sec", "target": "\\section{}<Esc>i" },
{ "alias": "ssec", "target": "\\subsection{}<Esc>i" },
{ "alias": "sssec", "target": "\\subsubsection{}<Esc>i" },
{ "alias": "tbf", "target": "\\textbf{}<Esc>i" },
{ "alias": "tit", "target": "\\textit{}<Esc>i" },
{ "alias": "trm", "target": "\\textrm{}<Esc>i" },
{ "alias": "ttt", "target": "\\texttt{}<Esc>i" }
]
}
Generated
+6 -6
View File
@@ -3,11 +3,11 @@
"eskk-vim": {
"flake": false,
"locked": {
"lastModified": 1717933058,
"narHash": "sha256-7nPzxCbKHBwplrTCsO4SxdFe/VK0VMHWDspWvVJvwLU=",
"lastModified": 1778495889,
"narHash": "sha256-1R/ChmsdtSXMEMMtKuyXgX7oe7ZE0a8gdx3sC9s6wp0=",
"owner": "vim-skk",
"repo": "eskk.vim",
"rev": "e530575790cca5d6603b8ab984298459ecf3c0c0",
"rev": "131a290d5305b9bf06426cfe32065f97e23d471c",
"type": "github"
},
"original": {
@@ -36,11 +36,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1775423009,
"narHash": "sha256-vPKLpjhIVWdDrfiUM8atW6YkIggCEKdSAlJPzzhkQlw=",
"lastModified": 1779560665,
"narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "68d8aa3d661f0e6bd5862291b5bb263b2a6595c9",
"rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786",
"type": "github"
},
"original": {
+3 -144
View File
@@ -17,152 +17,11 @@
pkgs = import nixpkgs {
inherit system;
config = {};
overlays = [
(final: prev: {
vimPlugins = prev.vimPlugins // {
vim-eskk = prev.vimUtils.buildVimPlugin {
name = "vim-eskk";
src = eskk-vim;
};
};
})
];
overlays = import ./nix/overlay.nix { inherit pkgs; eskk-vim-src = eskk-vim; };
};
vimWithTex = pkgs.vim-full.customize {
name = "vim-with-tex";
vimrcConfig = {
packages.vimWithTexPackage = with pkgs.vimPlugins; {
start = [
vim-eskk
vimtex
];
opt = [];
};
customRC = ''
filetype plugin indent on
set encoding=utf-8
set autoindent
set smartindent
set expandtab
set shiftwidth=4
set tabstop=4
set wrap
set number relativenumber
set nospell
set ruler
set cursorline
set mousehide
syntax enable
let g:vimtex_view_method = 'general'
let g:vimtex_view_general_viewer = 'okular'
let g:vimtex_view_general_options = '--unique file:@pdf\#src:@line@tex'
let g:vimtex_compiler_method = 'latexmk'
let maplocalleader = ","
let g:eskk#directory = "~/.config/eskk"
let g:eskk#dictionary = { 'path': "~/.config/eskk/jisyo", 'sorted': 1, 'encoding': 'utf-8', }
let g:eskk#large_dictionary = { 'path': "~/.config/eskk/SKK-JISYO.L", 'sorted': 1, 'encoding': 'euc-jp', }
let g:eskk#kakutei_when_unique_candidate = 0
let g:eskk#enable_completion = 0
let g:eskk#no_default_mappings = 1
let g:eskk#keep_state = 0
let g:eskk#egg_like_newline = 1
let g:toggle_latex_eskk = 1
function! s:latex_eskk() abort
if &filetype == 'tex' && g:toggle_latex_eskk ==# 1
call eskk#enable()
endif
endfunction
function! s:latex_eskk_toggle() abort
let g:toggle_latex_eskk = g:toggle_latex_eskk == 1 ? 0 : 1
if g:toggle_latex_eskk ==# 1
echomsg 'LaTeX Japanese Input Enabled'
else
echomsg 'LaTeX Japanese Input Disabled'
endif
endfunction
augroup vimrc_eskk
autocmd!
autocmd Filetype tex nnoremap <buffer><silent> <F1> :call <SID>latex_eskk_toggle()<CR>
autocmd User eskk-enable-post lmap <buffer> l <Plug>(eskk:disable)
augroup END
imap jk <Plug>(eskk:toggle)
cmap jk <Plug>(eskk:toggle)
imap jj <C-]>
augroup autosource
source vim/generic-envs.vim
source vim/generic.vim
augroup END
'';
};
};
texEnv = pkgs.texliveSmall.withPackages (ps: with ps; [
# Bibliography
biber
bibtex
biblatex
# Japanese Support
babel
babel-japanese
luatexja
ascmac
bxjscls
zxjatype
collection-langjapanese
# Fonts
noto
zxjafont
haranoaji
libertine
latex-fonts
mathfont
newtx
luainputenc
fontspec
# Math
amsmath
amsfonts
unicode-math
mathtools
lualatex-math
# Graphics
graphics
wrapfig
caption
here
pgf
circuitikz
# Tools
latexmk
subfiles
enumitem
hyperref
float
framed
tabularray
footmisc
listings
xcolor
xstring
xpatch
blindtext
multirow
etoolbox
] ++ [ ps.import ]);
vimWithTex = import ./nix/vim.nix { inherit pkgs; lib = pkgs.lib; };
texEnv = import ./nix/latex.nix { inherit pkgs; };
in
{
devShells.default = pkgs.stdenv.mkDerivation {
+61
View File
@@ -0,0 +1,61 @@
{ pkgs, ... }:
pkgs.texliveSmall.withPackages (ps: with ps; [
# Bibliography
biber
bibtex
biblatex
# Japanese Support
babel
babel-japanese
luatexja
ascmac
bxjscls
zxjatype
collection-langjapanese
# Fonts
noto
zxjafont
haranoaji
libertine
latex-fonts
mathfont
newtx
luainputenc
fontspec
type1cm
# Math
amsmath
amsfonts
unicode-math
mathtools
lualatex-math
# Graphics
graphics
wrapfig
caption
here
pgf
circuitikz
# Tools
latexmk
subfiles
enumitem
hyperref
cleveref
float
framed
tabularray
footmisc
listings
xcolor
xstring
xpatch
blindtext
multirow
etoolbox
] ++ [ ps.import pkgs.my-latex-pkgs ])
+39
View File
@@ -0,0 +1,39 @@
{ pkgs, eskk-vim-src }:
[
(final: prev: {
vimPlugins = prev.vimPlugins // {
vim-eskk = prev.vimUtils.buildVimPlugin {
name = "vim-eskk";
src = eskk-vim-src;
};
};
})
(final: prev: {
my-latex-pkgs = prev.stdenvNoCC.mkDerivation {
pname = "my-latex-pkgs";
src = ../tex;
version = "0.0.1";
outputs = [
"tex"
];
nativeBuildInputs = [
(prev.writeShellScript "force-tex-output.sh" ''
out="''${tex-}"
'')
];
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
path="$tex/tex/latex/my-latex-pkgs"
mkdir -p "$path"
cp *.sty "$path/"
runHook postInstall
'';
};
})
]
+94
View File
@@ -0,0 +1,94 @@
{ pkgs, lib, ... }:
let
abbrevJSON = lib.importJSON ../abbrev.json;
toEnvAbbrev = aj:
lib.concatLines (map (e:
"iabbrev <buffer> ${e.alias} \\begin{${e.target}}<CR><CR>\\end{${e.target}}<Esc>ki"
) aj.env);
toMathAbbrev = aj:
lib.concatLines (map (e:
"iabbrev <buffer> m${e.alias} ${e.target}"
) aj.math);
toGenericAbbrev = aj:
lib.concatLines (map (e:
"iabbrev <buffer> ${e.alias} ${e.target}"
) aj.generic);
in
pkgs.vim-full.customize {
name = "vim";
vimrcConfig = {
packages.myPackages = with pkgs.vimPlugins; {
start = [
vim-eskk
vimtex
];
opt = [];
};
customRC = ''
filetype plugin indent on
set encoding=utf-8
set autoindent
set smartindent
set expandtab
set shiftwidth=4
set tabstop=4
set wrap
set number relativenumber
set nospell
set ruler
set cursorline
set mousehide
syntax enable
let g:vimtex_view_method = 'general'
let g:vimtex_view_general_viewer = 'okular'
let g:vimtex_view_general_options = '--unique file:@pdf\#src:@line@tex'
let g:vimtex_compiler_method = 'latexmk'
let maplocalleader = ","
let g:eskk#directory = "~/.config/eskk"
let g:eskk#dictionary = { 'path': "~/.config/eskk/jisyo", 'sorted': 1, 'encoding': 'utf-8', }
let g:eskk#large_dictionary = { 'path': "${pkgs.skkDictionaries.l}/share/skk/SKK-JISYO.L", 'sorted': 1, 'encoding': 'euc-jp', }
let g:eskk#kakutei_when_unique_candidate = 0
let g:eskk#enable_completion = 0
let g:eskk#no_default_mappings = 1
let g:eskk#keep_state = 0
let g:eskk#egg_like_newline = 1
let g:toggle_latex_eskk = 1
function! s:latex_eskk() abort
if &filetype == 'tex' && g:toggle_latex_eskk ==# 1
call eskk#enable()
endif
endfunction
function! s:latex_eskk_toggle() abort
let g:toggle_latex_eskk = g:toggle_latex_eskk == 1 ? 0 : 1
if g:toggle_latex_eskk ==# 1
echomsg 'LaTeX Japanese Input Enabled'
else
echomsg 'LaTeX Japanese Input Disabled'
endif
endfunction
augroup vimrc_eskk
autocmd!
autocmd Filetype tex nnoremap <buffer><silent> <F1> :call <SID>latex_eskk_toggle()<CR>
autocmd User eskk-enable-post lmap <buffer> l <Plug>(eskk:disable)
augroup END
imap jk <Plug>(eskk:toggle)
cmap jk <Plug>(eskk:toggle)
imap jj <C-]>
augroup latex_abbr
${toEnvAbbrev abbrevJSON}
${toGenericAbbrev abbrevJSON}
${toMathAbbrev abbrevJSON}
augroup END
'';
};
}
BIN
View File
Binary file not shown.
Binary file not shown.
+7
View File
@@ -0,0 +1,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{depD-experiment}
\usepackage{preamble}
\usepackage{experiment-title}
\usepackage{depD-bib}
\usepackage{depD-format}
+25
View File
@@ -0,0 +1,25 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{depD-format}
\usepackage{cleveref}
\renewcommand\figurename{Fig. }
\renewcommand\tablename{Table }
\renewcommand\theequation{\thesection-\arabic{equation}}
\renewcommand\thefigure{\thesection-\arabic{figure}}
\renewcommand\thetable{\thesection-\arabic{table}}
\crefdefaultlabelformat{#1}
\crefname{figure}{Fig.}{Fig.}
\Crefname{figure}{Fig.}{Fig.}
\crefname{table}{Table}{Tables}
\Crefname{table}{Table}{Tables}
\crefname{equation}{Eq.}{Eq.}
\Crefname{equation}{Eq.}{Eq.}
\creflabelformat{equation}{(#1)}
\newcommand\resetrefcounter{
\setcounter{equation}{0}
\setcounter{figure}{0}
\setcounter{table}{0}
}
+1 -1
View File
@@ -1,7 +1,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{detailedTitle}
\usepackage{tex/coms}
\usepackage{coms}
\newcommand{\detailedtitle}{
\begin{titlepage}
+8 -8
View File
@@ -1,7 +1,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{experimentTitle}
\usepackage{tex/coms}
\usepackage{coms}
\usepackage{multirow}
\usepackage{array}
\usepackage{etoolbox}
@@ -16,10 +16,10 @@
\newcommand{\researchercs}[1]{
\ifthenelse{\isodd{\theresearchercount}}
{
& {\underline{(\theresearchercount) #1}}
& {\underline{(\theresearchercount)\quad #1}}
}
{
& {\underline{(\theresearchercount) #1}} \@arraycr
& {\underline{(\theresearchercount)\quad #1}} \@arraycr
}
\stepcounter{researchercount}
}
@@ -66,18 +66,18 @@
\vspace{1em}
\hspace{-8.525pt}\begin{tabular}{ lp{5em}p{5em} }
\hspace{-8.525pt}\begin{tabular}{ lp{8em}p{8em} }
\ifthenelse{\isundefined{\researchers}}{
\multirow[t]{3}{7.3125em}{共同実験者:} & {なし} & \\
\multirow[t]{3}{8em}{共同実験者:} & {なし} & \\
}{
\multirow[t]{3}{7.3125em}{共同実験者:} \forlistloop{\researchercs}{\researchers}
\multirow[t]{3}{8em}{共同実験者:} \forlistloop{\researchercs}{\researchers}
}
\end{tabular}
\vspace{5em}
\hspace{-6pt}\begin{tabular}{ lp{5em} }
\multirow[t]{3}{7.3125em}{実験実施日:} \forlistloop{\expdatecs}{\expdates}
\hspace{-6pt}\begin{tabular}{ lp{8em} }
\multirow[t]{3}{8em}{実験実施日:} \forlistloop{\expdatecs}{\expdates}
\end{tabular}
\end{flushleft}
\end{titlepage}
+1 -1
View File
@@ -1,7 +1,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{simpleTitle}
\usepackage{tex/coms}
\usepackage{coms}
\newcommand{\simpletitle}{
\begin{titlepage}