
Estou usando o látex como um diário com seções para cada assunto. Adiciono manualmente a data de criação e modificação de cada elemento do texto (seção, subseção, subsubseção, ...). Existe uma maneira de tornar isso automático?
Estou disposto a aprender lua ou python e codificá-lo (uso C++ moderno), mas não tenho certeza de quais ferramentas estão disponíveis e como torná-lo rápido.
Meu plano é fazer com que pareça a partir da declaração anterior do elemento de texto até a próxima declaração do elemento. pode ser procurar na árvore de desfazer. veja se há alguma alteração. se houver, altere a data após a declaração da seção atual. também seria bom ocultar essas datas e mostrá-las.
Responder1
Isso é possível, mas exigirá que você tenha algum conhecimento da linguagem de script do Vim. Você precisará escrever uma função Vim que possa encontrar a localização da data na seção atual sem "escapar" dessa seção e, em seguida, alterar essa linha. Depois que a função for escrita, você precisará anexá-la a um autocmd.
Por exemplo, se sua função foi chamada, TexAutoDate()
você poderia chamá-la automaticamente toda vez que escrever um arquivo que termine desta .tex
forma:
:autocmd BufWritePre *.tex :call TexAutoDate()
Infelizmente, o corpo real da função será bastante complexo e sem saber mais sobre o layout do seu arquivo não posso ajudá-lo muito. Eu tenho uma função que escrevi para um propósito semelhante, mas ela não se restringe a seções. A função a seguir atualiza a linha "Última alteração:" de um arquivo de ajuda do Vim automaticamente na gravação:
function HelpModifiedUpdate()
if &filetype != "help"
return
endif
let today=strftime('%Y %b %d')
" Save current cursor position:
let lnum = line('.')
let col = col('.')
if search('Last change: ', 'w')
let line1 = getline('.')
if line1 =~ today
" Restore cursor position:
call cursor(lnum, col)
return
endif
let line2 = substitute(
\line1,
\'Last change: .*',
\'Last change: ' . today,
\''
\)
call setline('.', line2)
endif
" Restore cursor position:
call cursor(lnum, col)
endfunction
Ver:
:help :autocmd
:help :function
:help eval.txt
O último é extenso e você não precisará ler o arquivo inteiro, mas conterá muito do que você precisa caso ainda não conheça o script Vim.
Responder2
Provavelmente a maneira mais fácil de fazer isso é instalar um plugin de snippet. eu prefiroultrasnipsporque é muito mais poderoso, mascompanheiro de recortetambém é muito popular.
Com o ultisnips, eu definiria um trecho como este no meu tex.snippets
arquivo;
snippet sec "section" b
\section{`!v strftime("%Y-%m-%d")`: ${1:section label}}
$0
endsnippet
Se você digitar agora sec
no início de uma linha e pressionar a <tab>
tecla, o trecho se expandirá, inserindo a data atual (usando ohorário de trabalhofunção) e solicitando que você preencha o rótulo da seção.