Fórum Ubuntu CZ/SK
Ostatní => Otevřená diskuze kolem Linuxu a OSS => Téma založeno: Filip Dominec 23 Července 2010, 12:20:26
-
Ahoj, potřeboval bych, aby mi LyX automaticky dával pevnou mezeru před neslabičné předložky (V, S, K, Z). Když se před nimi zlomí řádek, je to typograficky špatně.
Ve Vimu na tuto opravu mám makro, teď ale jde o co nejsnazší tvorbu dokumentů v LaTeXu přijatelnou i pro lidi vybavené jen běžnou znalostí Wordu. Proto volím LyX a proto bych se také rád obešel bez nějakého dodatečného spouštění programů jako je vlnka apod. Nějaký tip (třeba jako automatické opravy v editoru)? Předem díky.
-
Ještě pro zájemce přikládám ten řádek makra pro Vim (soubor ~/.vimrc):
" nahrazeni mezery za bezslabicnymi predlozkami za pevnou mezeru (~)
autocmd BufWrite *.tex :%s/\(\s[vVkKzZsS]\)\ \+/\1\~/ge
Pro další zájemce sem dávám svůj celý konf. soubor:
:syntax enable " zvýraznení syntaxe
:colorscheme moje " vlastni nastaveni barev (v souboru ~/.vim/colors/moje.vim)
:set mouse=a " mys se hodí...
:set mousehide " schová mys behem psani
"Added benefits
no - $
no _ ^
"nastavení rozpoznávání typu souboru
filetype plugin indent on
set guifont=monospace\ 9
inoremap <C-S-space> <C-x><C-o>
if version >= 600 " foldování bloku textu pomocí prikazu zf a zo
set foldenable
set foldmethod=marker
endif
if has("gui_running")
" GUI is running or is about to start.
" Maximize gvim window.
set lines=199 columns=199
else
" This is console Vim.
if exists("+lines")
set lines=50
endif
if exists("+columns")
set columns=100
endif
endif
set go-=m go-=T " drsni vimari nepouzivaji menu ani toolbar!
"ruzne
set scrolloff=3
set backspace=indent,eol,start
set ignorecase
set smartcase
" ctrl+space nahrazuje escape - pohodlnejsi
imap <C-space>
vmap <C-space>
" alt+l prejde na konec radku
map <M-l> $
vmap <M-l> $
imap <M-l> <esc>A
" alt+h prejde na zacatek radku
map <M-h> ^
vmap <M-h> ^
imap <M-h> <esc>I
" ruzne zbarveny textový kurzor v prikazovem a vkladacim rezimu:
highlight Cursor guifg=white guibg=green
highlight iCursor guifg=yellow guibg=red
set guicursor=n-v-c:block-Cursor
set guicursor+=i:ver100-iCursor
set guicursor+=n-v-c:blinkon0-Cursor
set guicursor+=i:blinkwait20-iCursor
set spelllang=cs,en
set spell
"interaktivní vyhledávání
set incsearch
"doplnování pomocí tabulátoru
set wildchar=<Tab>
set wildmenu
set wildmode=longest:full,full
"Pohyb v insert módu
imap <C-h> <Left>
imap <C-j> <Down>
imap <C-k> <Up>
imap <C-l> <Right>
imap § <esc>/[}{]<CR>/[^{}]<CR>i<space>
map <C-tab> :tabnext<CR>
map <C-S-tab> :tabprev<CR>
map <C-M-right> :tabnext<CR>
map <C-M-left> :tabprev<CR>
" pokud zahajujeme novy soubor, pouzit kodovani UTF8
set enc=utf-8
"highlight Folded guibg=blue guifg=yellow
"set foldmethod=syntax
" specialne pro prezentace v LaTeXu/Beameru
autocmd BufNewFile *.beamer.tex 0r ~/.vim/tex-beamer-sablona.tex
autocmd BufNewFile *.bib 0r ~/.vim/bib-sablona.bib
" automatizace pro soubory v LaTeXu
autocmd BufNewFile *[^r].tex 0r ~/.vim/tex-sablona.tex
autocmd BufEnter *.tex imap <F1> \begin{enumerate}<CR> \item{} <CR> \item{} <CR> \item{}<CR> \end{enumerate}<UP><UP><UP><LEFT><LEFT>
autocmd BufEnter *.tex imap <S-F1> \begin{itemize}<CR> \item{} <CR> \item{} <CR> \item{}<CR> \end{itemize}<UP><UP><UP><LEFT><LEFT>
autocmd BufEnter *.tex imap <C-S-F1> \{}<LEFT><LEFT><LEFT>
autocmd BufEnter *.tex imap <M-S-F1> \begin{}<CR> \end{}<UP><LEFT>
autocmd BufEnter *.tex imap <F2> \section{}<LEFT>
autocmd BufEnter *.tex imap <S-F2> \subsection{}<LEFT>
autocmd BufEnter *.tex imap <C-S-F2> \subsubsection{}<LEFT>
autocmd BufEnter *.tex imap <M-S-F2> \paragraph{}<LEFT>
autocmd BufEnter *.tex imap <F3> \textit{}<LEFT>
autocmd BufEnter *.tex imap <S-F3> \textbf{}<LEFT>
autocmd BufEnter *.tex imap <C-S-F3> \underline{}<LEFT>
autocmd BufEnter *.tex imap <M-S-F3> \texttt{}<LEFT>
autocmd BufEnter *.tex imap <F4> \begin{table}[ht] \caption{} \label{tb:} \centering <CR>\begin{tabular}{lcr}<CR> \toprule<CR> & & \\<CR> \hline<CR> & & \\<CR> & & \\<CR> \bottomrule<CR> \end{tabular} \end{table}<CR>
autocmd BufEnter *.tex imap <S-F4> \begin{figure}[h] \caption{} \label{fg:} \centering <CR><TAB>\includegraphics[width=5cm]{img/.pdf}<CR>\end{figure}<CR>
autocmd BufEnter *.tex imap <C-S-F4> \begin{figure}[ht]<CR> <TAB>\begin{minipage}[b]{0.5\linewidth}<CR> <TAB><TAB>\caption{Průběh } \label{fg:graf_intef} \centering <CR> <TAB><TAB>\resizebox{90mm}{!}{\input{data/.tex}} <CR> <TAB>\end{minipage}<CR> <TAB>\begin{minipage}[b]{0.5\linewidth}<CR> <TAB><TAB>\caption{Průběh } \label{fg:graf_} \centering <CR> <TAB><TAB>\resizebox{90mm}{!}{\input{data/.tex}}<CR> <TAB>\end{minipage}<CR> \end{figure}<CR>
autocmd BufEnter *.tex imap <M-S-F4> \ref{}<LEFT>
autocmd BufEnter *.tex imap <F5> $$<LEFT>
autocmd BufEnter *.tex imap <S-F5> \begin{equation} = \label{eq:}\end{equation}<esc>27hi
autocmd BufEnter *.tex imap <C-S-F5> \begin{equation*} = \end{equation*}<esc>18hi
autocmd BufEnter *.tex imap <M-S-F5> <CR>\begin{subequations}<CR> \begin{equation} = \label{eq:-a}\end{equation}<CR> \begin{equation} = \label{eq:-b}\end{equation}<CR> \end{subequations}<esc>2ki
autocmd BufEnter *.tex imap <F6> _{}<LEFT>
autocmd BufEnter *.tex imap <S-F6> ^{}<LEFT>
autocmd BufEnter *.tex imap <C-S-F6> \frac{}{}<esc>2hi
autocmd BufEnter *.tex imap <M-S-F6> \left( \right)<esc>5hi
autocmd BufEnter *.tex imap <F7> ^\circ C<LEFT>
autocmd BufEnter *.tex imap <S-F7> \,\pm\,
autocmd BufEnter *.tex imap <C-S-F7> \cdot
autocmd BufEnter *.tex imap <M-S-F7> \quad \Rightarrow \quad
autocmd BufEnter *.tex imap <F8> \sqrt{}<LEFT>
autocmd BufEnter *.tex imap <S-F8> \sqrt[]{}<esc>3hi
autocmd BufEnter *.tex imap <C-S-F8> \int_{}^{} \mbox{d}
autocmd BufEnter *.tex imap <F9> \frac{\partial }{\partial }<esc>12hi
" nahrazeni mezery za bezslabicnymi predlozkami za pevnou mezeru (~)
autocmd BufWrite *.tex :%s/\(\s[vVkKzZsS]\)\ \+/\1\~/ge
" internacionalizace diakritiky v bib souborech
autocmd BufWrite *.bib :%s/\([ěščřžďťňĚŠČŘŽĎŤŇ]\)/{\\v{\1}}/ge
autocmd BufWrite *.bib :%s/\([áéíóúýÁÉÍÓÚÝ]\)/{\\'{\1}}/ge
autocmd BufWrite *.bib :%s/\([ůŮ]\)/{\\o{\1}}/ge
autocmd BufWrite *.bib :%! cstocs utf8 ascii
" automatizace pro soubory HTML
autocmd BufNewFile *.htm* 0r ~/.vim/html-sablona.html
autocmd BufEnter *.htm* imap <F1><ul><CR> <li> </li><CR></ul><UP>
autocmd BufEnter *.htm* imap <S-F1><ol><CR> <li> </li><CR></ol><UP>
autocmd BufEnter *.htm* imap <C-S-F1> <><LEFT>
autocmd BufEnter *.htm* imap <M-S-F1> <><\/><esc>5hi
autocmd BufEnter *.htm* imap <F2> <h1> </h1><esc>5hi
autocmd BufEnter *.htm* imap <S-F2> <h2> </h2><esc>5hi
autocmd BufEnter *.htm* imap <C-S-F2> <h3> </h3><esc>5hi
autocmd BufEnter *.htm* imap <M-S-F2> <p> </p><esc>4hi
autocmd BufEnter *.htm* imap <F3> <i > </i><esc>5hi
autocmd BufEnter *.htm* imap <S-F3> <b > </b><esc>5hi
autocmd BufEnter *.htm* imap <C-S-F3> <u > </u><esc>5hi
autocmd BufEnter *.htm* imap <M-S-F3> <pre> </pre> <esc>5hi
autocmd BufEnter *.htm* imap <F4> <table width="100%" border="0"><CR> <tr><CR> <td> </td><CR></tr><CR></table><esc>2k5hi
autocmd BufEnter *.htm* imap <S-F4> <img alt="" src=""><LEFT><LEFT>
autocmd BufEnter *.htm* imap <M-S-F4> <a href=""> </a><esc>7hi
autocmd BufEnter *.htm* imap <S-F5> <center></center><esc>9hi
autocmd BufEnter *.htm* imap <F6> <sub><small> </small></sub><esc>15hi
autocmd BufEnter *.htm* imap <S-F6> <sup><small> </small> </sup><esc>15hi
" automatizace pro soubory C / C++
autocmd BufNewFile *.cpp 0r ~/.vim/cpp-sablona.cpp
" fold all functions
autocmd BufEnter *.cpp map <S-F7> :%s/^\([a-z].*\))$/\1) \/\*{{{\*\//g<cr>:%s/^}\s*$/} \/\*}}}\*\//g<cr>ggVGzcgg
autocmd BufEnter *.c map <S-F7> :%s/^\([a-z].*\))$/\1) \/\*{{{\*\//g<cr>:%s/^}\s*$/} \/\*}}}\*\//g<cr>ggVGzcgg
" zap/vyp komentaru
autocmd BufEnter *.cpp map <F3> V:s/^\([ \t]*\)/\1\/\/<CR>gv:s/\/\/\/\///<CR>
autocmd BufEnter *.cpp vmap <F3> :s/^\([ \t]*\)/\1\/\/<CR>gv:s/^\([ \t]*\)\/\/\/\//\1/<CR>
autocmd BufEnter *.c map <F3> V:s/^\([ \t]*\)/\1\/\/<CR>gv:s/\/\/\/\///<CR>
autocmd BufEnter *.c vmap <F3> :s/^\([ \t]*\)/\1\/\/<CR>gv:s/^\([ \t]*\)\/\/\/\//\1/<CR>
" gnuplot help
" loads the teplate
autocmd BufNewFile *.gnuplot 0r ~/.vim/gnuplot-sablona
" inserts the name of the input file (.csv) and output file (.tex)
autocmd BufNewFile *.gnuplot :0!echo 'input_file_name="'`echo "%" | sed s/.gnuplot//g | sed s/^.*[\/\\]//g `'.csv"; output_file_name="'`echo "%" | sed s/.gnuplot//g | sed s/^.*[\/\\]//g `'.tex"';
" | sed s/.gnuplot//g | sed `'
"
":let filenamewoext = expand("%:h") . ".bak"
"autocmd BufNewFile *.gnuplot :0!echo 'data_file_name="expand(%:t:r) .csv"; output_file_name="'`echo "%" | sed s/.gnuplot//g`'.csv"';
Stále však prosím o radu s LyXem.