I broke up with neovim....vim is my best friend now

This commit is contained in:
LinlyBoi
2023-04-30 08:14:07 +03:00
parent 0d185449c5
commit 4a4a6b1e81
5245 changed files with 468325 additions and 25 deletions

View File

@@ -0,0 +1,33 @@
PREFIX=/usr/local
VIMDIR=$(PREFIX)/share/vim
BINDIR=$(PREFIX)/bin
APPDATADIR=$(PREFIX)/share/appdata
VERSION=1.10.1
DATE=$(shell date +%Y%m%d)
COMMIT_COUNT=$(shell git log --oneline | wc -l)
ABBREV_HASH=$(shell git rev-parse --short=7 HEAD)
SNAPSHOTNAME=vim-latex-$(VERSION)-$(DATE).$(COMMIT_COUNT)-git$(ABBREV_HASH)
snapshot:
git archive --prefix '$(SNAPSHOTNAME)/' HEAD | gzip > '$(SNAPSHOTNAME).tar.gz'
install:
install -d '$(DESTDIR)$(VIMDIR)/doc'
install -m 0644 doc/*.txt '$(DESTDIR)$(VIMDIR)/doc'
install -d '$(DESTDIR)$(VIMDIR)'
cp -R compiler ftplugin indent plugin '$(DESTDIR)$(VIMDIR)'
chmod 0755 '$(DESTDIR)$(VIMDIR)/ftplugin/latex-suite/outline.py'
install -d '$(DESTDIR)$(BINDIR)'
install latextags ltags '$(DESTDIR)$(BINDIR)'
install -d '$(DESTDIR)$(APPDATADIR)'
install -m 644 vim-latex.metainfo.xml '$(DESTDIR)$(APPDATADIR)'
upload: snapshot
scp '$(SNAPSHOTNAME).tar.gz' frs.sourceforge.net:/home/frs/project/v/vi/vim-latex/snapshots
.PHONY: install upload

View File

@@ -0,0 +1,133 @@
CVSUSER = srinathava
SSHCMD = ssh1
DIR1 = $(PWD)
.PHONY: latexs clean release updoc uphtdocs ltt changelog install stallin sync
# The main target. This creates a latex suite archive (zip and tar.gz
# format) ensuring that all the files in the archive are in unix format so
# unix people can use it too...
latexs:
# plugins:
zip -q latexSuite.zip plugin/imaps.vim
zip -q latexSuite.zip plugin/SyntaxFolds.vim
zip -q latexSuite.zip plugin/libList.vim
zip -q latexSuite.zip plugin/remoteOpen.vim
zip -q latexSuite.zip plugin/filebrowser.vim
# ftplugins
zip -q latexSuite.zip ftplugin/tex_latexSuite.vim
zip -q latexSuite.zip ftplugin/bib_latexSuite.vim
zip -q latexSuite.zip ftplugin/tex/*.vim
# files in the latex-suite directory
zip -q -R latexSuite.zip `find ftplugin/latex-suite -name '*'`
# documentation
zip -q latexSuite.zip doc/latex*.txt
zip -q latexSuite.zip doc/imaps*.txt
# indentation
zip -q latexSuite.zip indent/tex.vim
# compiler
zip -q latexSuite.zip compiler/tex.vim
# external tools
zip -q latexSuite.zip ltags
# Now to make a tar.gz file from the .zip file.
rm -rf $(TMP)/latexSuite0793
mkdir -p $(TMP)/latexSuite0793
cp latexSuite.zip $(TMP)/latexSuite0793/
( \
cd $(TMP)/latexSuite0793/ ; \
unzip -q -o latexSuite.zip ; \
\rm latexSuite.zip ; \
tar czf latexSuite.tar.gz * ; \
\mv latexSuite.tar.gz $(DIR1)/ ; \
)
mv latexSuite.zip latexSuite`date +%Y%m%d`.zip ; \
mv latexSuite.tar.gz latexSuite`date +%Y%m%d`.tar.gz ; \
# target for removing archive files.
clean:
rm -f latexSuite200*
# make a local install directory.
ltt:
rm -rf /tmp/ltt/vimfiles/ftplugin
cp -f latexSuite.zip /tmp/ltt/vimfiles/
cd /tmp/ltt/vimfiles; unzip latexSuite.zip
# This target is related to a script I have on my sf.net account. That
# script looks like:
#
# #!/bin/bash
# cd ~/testing/vimfiles; \
# cvs -q update; \
# make clean; \
# make; \
# cp latexsuite.* ~/htdocs/download/
#
# Doing a release via sf.net has a couple of advantages:
# - I do not have to bother with CRLF pain anymore because the copy on
# sf.net will always have unix style EOLs.
# - The process is much faster because I only need to communicate a command
# from my computer to sf.net. The rest is done locally on the sf.net
# server.
release:
$(SSHCMD) $(CVSUSER)@vim-latex.sf.net /home/groups/v/vi/vim-latex/bin/upload
updoc:
$(SSHCMD) $(CVSUSER)@vim-latex.sf.net /home/groups/v/vi/vim-latex/bin/updoc
# This is another target akin to the release: target. This target updates
# the htdocs directory of the latex-suite project to the latest CVS
# version.
# This is again related to the uphtdocs script on my sf.net account which
# looks like:
# #!/bin/sh
#
# # update the htdocs directory
# cd /home/groups/v/vi/vim-latex/htdocs; cvs -q update
# # update the packages directory
# cd /home/groups/v/vi/vim-latex/htdocs/packages; cvs -q update
uphtdocs:
$(SSHCMD) $(CVSUSER)@vim-latex.sf.net /home/groups/v/vi/vim-latex/bin/uphtdocs
# Automatically generate the Changelog file using the cvs2cl utility
#
# Arguments:
# -S add a seperating line between filename and log
# --no-wrap Do not attempt to format the Changelog comments
# -f file to write the Changelog to.
changelog:
cvs2cl -S --no-wrap -f ftplugin/latex-suite/ChangeLog
# rsync is like cp (copy) on steroids. Here are some useful options:
# -C auto ignore like CVS
# -r recurse into directories
# -t preserve times
# -u update (do not overwrite newer files)
# -W whole files, no incremental checks (default for local usage)
# --existing only update files that already exist
# --exclude exclude files matching the pattern
# -n dry run (for testing)
# Usage: after "cvs update", do
# make install [VIMFILES=path/to/vimfiles]
# Before "cvs commit", do
# make stallin [VIMFILES=path/to/vimfiles]
# If you have made changes in both directories, and want to keep the most
# recent versions, do
# make sync [VIMFILES=path/to/vimfiles]
# Note: defining VIMFILES when you invoke make overrides the value below.
# Warning: install and stallin do not check modification times!
VIMFILES=${HOME}/.vim
EXCLUDE="--exclude='*~' --exclude='*.swp' --exclude='makefile'"
install:
rsync -CrtW ${EXCLUDE} . ${VIMFILES}
# stallin = reverse install
# If you can think of a better name for this target, be my guest!
stallin:
rsync -CrtW --existing ${VIMFILES}/ .
sync: install stallin

View File

@@ -0,0 +1,19 @@
# vim-latex aka latex-suite
This vim plugin provides a rich tool of features for editing latex files.
For further descriptions, we refer to
the [website](http://vim-latex.sourceforge.net/).
There is also a [user manual](http://vim-latex.sourceforge.net/index.php?subject=manual&title=Manual#user-manual)
and a [beginner's tutorial](http://vim-latex.sourceforge.net/index.php?subject=manual&title=Tutorial#tutorial).
## Installation
We recommend the installation via a plugin manager such as [pathogen](https://github.com/tpope/vim-pathogen) or [Vundle](https://github.com/gmarik/vundle).
Instructions for manual installation is documented at the [website](http://vim-latex.sourceforge.net/index.php?subject=download).
Recommended settings after installation can be found in [Section 1](http://vim-latex.sourceforge.net/documentation/latex-suite.html#recommended-settings) of the manual.
## Documentation
As already mentioned, the manual can be found [here](http://vim-latex.sourceforge.net/index.php?subject=manual&title=Manual#user-manual).
After installation, you will also have a rich in-vim documentation, see `:help latex-suite`.

View File

@@ -0,0 +1,412 @@
" File: tex.vim
" Type: compiler plugin for LaTeX
" Original Author: Artem Chuprina <ran@ran.pp.ru>
" Customization: Srinath Avadhanula <srinath@fastmail.fm>
" Description: {{{
" This file sets the 'makeprg' and 'errorformat' options for the LaTeX
" compiler. It is customizable to optionally ignore certain warnings and
" provides the ability to set a dynamic 'ignore-warning' level.
"
" By default it is set up in a 'non-verbose', 'ignore-common-warnings' mode,
" which means that irrelevant lines from the compilers output will be
" ignored and also some very common warnings are ignored.
"
" Depending on the 'ignore-level', the following kinds of messages are
" ignored. An ignore level of 3 for instance means that messages 1-3 will be
" ignored. By default, the ignore level is set to 4.
"
" 1. LaTeX Warning: Specifier 'h' changed to 't'.
" This errors occurs when TeX is not able to correctly place a floating
" object at a specified location, because of which it defaulted to the
" top of the page.
" 2. LaTeX Warning: Underfull box ...
" 3. LaTeX Warning: Overfull box ...
" both these warnings (very common) are due to \hbox settings not being
" satisfied nicely.
" 4. LaTeX Warning: You have requested ...,
" This warning occurs in slitex when using the xypic package.
" 5. Missing number error:
" Usually, when the name of an included eps file is spelled incorrectly,
" then the \bb-error message is accompanied by a bunch of "missing
" number, treated as zero" error messages. This level ignores these
" warnings.
" NOTE: number 5 is actually a latex error, not a warning!
"
" Use
" TCLevel <level>
" where level is a number to set the ignore level dynamically.
"
" When TCLevel is called with the unquoted string strict
" TClevel strict
" then the 'efm' switches to a 'verbose', 'no-lines-ignored' mode which is
" useful when you want to make final checks of your document and want to be
" careful not to let things slip by.
"
" TIP: MikTeX has a bug where it sometimes erroneously splits a line number
" into multiple lines. i.e, if the warning is on line 1234. the compiler
" output is:
" LaTeX Warning: ... on input line 123
" 4.
" In this case, vim will wrongly interpret the line-number as 123 instead
" of 1234. If you have cygwin, a simple remedy around this is to first
" copy the file vimlatex (provided) into your $PATH, make sure its
" executable and then set the variable g:tex_flavor to vimlatex in your
" ~/.vimrc (i.e putting let "g:tex_flavor = 'vimlatex'" in your .vimrc).
" This problem occurs rarely enough that its not a botheration for most
" people.
"
" TODO:
" 1. menu items for dynamically selecting a ignore warning level.
" }}}
if exists('b:suppress_latex_suite') && b:suppress_latex_suite == 1
finish
endif
" avoid reinclusion for the same buffer. keep it buffer local so it can be
" externally reset in case of emergency re-sourcing.
if exists('b:doneTexCompiler') && !exists('b:forceRedoTexCompiler')
finish
endif
let b:doneTexCompiler = 1
" ==============================================================================
" Customization of 'efm': {{{
" This section contains the customization variables which the user can set.
" g:Tex_IgnoredWarnings: This variable contains a ¡ seperated list of
" patterns which will be ignored in the TeX compiler's output. Use this
" carefully, otherwise you might end up losing valuable information.
if !exists('g:Tex_IgnoredWarnings')
let g:Tex_IgnoredWarnings =
\'Underfull'."\n".
\'Overfull'."\n".
\'specifier changed to'."\n".
\'You have requested'."\n".
\'Missing number, treated as zero.'."\n".
\'There were undefined references'."\n".
\'Citation %.%# undefined'
endif
" This is the number of warnings in the g:Tex_IgnoredWarnings string which
" will be ignored.
if !exists('g:Tex_IgnoreLevel')
let g:Tex_IgnoreLevel = 7
endif
" There will be lots of stuff in a typical compiler output which will
" completely fall through the 'efm' parsing. This options sets whether or not
" you will be shown those lines.
if !exists('g:Tex_IgnoreUnmatched')
let g:Tex_IgnoreUnmatched = 1
endif
" With all this customization, there is a slight risk that you might be
" ignoring valid warnings or errors. Therefore before getting the final copy
" of your work, you might want to reset the 'efm' with this variable set to 1.
" With that value, all the lines from the compiler are shown irrespective of
" whether they match the error or warning patterns.
" NOTE: An easier way of resetting the 'efm' to show everything is to do
" TCLevel strict
if !exists('g:Tex_ShowallLines')
let g:Tex_ShowallLines = 0
endif
" }}}
" ==============================================================================
" Customization of 'makeprg': {{{
" There are several alternate ways in which 'makeprg' is set up.
"
" Case 1
" ------
" The first is when this file is a part of latex-suite. In this case, a
" variable called g:Tex_DefaultTargetFormat exists, which gives the default
" format .tex files should be compiled into. In this case, we use the TTarget
" command provided by latex-suite.
"
" Case 2
" ------
" The user is using this file without latex-suite AND he wants to directly
" specify the complete 'makeprg'. Then he should set the g:Tex_CompileRule_dvi
" variable. This is a string which should be directly be able to be cast into
" &makeprg. An example of one such string is:
"
" g:Tex_CompileRule_dvi = 'pdflatex \\nonstopmode \\input\{$*\}'
"
" NOTE: You will need to escape back-slashes, {'s etc yourself if you are
" using this file independently of latex-suite.
" TODO: Should we also have a check for backslash escaping here based on
" platform?
"
" Case 3
" ------
" The use is using this file without latex-suite and he doesnt want any
" customization. In this case, this file makes some intelligent guesses based
" on the platform. If he doesn't want to specify the complete 'makeprg' but
" only the name of the compiler program (for example 'pdflatex' or 'latex'),
" then he sets b:tex_flavor or g:tex_flavor.
if exists('g:Tex_DefaultTargetFormat')
exec 'TTarget '.g:Tex_DefaultTargetFormat
elseif exists('g:Tex_CompileRule_dvi')
let &l:makeprg = g:Tex_CompileRule_dvi
else
" If buffer-local variable 'tex_flavor' exists, it defines TeX flavor,
" otherwize the same for global variable with same name, else it will be LaTeX
if exists("b:tex_flavor")
let current_compiler = b:tex_flavor
elseif exists("g:tex_flavor")
let current_compiler = g:tex_flavor
else
let current_compiler = "latex"
end
if has('win32')
let escChars = ''
else
let escChars = '{}\'
endif
" Furthermore, if 'win32' is detected, then we want to set the arguments up so
" that miktex can handle it.
if has('win32')
let options = '--src-specials'
else
let options = ''
endif
let &l:makeprg = current_compiler . ' ' . options .
\ escape(' \nonstopmode \input{$*}', escChars)
endif
" }}}
" ==============================================================================
" Functions for setting up a customized 'efm' {{{
" IgnoreWarnings: parses g:Tex_IgnoredWarnings for message customization {{{
" Description:
function! <SID>IgnoreWarnings()
let s:Ignored_Overfull = 0
let i = 1
while s:Strntok(g:Tex_IgnoredWarnings, "\n", i) != '' &&
\ i <= g:Tex_IgnoreLevel
let warningPat = s:Strntok(g:Tex_IgnoredWarnings, "\n", i)
let warningPat = escape(substitute(warningPat, '[\,]', '%\\\\&', 'g'), ' ')
if warningPat =~? 'overfull'
let s:Ignored_Overfull = 1
if ( v:version > 800 || v:version == 800 && has("patch26") )
" Overfull warnings are ignored as 'warnings'. Therefore, we can gobble
" some of the following lines with %-C (see below)
exe 'setlocal efm+=%-W%.%#'.warningPat.'%.%#'
else
exe 'setlocal efm+=%-G%.%#'.warningPat.'%.%#'
endif
else
exe 'setlocal efm+=%-G%.%#'.warningPat.'%.%#'
endif
let i = i + 1
endwhile
endfunction
" }}}
" SetLatexEfm: sets the 'efm' for the latex compiler {{{
" Description:
function! <SID>SetLatexEfm()
let pm = ( g:Tex_ShowallLines == 1 ? '+' : '-' )
" Add a dummy entry to overwrite the global setting.
setlocal efm=dummy_value
if !g:Tex_ShowallLines
call s:IgnoreWarnings()
endif
setlocal efm+=%E!\ LaTeX\ %trror:\ %m
setlocal efm+=%E!\ %m
setlocal efm+=%E%f:%l:\ %m
" If we do not ignore 'overfull \hbox' messages, we care for them to get the
" line number.
if s:Ignored_Overfull == 0
setlocal efm+=%+WOverfull\ %mat\ lines\ %l--%*\\d
setlocal efm+=%+WOverfull\ %mat\ line\ %l
endif
" Add some generic warnings
setlocal efm+=%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#
setlocal efm+=%+W%.%#\ at\ lines\ %l--%*\\d
setlocal efm+=%+WLaTeX\ %.%#Warning:\ %m
setlocal efm+=%+WPackage\ %.%#Warning:\ %m
" 'Overfull \hbox' messages are ended by:
exec 'setlocal efm+=%'.pm.'Z\ []'
" Empty line ends multi-line messages
setlocal efm+=%-Z
exec 'setlocal efm+=%'.pm.'C(%.%#)\ %#%m\ on\ input\ line\ %l.'
exec 'setlocal efm+=%'.pm.'C(%.%#)\ %#%m'
exec 'setlocal efm+=%'.pm.'Cl.%l\ %m'
exec 'setlocal efm+=%'.pm.'Cl.%l\ '
exec 'setlocal efm+=%'.pm.'C\ \ %m'
exec 'setlocal efm+=%'.pm.'C%.%#-%.%#'
exec 'setlocal efm+=%'.pm.'C%.%#[]%.%#'
exec 'setlocal efm+=%'.pm.'C[]%.%#'
exec 'setlocal efm+=%'.pm.'C%.%#%[{}\\]%.%#'
exec 'setlocal efm+=%'.pm.'C<%.%#>%m'
exec 'setlocal efm+=%'.pm.'C\ \ %m'
exec 'setlocal efm+=%'.pm.'GSee\ the\ LaTeX%m'
exec 'setlocal efm+=%'.pm.'GType\ \ H\ <return>%m'
exec 'setlocal efm+=%'.pm.'G\ ...%.%#'
exec 'setlocal efm+=%'.pm.'G%.%#\ (C)\ %.%#'
exec 'setlocal efm+=%'.pm.'G(see\ the\ transcript%.%#)'
exec 'setlocal efm+=%'.pm.'G\\s%#'
" After a 'overfull \hbox' message, there is some garbage from the input.
" We try to match it, such that parenthesis in this garbage does not
" confuse the OPQ-patterns below.
" Every line continues a multiline pattern (hopefully a 'overfull \hbox'
" message).
" Due to a bug in old versions of vim, this cannot be used if we ignore the
" 'overfull \hbox' messages, see vim/vim#1126.
if s:Ignored_Overfull == 0 || ( v:version > 800 || v:version == 800 && has("patch26") )
exec 'setlocal efm+=%'.pm.'C%.%#'
endif
" Now, we try to trace the used files.
"
" In principle, the following combinations could arise in the LaTeX logs:
"
" )* \((%f)\)* (%f
" [Close files, skip some files, open a file]
"
" (%f))*
" [Skip some files, close some files]
"
" And you will find many more awkward combinations...
"
" Even something like this is possible:
" [18] [19] [20] (./bla.bbl [21])
"
" After a %[OPQ] is matched, the %r part is passed to the same and
" following patterns. Hence, we have to add many $[OPQ]-patterns.
"
" If you use vim to compile your documents, you might want to use
" :let $max_print_line=1024
" such that latex will not wrap the filenames. Otherwise, you could use it
" as an environment variable or simply use
" max_print_line=1024 pdflatex ...
" in your terminal. If you are using latexmk, you should set
" $ENV{'max_print_line'} = '1024';
" $log_wrap = $ENV{'max_print_line'};
" in your ~/.latexmkrc
" The first pattern is needed to match lines like
" '[10] [11] (some_file.txt)',
" where the first number correspond to an output page in the document
exec 'setlocal efm+=%'.pm.'O[%*\\d]%r'
" Some close patters
exec 'setlocal efm+=%'.pm.'Q\ %#)%r'
exec 'setlocal efm+=%'.pm.'Q\ %#[%\\d%*[^()])%r'
" The next pattern is needed to match lines like
" ' ])',
exec 'setlocal efm+=%'.pm.'Q\ %#])%r'
" Skip pattern
exec 'setlocal efm+=%'.pm.'O(%f)%r'
" Some openings
exec 'setlocal efm+=%'.pm.'P(%f%r'
exec 'setlocal efm+=%'.pm.'P%*[^()](%f%r'
exec 'setlocal efm+=%'.pm.'P(%f%*[^()]'
exec 'setlocal efm+=%'.pm.'P[%\\d%[^()]%#(%f%r'
" Now, the sledgehammer to cope with awkward endless combinations (did you
" ever tried tikz/pgf?)
" We have to build up the string first, otherwise we cannot append it with
" '+='.
let PQO = '%'.pm.'P(%f%r,%'.pm.'Q)%r,%'.pm.'O(%f)%r,%'.pm.'O[%*\\d]%r'
let PQOs = PQO
for xxx in range(3)
let PQOs .= ',' . PQO
endfor
exec 'setlocal efm+=' . PQOs
" Finally, there are some lonely page numbers after all the patterns.
exec 'setlocal efm+=%'.pm.'O[%*\\d'
" This gobbles some entries consisting only of whitespace, in fact, it
" matches the empty line.
" See https://github.com/vim/vim/issues/807
exec 'setlocal efm+=%'.pm.'O'
if g:Tex_IgnoreUnmatched && !g:Tex_ShowallLines
" Ignore all lines which are unmatched so far.
setlocal efm+=%-G%.%#
" Sometimes, there is some garbage after a ')'
setlocal efm+=%-O%.%#
endif
" Finally, remove the dummy entry.
setlocal efm-=dummy_value
endfunction
" }}}
" Strntok: extract the n^th token from a list {{{
" example: Strntok('1,23,3', ',', 2) = 23
fun! <SID>Strntok(s, tok, n)
return matchstr( a:s.a:tok[0], '\v(\zs([^'.a:tok.']*)\ze['.a:tok.']){'.a:n.'}')
endfun
" }}}
" SetTexCompilerLevel: sets the "level" for the latex compiler {{{
function! <SID>SetTexCompilerLevel(...)
if a:0 > 0
let level = a:1
else
call Tex_ResetIncrementNumber(0)
echo substitute(g:Tex_IgnoredWarnings,
\ '^\|\n\zs\S', '\=Tex_IncrementNumber(1)." ".submatch(0)', 'g')
let level = input("\nChoose an ignore level: ")
if level == ''
return
endif
endif
if level == 'strict'
let g:Tex_ShowallLines = 1
elseif level =~ '^\d\+$'
let g:Tex_ShowallLines = 0
let g:Tex_IgnoreLevel = level
else
echoerr "SetTexCompilerLevel: Unkwown option [".level."]"
end
call s:SetLatexEfm()
endfunction
com! -nargs=? TCLevel :call <SID>SetTexCompilerLevel(<f-args>)
" }}}
" }}}
" ==============================================================================
call s:SetLatexEfm()
" Set the errorfile if not already set by somebody else
if &errorfile ==# '' || &errorfile ==# 'errors.err'
try
execute 'set errorfile=' . fnameescape(Tex_GetMainFileName(':p:r') . '.log')
catch
endtry
endif
if !exists('*Tex_Debug')
function! Tex_Debug(...)
endfunction
endif
call Tex_Debug("compiler/tex.vim: sourcing this file", "comp")
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4

View File

@@ -0,0 +1,62 @@
projects = latex-suite latex-suite-quickstart
htmlfiles = $(addsuffix .html, $(projects))
txtfiles = $(addsuffix .txt, $(projects))
cssfiles = $(addsuffix .css, $(projects))
all = $(projects) $(htmlfiles) $(cssfiles) $(txtfiles)
xsltproc=xsltproc
db2vim=db2vim/db2vim
# Use for debugging:
#xsltproc=strace -e trace=file xsltproc --nonet --load-trace
# export XML_DEBUG_CATALOG = 1
# Specify local catalog to not use system installed dtd/xsl files
# export XML_CATALOG_FILES=catalog.xml
# User configuration of this Makefile goes into Makefile.local
# E.g. to use a catalog file installed by the user.
-include Makefile.local
# Default Target is to create all documentation files
all: $(all)
# create multi page html (chunk xhtml)
$(projects): %: %.xml latex-suite-chunk.xsl latex-suite-common.xsl
$(xsltproc) -o $@/ latex-suite-chunk.xsl $<
# create single html files
$(htmlfiles): %.html: %.xml latex-suite.xsl latex-suite-common.xsl
$(xsltproc) -o $@ latex-suite.xsl $<
# create vim flat files
latex-suite.txt: %.txt: %.xml
$(db2vim) --prefix=ls_ $< > $@
latex-suite-quickstart.txt: %.txt: %.xml
$(db2vim) --prefix=lq_ $< > $@
# validate xml
validate:
for file in *.xml; do \
xmllint --valid --noout $$file; \
done
clean:
rm -f $(htmlfiles)
rm -rf $(projects)
# $(txtfiles) are currently in revision control, therefore they are not
# removed in the clean target
mr-proper: clean
rm -f $(txtfiles)
upload: $(all)
# vim-latex-web is configured in ~/.ssh/config
#Host vim-latex-web
# Hostname web.sourceforge.net
# User SOURCEFORGE_USERNAME,vim-latex
rsync --perms --chmod g+w,o-w --delete -lrtvz $(all) vim-latex-web:/home/groups/v/vi/vim-latex/htdocs/documentation/
# vim:nowrap

View File

@@ -0,0 +1,29 @@
# Manual files
ls-flat:
java com.icl.saxon.StyleSheet latex-suite.xml latex-suite.xsl > latex-suite.html
ls-chunk:
( \
cd latex-suite && \
java com.icl.saxon.StyleSheet ../latex-suite.xml ../latex-suite-chunk.xsl \
)
ls-txt:
db2vim --prefix=ls_ latex-suite.xml > latex-suite.txt
# Quickstart files
lsq-flat:
java com.icl.saxon.StyleSheet latex-suite-quickstart.xml latex-suite.xsl > latex-suite-quickstart.html
lsq-chunk:
( \
cd latex-suite-quickstart && \
java com.icl.saxon.StyleSheet ../latex-suite-quickstart.xml ../latex-suite-chunk.xsl \
)
lsq-txt:
db2vim --prefix=lq_ latex-suite-quickstart.xml > latex-suite-quickstart.txt
cvsci:
cvs ci latex-suite.xml latex-suite.txt
# vim:nowrap

View File

@@ -0,0 +1,110 @@
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
This file is outdated, please look at README.new for updated information
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
====================================
Generating Latex-Suite documentation
====================================
In order to generate the html files and vim-help files from the XML source,
you will need to do follow the following steps. The steps are complex only
for a windows machine. On most (modern) linux machines, the various
utilities are already installed and all you need to do is some
soft-linking.
1. Download the Docbook XSL stylesheets from
http://sourceforge.net/project/showfiles.php?group_id=21935
I downloaded docbook-xsl-1.61.2.tar.gz. Unpack this archive under the
present directory. You should see something like::
./docbook-xsl-1.XX.X/
Rename this to::
./docbook-xsl
Alternatively, if you are on a modern unix system, the docbook-xsl
stylesheets should already be installed on your system. Soft-linking
will thus work more simply. On a typical Debian box, just do::
ln -s /usr/share/sgml/docbook/stylesheet/xsl/nwalsh docbook-xsl
The docbook-xsl stylesheets can be installed via the docbook-xsl
package on Debian. (Just use apt-get).
2. Download the Docbook DTD from
http://www.oasis-open.org/docbook/xml/4.2/docbook-xml-4.2.zip
Extract this into a subdirectory ``docbook-xml/`` under the present
directory. You should see something like::
./docbook-xml/
with a file ``docbookx.dtd`` located there.
**CAUTION**:
The archive above does not create a top level directory but
unzips directly into the present directory. Therefore, make sure to
run the unzip by first creating ``./docbook-xml/``, copying the zip
file there and then unzipping.
Alternatively, if you are on a modern unix system, the docbook-xml DTD
will already be installed. Softlinking will thus work. On a typical
Debian box, you could do::
ln -s /usr/share/sgml/docbook/dtd/xml/4.2 docbook-xml
On debian, you need the docbook-xml package on Debian. (Just use
apt-get).
3. Download saxon.jar from
http://vim-latex.sourceforge.net/documentation/saxon.jar
This is the bare .jar file without any of the other things which saxon
comes with. Add the ``saxon.jar`` file to your ``$CLASSPATH`` setting.
**NOTE:**
The ``$CLASSPATH`` setting should point to the ``saxon.jar`` file,
not the directory where it resides.
Again, on a unix system, you might not need to download this. For debian
systems, the saxon.jar file resides in::
/usr/share/java/saxon.jar
You can point your ``$CLASSPATH`` to that file.
4. Download db2vim (created by me :)) via anonymous cvs::
mkdir -p ~/bin/db2vim
cvs -d :pserver:anonymous@cvs.vim-latex.sf.net:/cvsroot/vim-latex \
co -d ~/bin/db2vim db2vim
Add the ``~/bin/db2vim/`` directory thus created to your ``$PATH``
setting.
5. Create a new directory ``latex-suite/`` under the present directory for
the chunked html files to reside in. You should see something like::
./latex-suite/
6. Copy ``Makefile.in`` to ``Makefile`` or ``makefile`` and perform any
necessary customizations. For example, if you are using Activestate
python under windows, you will need to change the ls-txt: target as::
python e:/srinath/testing/db2vim/db2vim latex-suite.xml > latex-suite.txt
Thats it! You are ready. Now you can do::
make ls-chunk
make ls-flat
make ls-txt
to create the 3 formats.
Author: Srinath Avadhanula <srinath@fastmail.fm>

View File

@@ -0,0 +1,25 @@
====================================
Generating Latex-Suite documentation
====================================
You need:
- xsltproc
- Docbook XSL stylesheets (*)
- Docbook DTD (*)
(*) These files will be downloaded every time you create the documentation,
unless you install or download them.
To install the required packages, you can run as root on
Fedora:
yum install libxslt docbook-style-xsl docbook-dtds
Arch Linux:
pacman -S libxslt docbook-xml docbook-xsl
Ubuntu (16.04):
apt-get install xsltproc docbook-xsl

View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<!DOCTYPE catalog
PUBLIC "-//OASIS/DTD Entity Resolution XML Catalog V1.0//EN"
"http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<rewriteSystem
systemIdStartString="http://docbook.sourceforge.net/release/xsl/current"
rewritePrefix="docbook-xsl/"/>
<rewriteURI
uriStartString="http://docbook.sourceforge.net/release/xsl/current/"
rewritePrefix="docbook-xsl/" />
</catalog>

View File

@@ -0,0 +1,27 @@
def GetTextFromElementNode(element, childNamePattern):
children = element.getElementsByTagName(childNamePattern)
texts = []
for child in children:
texts.append(GetText(child.childNodes))
return texts
def GetText(nodelist):
rc = ""
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
rc = rc + node.data
return rc
def GetTextFromElement(element):
text = ""
child = element.firstChild
while not child.nextSibling is None:
child = child.nextSibling
print child
if child.nodeType == child.TEXT_NODE:
text = text + child.data
return text

View File

@@ -0,0 +1,715 @@
#!/usr/bin/env python2
r"""
db2vim [options] file.xml
SHORT OPTIONS
-d Prints some debugging information on stderr.
-s If given, the db2vim operates in a 'stict' conversion mode, i.e, any
element which does not have a handler defined for them it be
completeley ignored including all its children. Otherwise, db2vim will
recurse into an unknown tag and process any of its children it
recognizes. Since db2vim always recognizes text nodes, not using this
option has the effect that all text will be printed out, even if
somewhat incorrectly.
LONG OPTIONS
--prefix=<prefix>
This is a string like "ls_" which will be prepended to the section
numbers. Default to 'ls_' if unsupplied.
"""
import xml.dom.minidom
import getopt
import string
import re
import sys
# Okay. so I import *. Shoot me.
from textutils import *
from domutils import *
# define a bunch of constants for formatting.
TEXT_WIDTH = 80
BLOCK_QUOTE = 4
COL_SPACE = 2
# a bunch of globals used in creating the Table of contents.
#
# TOC_HASH['section 1.1 label'] = 'ls_1_1'
#
# LEVEL_HASH['section 1.1 label'] = 1
# (top level article has level 0)
#
# TITLE_HASH['section 1.1 label'] = 'Title of section 1.1'
#
# FILENAME = the name of the file being processed with the last extension
# changed to .txt
#
# TOC_PREFIX = 'ls_' (the prefix used to create the section labels).
TOC_HASH = {}
LEVEL_HASH = {}
TITLE_HASH = {}
FILENAME = ''
TOC_PREFIX = ''
ANCHOR_HASH = {}
URL_HASH = {}
# STDERR for printing debugging info.
DEBUG = 0
STDERR = sys.stderr
STRICT = 0
NUM_ANCHORS = {0: 1}
###############################################################################
# Miscellaneous utility functions
###############################################################################
def encodeTo52(num):
if num < 26:
return unichr(ord('a') + num)
elif num < 52:
return unichr(ord('A') + num - 26)
else:
return encodeTo52(int(num / 52)) + encodeTo52(num % 52)
def makeTocHash(rootElement, width, prefix='', level=0):
lastLabelUsed = 0
for section in rootElement.getChildrenByTagName('section'):
title = section.getChildrenByTagName('title')[0]
titleText = handleElement(title, width)
lastLabelUsed += 1
thisLabel = TOC_PREFIX + prefix + str(lastLabelUsed)
sectionid = section.getAttribute('id')
if not sectionid:
section.setAttribute('id', thisLabel)
sectionid = thisLabel
NUM_ANCHORS[0] += 1
ANCHOR_HASH[sectionid] = TOC_PREFIX + 'a_' + encodeTo52(
NUM_ANCHORS[0] + 52)
TOC_HASH[sectionid] = thisLabel
LEVEL_HASH[sectionid] = level
TITLE_HASH[sectionid] = titleText
if section.getChildrenByTagName('section'):
makeTocHash(section, width - 5, prefix=prefix +
str(lastLabelUsed) + '_', level=level + 1)
def makeAnchorHash(rootElement):
anchors = rootElement.getElementsByTagName(
'anchor') + rootElement.getElementsByTagName('note')
for anchor in anchors:
if not anchor.getAttribute('id'):
continue
NUM_ANCHORS[0] += 1
if anchor.getAttribute('id') in ANCHOR_HASH or \
anchor.getAttribute('id') in TOC_HASH:
sys.stderr.write("Warning: anchor [%s] multiply defined\n" %
anchor.getAttribute('id'))
ANCHOR_HASH[anchor.getAttribute(
'id')] = TOC_PREFIX + 'a_' + encodeTo52(NUM_ANCHORS[0] + 52)
def makeURLHash(rootElement):
urls = rootElement.getElementsByTagName('ulink')
numURLs = 0
for url in urls:
if not url.getAttribute('url') or url.getAttribute('url') in URL_HASH:
continue
numURLs += 1
URL_HASH[url.getAttribute('url')] = TOC_PREFIX + 'u_' + str(numURLs)
def makeTOC(node, width, maxlevel=1):
retText = ""
for section in node.getChildrenByTagName('section'):
sectionid = section.getAttribute('id')
thisLabel = TOC_HASH.get(sectionid, '')
titleText = TITLE_HASH.get(sectionid, '')
level = LEVEL_HASH.get(sectionid, 10)
if level <= maxlevel:
retText += '|' + thisLabel + '| ' + titleText + '\n'
if level < maxlevel and section.getChildrenByTagName('section'):
childText = makeTOC(section, width - 5)
retText += VertCatString(" ", 4, childText) + '\n'
retText = re.sub(r'\s+$', r'\n', retText)
return retText
###############################################################################
# Generalized function for handling dom elements.
###############################################################################
def IsInlineTag(self):
if self.nodeType == self.TEXT_NODE:
return 1
elif inlineTags.get(self.tagName, 0):
return 1
else:
return 0
def getChildrenByTagName(self, name):
"""
extension to the xml.dom.minidom.Element class. returns all direct
descendants of this Element.
"""
nodeList = []
child = self.firstChild
while not child is None:
if child.nodeType == child.ELEMENT_NODE and child.nodeName == name:
nodeList.append(child)
child = child.nextSibling
return nodeList
xml.dom.minidom.Element.getChildrenByTagName = getChildrenByTagName
def handleElement(rootElement, width=TEXT_WIDTH):
"""
Generalized function to handle an Element node in a DOM tree.
"""
retText = ""
child = rootElement.firstChild
while not child is None:
printerr('node type = %d' % child.nodeType)
if child.nodeType == child.ELEMENT_NODE:
printerr('processing [%s]' % child.tagName)
isinline = IsInlineTag(child)
# if the child is an Element and if a handler exists, then call it.
if not isinline \
and child.nodeType == child.ELEMENT_NODE \
and child.tagName in handlerMaps:
# offset the child text by the current indentation value
printerr('making recursive call to known child.')
retText += handlerMaps[child.tagName](child, width)
child = child.nextSibling
elif not isinline \
and child.nodeType == child.PROCESSING_INSTRUCTION_NODE \
and child.target == 'vimhelp':
if child.data in handlerMaps:
retText += handlerMaps[child.data](child, width)
child = child.nextSibling
# if its a text node or an inline element node, collect consecutive
# text nodes into a single paragraph and indent it.
elif isinline:
text = ""
while not child is None and IsInlineTag(child):
if child.nodeType == child.TEXT_NODE:
text += child.data
elif child.nodeType == child.ELEMENT_NODE:
if child.tagName in handlerMaps:
text += handlerMaps[child.tagName](child, width)
else:
text += GetText(child.childNodes)
child = child.nextSibling
retText += IndentParagraphs(text, width)
# If we cannot understand _anything_ about the element, then just
# handle its children hoping we have something to gather from
# there.
elif not STRICT:
printerr('making recursive call for unkown child')
retText += handleElement(child, width)
child = child.nextSibling
else:
child = child.nextSibling
return retText
###############################################################################
# Functions for handling various xml tags
###############################################################################
def handleArticleInfo(articleinfo, width):
makeTocHash(articleinfo.parentNode, width)
makeAnchorHash(articleinfo.parentNode)
makeURLHash(articleinfo.parentNode)
title = articleinfo.getChildrenByTagName('title')
if title is None:
print("Article should have a title!")
sys.exit(1)
name = GetText(title[0].childNodes)
authors = articleinfo.getChildrenByTagName('author')
authorText = ''
for author in authors:
firstname = ''
surname = ''
if author.getElementsByTagName('firstname'):
firstname = GetTextFromElementNode(author, 'firstname')[0]
if author.getChildrenByTagName('surname'):
surname = GetTextFromElementNode(author, 'surname')[0]
if author.getElementsByTagName('email'):
email = GetTextFromElementNode(author, 'email')[0]
authorText = authorText + firstname + ' ' + surname + \
' <' + email + '>\n'
abstractText = ''
abstract = articleinfo.getChildrenByTagName('abstract')
if abstract is not None:
abstractText = '\n\n' + CenterText('Abstract\n========', width)
abstractText += handleElement(abstract[0], width) + '\n'
retText = CenterText(name + '\n*' + FILENAME + '*\n' + authorText, width)
retText += abstractText
toc = makeTOC(articleinfo.parentNode, width)
return retText + '\n' + RightJustify('*' + FILENAME + '-toc*', width) + \
'\n' + toc
def handleOption(option, width):
retText = ""
names = GetTextFromElementNode(option, "name")
for name in names:
retText += string.rjust("*" + name + "*", width) + "\n"
nameTexts = ""
maxNameLen = -1
for name in names:
maxNameLen = max(maxNameLen, len(name + " "))
nameTexts += name + " \n"
desc = option.getChildrenByTagName("desc")[0]
descText = handleElement(desc, width=width - maxNameLen)
retText += VertCatString(nameTexts + " ", None, descText)
return retText + "\n"
def handleOptionDefault(default, width):
type = string.join(GetTextFromElementNode(default, "type"), "\n")
extra = string.join(GetTextFromElementNode(default, "extra"), "\n")
return type + "\t(" + extra + ")"
def handleTableRoot(root, width):
tgroup = root.getChildrenByTagName('tgroup')[0]
if tgroup is None:
return ''
rows = []
numHeadRows = 0
if tgroup.getChildrenByTagName('thead'):
thead = tgroup.getChildrenByTagName('thead')[0]
rows = thead.getChildrenByTagName('row')
numHeadRows = len(rows)
tbody = tgroup.getChildrenByTagName('tbody')[0]
rows += tbody.getChildrenByTagName('row')
widths, text = calculateColumnWidthsDoublePass(rows, width)
headText = text[0:numHeadRows]
bodyText = text[numHeadRows:]
headTable = FormatTable(headText, ROW_SPACE=1, COL_SPACE=
COL_SPACE, justify=0, widths=widths)
if headTable:
headTable = re.sub(r'\n|$', '\g<0>~', headTable)
bodyTable = FormatTable(bodyText, ROW_SPACE=1, COL_SPACE=
COL_SPACE, justify=0, widths=widths)
return headTable + '\n' + re.sub(r'\n+$', '', bodyTable) + '\n\n'
def calculateColumnWidths(rows, alloc_widths):
widths = {}
text = []
for row in rows:
cols = row.getChildrenByTagName("entry")
if len(alloc_widths) == 1:
alloc_widths *= len(cols)
colwidths = []
rowtext = []
for col, width in zip(cols, alloc_widths):
coltext = handleElement(col, width)
rowtext.append(coltext)
# This is the 'width' of the current cell including the
# whitespace padding.
colwidths.append(max(map(len, coltext.split("\n")))
+ COL_SPACE)
text.append(rowtext)
# update the widths of the columns by finding the maximum
# width of all cells in this column.
for i in range(len(colwidths)):
widths[i] = max(colwidths[i], widths.get(i, -1))
return widths, text
def calculateColumnWidthsDoublePass(rows, width):
maxwidths, text = calculateColumnWidths(rows, [width])
if reduce(lambda x, y: x + y, maxwidths.values()) <= width:
return maxwidths, text
# now find out how many columns exceed the maximum permitted width.
# nlarge: number of columns which are too wide.
# remainingWidth: width which these large columns can share.
nlarge = 0
remainingWidth = width
for colwidth in maxwidths.values():
if colwidth > width / len(maxwidths):
nlarge += 1
else:
remainingWidth += -colwidth
# newmaxwidth: width which each of the large columns is allowed.
newmaxwidth = remainingWidth / max(nlarge, 1)
newcolwidths = []
for colwidth in maxwidths.values():
newcolwidths += [min(colwidth, newmaxwidth)]
# make another run and this time ask each cell to restrict itself to
# newmaxwidth as calculated above.
newmaxwidth, newtext = calculateColumnWidths(rows, newcolwidths)
return newmaxwidth, newtext
def handleCode(code, width):
retText = GetText(code.childNodes)
return " &codebegin;\n" + VertCatString(" ", 4, retText) + "&codeend;"
def handleList(list, width, marker=0):
if list.tagName == 'simplelist':
child = 'member'
decoration = ''
elif list.tagName == 'orderedlist':
child = 'listitem'
else:
child = 'member'
decoration = '- '
retText = ""
items = list.getChildrenByTagName(child)
i = 1
for item in items:
if list.tagName == 'orderedlist':
decoration = str(i) + '. '
i = i + 1
itemText = handleElement(item, width - len(decoration))
itemText = VertCatString(decoration, None, itemText)
retText += '\n' + re.sub(r'\s+$', '', itemText) + "\n"
return retText
def handleNote(note, width):
title = None
if note.getChildrenByTagName('title'):
title = note.getChildrenByTagName('title')[0]
name = GetText(title.childNodes)
note.removeChild(title)
noteid = ''
if note.getAttribute('id'):
noteTagText = '*' + note.getAttribute('id') + '* '
noteTagText += '*' + ANCHOR_HASH[note.getAttribute('id')] + '*'
noteTagText = IndentParagraphs(noteTagText, width / 2)
noteid = RightJustify(noteTagText, width) + '\n'
noteText = handleElement(note, width - len("NOTE: "))
if title is not None:
noteText = name + '\n' + ('-' * len(name)) + '\n' + noteText
noteText = noteid + VertCatString("NOTE: ", None, noteText)
return noteText + "\n"
def handleParagraph(paragraph, width):
partext = handleElement(paragraph, width)
partext = re.sub(r'\n+$', '', partext)
partext = re.sub(r'^\n+', '', partext)
return partext + "\n\n"
def handleFormalParagraph(formalparagraph, width):
title = None
if formalparagraph.getChildrenByTagName('title'):
title = formalparagraph.getChildrenByTagName('title')[0]
name = GetText(title.childNodes)
formalparagraph.removeChild(title)
partext = handleElement(formalparagraph, width)
partext = re.sub(r'\n+$', '', partext)
partext = re.sub(r'^\n+', '', partext)
if title is not None:
partext = name + '\n' + ('-' * len(name)) + '\n' + partext
return partext + "\n\n"
def handleBlockQuote(block, width):
text = handleElement(block, width - BLOCK_QUOTE)
text = VertCatString(" " * BLOCK_QUOTE,
BLOCK_QUOTE, text)
return text + "\n"
def handleLink(link, width):
linkend = link.getAttribute('linkend')
if linkend not in ANCHOR_HASH:
print >> STDERR, "Warning: Link ID [%s] not found in TOC" % linkend
text = handleElement(link, width)
anchorpt = ANCHOR_HASH.get(linkend)
if not anchorpt:
anchorpt = ''
return text + ' [|' + anchorpt + '|]'
def handleAnchor(anchor, width):
anchorText = '*' + anchor.getAttribute('id') + '* '
anchorText += '*' + ANCHOR_HASH[anchor.getAttribute('id')] + '*'
return RightJustify(anchorText, width) + "\n"
def handleSection(section, width):
title = section.getChildrenByTagName('title')[0]
name = handleElement(title, width)
sectionid = section.getAttribute('id')
tagsformatted = ''
if sectionid in TOC_HASH:
tagsformatted = '*%s* ' % TOC_HASH[sectionid]
if sectionid in ANCHOR_HASH:
tagsformatted += '*%s* ' % ANCHOR_HASH[sectionid]
if sectionid and sectionid in TOC_HASH and \
sectionid != TOC_HASH[sectionid]:
tagsformatted += '*%s*' % sectionid
# try to indent to a width of 20
tagsformatted = RightJustify(IndentParagraphs(tagsformatted, 30), 0)
tagswidth = TextWidth(tagsformatted)
# width(name) + nspaces + width(tags) = 80
if len(tagsformatted) > 2:
header = VertCatString(name, 80 - tagswidth, tagsformatted)
else:
header = name
section.removeChild(title)
text = handleElement(section, width)
thislevel = LEVEL_HASH.get(sectionid, -1)
if thislevel == 0:
delim = '='
newlines = '\n\n'
elif thislevel == 1:
delim = '-'
newlines = '\n'
else:
delim = ''
newlines = '\n'
thisTOC = ''
if thislevel <= 1:
thisTOC = makeTOC(section, width, maxlevel=1)
return "\n" + (delim * TEXT_WIDTH) + \
"\n" + header + newlines + thisTOC + newlines + re.sub(
r'\n+$', '', text) + "\n"
def handleUlink(ulink, width):
url = ulink.getAttribute('url')
text = handleElement(ulink)
# URL_HASH is created at the very beginning
if url:
return text + ' |%s|' % URL_HASH[url]
else:
print >> STDERR, "Warning: url attribute empty for [%s]" % text
return text
def handleIndexTerm(indexterm, width):
return ''
def handleEmphasis(emphasis, width):
return '_' + GetText(emphasis.childNodes) + '_'
###############################################################################
# A dictionary for mapping xml tags to functions.
###############################################################################
handlerMaps = {
'articleinfo': handleArticleInfo,
'table': handleTableRoot,
'informaltable': handleTableRoot,
'code': handleCode,
'programlisting': handleCode,
'list': handleList,
'simplelist': handleList,
'orderedlist': handleList,
'para': handleParagraph,
'formalpara': handleFormalParagraph,
'note': handleNote,
'link': handleLink,
'anchor': handleAnchor,
'section': handleSection,
'blockquote': handleBlockQuote,
'ulink': handleUlink,
'emphasis': handleEmphasis,
'indexterm': handleIndexTerm
}
inlineTags = {'tag': 1, 'literal': 1, 'link': 1,
'ulink': 1, 'citetitle': 1, 'indexterm': 1,
'emphasis': 1, 'filename': 1}
# helper functions for usage() and printerr()
def usage():
print __doc__
def printerr(statement):
if DEBUG:
print >> STDERR, statement
def replaceComment(matchobj):
initspace = matchobj.group(1)
firstsent = matchobj.group(2)
code = matchobj.group(3)
if len(initspace) > 0:
if initspace[0] == '<':
lastspace = initspace
else:
lastspace = '<' + initspace[:-1]
else:
lastspace = initspace
return '\n' + initspace + firstsent + ' >\n' + code + '\n' + lastspace
if __name__ == "__main__":
option = {}
try:
opts, args = getopt.getopt(sys.argv[1:], 'ds', ['prefix=', 'help'])
for oa, ov in opts:
option[oa] = ov
except getopt.GetoptError:
print >> STDERR, "Usage error: db2vim --help for usage"
sys.exit(1)
if '--help' in option:
usage()
sys.exit(0)
TOC_PREFIX = option.get('--prefix', 'ls_')
DEBUG = '-d' in option
if len(args) != 1:
print >> STDERR, "Usage error: db2vim --help for usage"
sys.exit(1)
fileName = args[0]
FILENAME = re.sub(r'\.\w+$', r'.txt', fileName)
try:
fp = open(fileName)
except:
print "Error opening xml file"
dom = xml.dom.minidom.parse(fp)
modeline = r'''
================================================================================
About this file
This file was created automatically from its XML variant using db2vim. db2vim is
a python script which understands a very limited subset of the Docbook XML 4.2
DTD and outputs a plain text file in vim help format.
db2vim can be obtained via anonymous CVS from sourceforge.net. Use
cvs -d:pserver:anonymous@cvs.vim-latex.sf.net:/cvsroot/vim-latex co db2vim
Or you can visit the web-interface to sourceforge CVS at:
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/vim-latex/db2vim/
================================================================================'''
STRICT = '-s' in option
pattern = re.compile(
r'\n([< ]*)([^\n]+)&codebegin;\n(.*?)&codeend;', re.DOTALL)
processedDoc = handleElement(dom.documentElement)
while re.search('&codebegin;', processedDoc):
processedDoc = re.sub(pattern, replaceComment, processedDoc)
urlsection = r"""
================================================================================
URLs used in this file
"""
labels = zip(URL_HASH.values(), URL_HASH.keys())
labels.sort()
for label, url in labels:
urlsection += '*%s* : %s\n' % (label, url)
processedDoc = processedDoc + urlsection + modeline
print processedDoc.encode('iso-8859-1')
# vim:et:sts=4

View File

@@ -0,0 +1,207 @@
#!/usr/bin/env python2
"""Contains functions to do word-wrapping on text paragraphs."""
import random
import re
import string
def JustifyLine(line, width):
"""Stretch a line to width by filling in spaces at word gaps.
The gaps are picked randomly one-after-another, before it starts
over again.
Author: Christopher Arndt <chris.arndt@web.de
"""
i = []
while 1:
# line not long enough already?
if len(' '.join(line)) < width:
if not i:
# index list is exhausted
# get list if indices excluding last word
i = range(max(1, len(line) - 1))
# and shuffle it
random.shuffle(i)
# append space to a random word and remove its index
line[i.pop(0)] += ' '
else:
# line has reached specified width or wider
return ' '.join(line)
def FillParagraphs(text, width=80, justify=0):
"""Split a text into paragraphs and wrap them to width linelength.
Optionally justify the paragraphs (i.e. stretch lines to fill width).
Inter-word space is reduced to one space character and paragraphs are
always separated by two newlines. Indention is currently also lost.
Author: Christopher Arndt <chris.arndt@web.de
"""
# split taxt into paragraphs at occurences of two or more newlines
paragraphs = re.split(r'\n\n+', text)
for i in range(len(paragraphs)):
# split paragraphs into a list of words
words = paragraphs[i].strip().split()
line = []
new_par = []
while 1:
if words:
if len(' '.join(line + [words[0]])) > width and line:
# the line is already long enough -> add it to paragraph
if justify:
# stretch line to fill width
new_par.append(JustifyLine(line, width))
else:
new_par.append(' '.join(line))
line = []
else:
# append next word
line.append(words.pop(0))
else:
# last line in paragraph
new_par.append(' '.join(line))
line = []
break
# replace paragraph with formatted version
paragraphs[i] = '\n'.join(new_par)
# return paragraphs separated by two newlines
return '\n\n'.join(paragraphs)
def IndentParagraphs(text, width=80, indent=0, justify=0):
"""Indent a paragraph, i.e:
. left (and optionally right) justify text to given width
. add an extra indent if desired.
This is nothing but a wrapper around FillParagraphs
"""
retText = re.sub(r"^|\n", "\g<0>" + " " * indent,
FillParagraphs(text, width, justify))
retText = re.sub(r"\n+$", '', retText)
return retText
def OffsetText(text, indent):
return re.sub("^|\n", "\g<0>" + " " * indent, text)
def RightJustify(lines, width):
if width == 0:
width = TextWidth(lines)
text = ""
for line in lines.split("\n"):
text += " " * (width - len(line)) + line + "\n"
text = re.sub('\n$', '', text)
return text
def CenterText(lines, width):
text = ''
for line in lines.split("\n"):
text += " " * (width / 2 - len(line) / 2) + line + '\n'
return text
def TextWidth(text):
"""
TextWidth(text)
returns the 'width' of the text, i.e the length of the longest segment
in the text not containing new-lines.
"""
return max(map(len, text.split('\n')))
def FormatTable(tableText, ROW_SPACE=2, COL_SPACE=3, COL_WIDTH=1000,
justify=0, widths=None):
"""
returns string
Given a 2 dimensional array of text as input, produces a plain text
formatted string which resembles the table output.
The optional arguments specify the inter row/column spacing and the
column width.
"""
# first find out the max width of the columns
# maxwidths is a dictionary, but can be accessed exactly like an
# array because the keys are integers.
if widths is None:
widths = {}
for row in tableText:
cellwidths = map(TextWidth, row)
for i in range(len(cellwidths)):
# Using: dictionary.get(key, default)
widths[i] = max(cellwidths[i], widths.get(i, -1))
# Truncate each of the maximum lengths to the maximum allowed.
for i in range(0, len(widths)):
widths[i] = min(widths[i], COL_WIDTH)
if justify:
formattedTable = []
for row in tableText:
formattedTable.append(map(FillParagraphs, row,
[COL_WIDTH] * len(row)))
else:
formattedTable = tableText
retTableText = ""
for row in formattedTable:
rowtext = row[0]
width = widths[0]
for i in range(1, len(row)):
rowtext = VertCatString(rowtext, width, " " * COL_SPACE)
rowtext = VertCatString(rowtext, width + COL_SPACE, row[i])
width = width + COL_SPACE + widths[i]
retTableText += string.join(rowtext, "")
retTableText += "\n" * ROW_SPACE
return re.sub(r"\n+$", "", retTableText)
def VertCatString(string1, width1, string2):
"""
VertCatString(string1, width1=None, string2)
returns string
Concatenates string1 and string2 vertically. The lines are assumed to
be "\n" separated.
width1 is the width of the string1 column (It is calculated if left out).
(Width refers to the maximum length of each line of a string)
NOTE: if width1 is specified < actual width, then bad things happen.
"""
lines1 = string1.split("\n")
lines2 = string2.split("\n")
if width1 is None:
width1 = -1
for line in lines1:
width1 = max(width1, len(line))
retlines = []
for i in range(0, max(len(lines1), len(lines2))):
if i >= len(lines1):
lines1.append(" " * width1)
lines1[i] = lines1[i] + " " * (width1 - len(lines1[i]))
if i >= len(lines2):
lines2.append("")
retlines.append(lines1[i] + lines2[i])
return string.join(retlines, "\n")
# vim:et:sts=4

View File

@@ -0,0 +1,86 @@
IMAP -- A fluid replacement for :imap
*imaps.txt*
Srinath Avadhanula <srinath AT fastmail DOT fm>
Abstract
========
This plugin provides a function IMAP() which emulates vims |:imap| function. The
motivation for providing this plugin is that |:imap| suffers from problems
which get increasingly annoying with a large number of mappings.
Consider an example. If you do >
imap lhs something
then a mapping is set up. However, there will be the following problems:
1. The 'ttimeout' option will generally limit how easily you can type the lhs.
if you type the left hand side too slowly, then the mapping will not be
activated.
2. If you mistype one of the letters of the lhs, then the mapping is deactivated
as soon as you backspace to correct the mistake.
3. The characters in lhs are shown on top of each other. This is fairly
distracting. This becomes a real annoyance when a lot of characters initiate
mappings.
This script provides a function IMAP() which does not suffer from these
problems.
*imaps.txt-toc*
|im_1| Using IMAP
================================================================================
Using IMAP *im_1* *imaps-usage*
Each call to IMAP is made using the syntax: >
call IMAP (lhs, rhs, ft [, phs, phe])
This is equivalent to having <lhs> map to <rhs> for all files of type <ft>.
Some characters in the <rhs> have special meaning which help in cursor placement
as described in |imaps-placeholders|. The optional arguments define these
special characters.
Example One: >
call IMAP ("bit`", "\\begin{itemize}\<cr>\\item <++>\<cr>\\end{itemize}<++>", "tex")
This effectively sets up the map for "bit`" whenever you edit a latex file. When
you type in this sequence of letters, the following text is inserted: >
\begin{itemize}
\item *
\end{itemize}<++>
where * shows the cursor position. The cursor position after inserting the text
is decided by the position of the first "place-holder". Place holders are
special characters which decide cursor placement and movement. In the example
above, the place holder characters are <+ and +>. After you have typed in the
item, press <C-j> and you will be taken to the next set of <++>'s. Therefore by
placing the <++> characters appropriately, you can minimize the use of movement
keys.
Set g:Imap_UsePlaceHolders to 0 to disable placeholders altogether.
Set g:Imap_PlaceHolderStart and g:Imap_PlaceHolderEnd to something else if you
want different place holder characters. Also, b:Imap_PlaceHolderStart and
b:Imap_PlaceHolderEnd override the values of g:Imap_PlaceHolderStart and
g:Imap_PlaceHolderEnd respectively. This is useful for setting buffer specific
place holders.
Example Two: You can use the <C-r> command to insert dynamic elements such as
dates. >
call IMAP ('date`', "\<c-r>=strftime('%b %d %Y')\<cr>", '')
With this mapping, typing date` will insert the present date into the file.
================================================================================

View File

@@ -0,0 +1,50 @@
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns="http://www.w3.org/TR/xhtml1/transitional"
exclude-result-prefixes="#default">
<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl"/>
<!-- import common customizations -->
<xsl:import href="latex-suite-common.xsl"/>
<!-- insert customization here -->
<xsl:param name="default.encoding" select="'ISO-8859-1'"/>
<xsl:param name="use.id.as.filename" select="'1'"/>
<xsl:param name="section.autolabel" select="1"/>
<xsl:param name="html.stylesheet" select="'../latex-suite.css'"/>
<!-- Chunk the first top-level section? -->
<xsl:param name="chunk.first.sections" select="1"/>
<!-- Depth to which sections should be chunked -->
<xsl:param name="chunk.section.depth" select="2"/>
<!-- How deep should recursive sections appear in the TOC? -->
<xsl:param name="toc.section.depth">2</xsl:param>
<!-- Control depth of TOC generation in sections -->
<xsl:param name="generate.section.toc.level" select="3"/>
<xsl:param name="chunker.output.method" select="'html'"/>
<xsl:param name="chunker.output.doctype-public"
select="'-//W3C//DTD HTML 4.01 Transitional//EN'"/>
<xsl:param name="chunker.output.doctype-system"
select="'http://www.w3.org/TR/html4/loose.dtd'"/>
<!-- this enables generation of TOC in appendix -->
<xsl:param name="generate.toc">
appendix toc
article/appendix toc
article toc
sect1 toc
sect2 toc
sect3 toc
sect4 toc
sect5 toc
section toc
</xsl:param>
</xsl:stylesheet>

View File

@@ -0,0 +1,62 @@
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns="http://www.w3.org/TR/xhtml1/transitional"
exclude-result-prefixes="#default">
<!-- Common customizations for all stylesheets -->
<!-- this omits the trailing '.' in numbered sections -->
<xsl:param name="autotoc.label.separator" select="' '"/>
<xsl:param name="local.l10n.xml" select="document('')"/>
<l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0">
<l:l10n language="en">
<l:context name="title-numbered">
<l:template name="section" text="%n %t"/>
</l:context>
</l:l10n>
</l:i18n>
<!-- override template for revhistory table -->
<xsl:template match="revhistory" mode="titlepage.mode">
<xsl:variable name="numcols">
<xsl:choose>
<xsl:when test="//authorinitials">3</xsl:when>
<xsl:otherwise>2</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<div xmlns="http://www.w3.org/1999/xhtml" class="{name(.)}">
<table border="2" cellspacing="4" width="100%" summary="Revision history">
<tr>
<th align="left" valign="top" colspan="{$numcols}">
<b>
<xsl:call-template name="gentext">
<xsl:with-param name="key" select="'RevHistory'"/>
</xsl:call-template>
</b>
</th>
</tr>
<xsl:apply-templates mode="titlepage.mode">
<xsl:with-param name="numcols" select="$numcols"/>
</xsl:apply-templates>
</table>
</div>
</xsl:template>
<!--
<xsl:template name="user.header.content">
<div id="customheader">
<span class="logo">TeX Refs</span>
</div>
</xsl:template>
<xsl:template name="user.footer.content">
<div id="customfooter">
Copyright &#169; 2002 P. Karp, M. Wiedmann
</div>
</xsl:template>
-->
</xsl:stylesheet>

View File

@@ -0,0 +1,182 @@
/*
* Authors: Srinath Avadhanula and Mikolaj Machowski
* This style file borrows some elements from main.css, the style file used
* in cream.sf.net
*
* */
P {
font-size : 12pt ;
font-family : helvetica, arial, verdana, sans-serif ;
vertical-align : top;
}
DT {
font-size : 11pt ;
font-family : helvetica, arial, verdana, sans-serif ;
vertical-align : top;
}
LI {
font-size : 12pt ;
font-family : helvetica, arial, verdana, sans-serif ;
vertical-align : top;
}
DIV.header {
margin : 0.5cm ;
width : 800px ;
height : 100
}
.note {
}
TD {
font-size : 11pt ;
font-family : helvetica, arial, verdana, sans-serif ;
vertical-align : top;
}
TD.menu {
text-align : center ;
font-family : verdana, helvetica, sans-serif
}
TD.footright {
text-align : right ;
font-size : 10pt ;
font-family : verdana, helvetica, sans-serif
}
TD.leftpanel {
font-size: 14px ;
font-family: verdana, helvetica, sans-serif ;
vertical-align: top ;
width: 150px;
padding: 15px;
background-color: #88aaaa;
}
TD.mainpanel {
font-size : 12pt ;
font-family : helvetica, arial, verdana, sans-serif ;
vertical-align : top;
padding: 15px;
}
TD.footpanel {
font-size: 12px ;
font-family: verdana, helvetica, sans-serif ;
vertical-align: top ;
text-align: right;
padding: 5px;
background-color: #88aaaa;
}
.navigation {
vertical-align: top;
width: 150px;
padding: 15px;
background-color: #445555;
color: #fffcfc;
}
.navheader {
margin-top: -0.5em;
margin-bottom: 0.5em;
text-align: right;
color: #446644;
font-size: 14px;
font-weight: bold;
}
SPAN.menu {
text-align : center ;
font-size : 12pt ;
font-family : verdana, helvetica, sans-serif
}
DIV.merit {
margin : 0.5cm ;
width : 800px
}
TABLE.meritum {
margin : 0.5cm ;
border : 0
}
.foot {
margin : 0.5cm ;
width : 800px
}
.head {
margin : 0.5cm ;
}
CODE {
font-family: "Andale Mono", "Courier New", "Courier", monospace;
background-color: #eef0f3;
white-space: nowrap;
}
.singlesmall {
font-size: 14px;
}
.doublesmall {
font-size: 12px;
}
DIV.footer {
margin : 0.5cm ;
width : 800px
}
.qa {
margin : 0.5cm ;
font-size : 16px;
font-weight : bold;
}
.ans {
margin : 0.5cm ;
font-weight : normal;
}
H2.hline {
text-align : center ;
font-family : verdana, helvetica, sans-serif
}
A.extlinks {
font-size : 11pt ;
font-family : verdana, helvetica, sans-serif ;
font-weight : bold
}
TT {
font-family: courier,sans-serif;
font-size: 11pt;
}
PRE.programlisting {
font-family: courier,sans-serif;
font-size: 10pt;
background-color:#eef0f3;
border-color: #000000;
border-width: 1px;
border-style: solid;
}
SPAN.conflict {
font-size : small ;
font-family: courier,sans-serif;
color : #DD4444;
}
HR.navig {
color: #446644;
height: 1px;
margin-top: 1em;
border-top: 0px; /* Mozilla work-around to eliminate "groove" */
}
A.question {
color: #000000;
height: 1px;
margin-top: 1em;
border-top: 0px; /* Mozilla work-around to eliminate "groove" */
}
A.question:hover {
color: #000000;
background-color: #eef0f3;
height: 1px;
margin-top: 1em;
border-top: 0px; /* Mozilla work-around to eliminate "groove" */
}

View File

@@ -0,0 +1,391 @@
A (very) quick introduction to Latex-Suite
*latex-suite-quickstart.txt*
Srinath Avadhanula <srinath AT fastmail DOT fm>
Abstract
========
Latex-Suite is a comprehensive set of scripts to aid in editing, compiling and
viewing LaTeX documents. A thorough explanation of the full capabilities of
Latex-Suite is described in the user manual. This guide on the other hand,
provides a quick 30-45 minute running start to some of the more commonly used
functionalities of Latex-Suite.
*latex-suite-quickstart.txt-toc*
|lq_1| Using this tutorial
|lq_2| Inserting a template
|lq_3| Inserting a package
|lq_4| Inserting an Environment
|lq_5| A few keyboard shortcuts
|lq_6| Folding in Latex-Suite
|lq_7| Inserting a Reference
|lq_8| Compiling a document
|lq_8_1| Debugging LaTeX source files
|lq_9| Viewing DVI files
|lq_9_1| Performing forward searches
|lq_9_2| Performing inverse searches
|lq_10| Conclusions
================================================================================
Using this tutorial *lq_1* *lq_a_bc*
*lsq-using-tutorial*
This tutorial assumes that you have vim version 6.1+ installed on your machine.
To check, open vim and type >
:ver
You will see the version in the first line of the output. Get the latest vim
version from http://vim.sf.net |lq_u_1|.
Assuming you have Vim 6.1+ already up and running, follow the instructions here
|lq_u_2| to set up Latex-Suite.
Good, now you are all set to start the tutorial. Since this tutorial aims to
explain the newbie-friendly version of Latex-Suite, it needs some GUI
functionality. Therefore, at least for this tutorial, open the gui version of
vim. (On MS windows, this is the default). Open up this help file in either the
same gvim session in a split window or in a different session and follow the
(friendly) instructions.
================================================================================
Inserting a template *lq_2* *lq_a_bd*
*lsq-inserting-template*
Start up gvim and begin editing a new file. >
e newfile.tex
If the installation went well, you should see a new set of menus appear. Goto
Tex-Suite > Templates. You will see a number of templates to choose from. For
now, choose to insert a template for an article. You should get the following in
the main vim window (after possibly a hit-enter prompt). >
1 % File: sample.tex
2 % Created: Sun Jun 22 04:00 PM 2003 P
3 % Last Change: Sun Jun 22 04:00 PM 2003 P
4 %
5 \documentclass[a4paper]{article}
6 \begin{document}
7
8 \end{document}
9
10 ~
11 ~
12 ~
13 ~
-- INSERT -- 7,1 All
The cursor is left on line 7 (just after the \begin{document} line) from where
you can start typing straight away. Trying to lessen movement is a recurring
theme in Latex-Suite.
================================================================================
Inserting a package *lq_3* *lq_a_be*
*lsq-lsq-inserting-package*
Assume that we are writing a mathematical paper and we want to use the popular
amsmath package. We will use some functionality which Latex-Suite provides
specifically for including LaTeX packages, providing options etc. Navigate to
before the \begin{document} line (The portion of the document before the
\begin{document} is called the _preamble_ in LaTeX). On an empty line in the
preamble, type the single word amsmath and then press <F5> in normal mode. The
line will change to >
\usepackage[]{amsmath}<++>
with the cursor positioned conveniently between the []'s. For now, do not worry
about the trailing <++> at the end of this line. Assume we want to provide the
sumlimits options to amsmath. You can either type in this option manually, or
choose from a menu of package options which Latex-Suite automatically creates
when you insert a package using <F5>. With the cursor still placed between the
[], goto TeX-Suite > Packages > amsmath Options. Choose the sumlimits option.
The package line should get converted to: >
\usepackage[sumlimits,]{amsmath}<++>
with the cursor before ]. Press <C-j> in insert mode. You will see the cursor
jump to the end of the package line and the trailing <++> will disappear. What
just happened?! You had your first taste of _Placeholders_. Read more about them
(later) here |lq_u_3|. In short, pressing <C-j> in insert mode takes you to the
next <++> in the text.
================================================================================
Inserting an Environment *lq_4* *lq_a_bf*
*lsq-insert-environment*
Now let us type in a simple formula in LaTeX. Move back to the body of the
document (The portion of the document between \begin{document} and
\end{document} is called the body). Type in a few simple sentences and then on
an empty line, type the single word equation. Escape to normal mode and press
<F5>. (Remember: <F5> is very useful!) This time, the line will change to: >
\begin{equation}
<+content+>
\label{<+label+>}
\end{equation}<++>
<with the cursor on the <+content+>.
================================================================================
A few keyboard shortcuts *lq_5* *lq_a_bg*
*lsq-keyboard-shortcuts*
Now to type in the famous Euler formula. Our aim is to type >
e^{j\pi} + 1 = 0
Instead of typing this blindly, let us use a few shortcuts to reduce movement.
Start out by typing e^. Now instead of typing {, type another ^. You will see
the e^^ change instantly to e^{}<++> with the cursor on <+content+>. (The ^^
changed to ^{}<++>.) Continue with the following sequence of letters: j`p. This
will change instantly to j\pi. (The `p changed to \pi.) Having typed in all we
need to type between the {}'s, press <C-j>. You will pop back out of the
curly-braces. Continue typing the rest of the formula. Latex-Suite provides a
large number of shortcuts which should making typing much more fun and fast if
you get acquainted with them. A list is provided here |lq_u_4|. Definitely spend
some time getting a feel for them. Most of them are pretty intuitive like `/ for
\frac{}{}, `8 for \infty etc.
Now enter a label. Press <C-j> to jump to <+label+>. We will use eqn:euler.
After typing in eqn:euler, press <C-j>. This will take you outside the
curly-braces. Another time you used a Placeholder!
In order to understand the next section better, it will be helpful to have one
more \label. Lets use the handy <F5> key to insert another equation. This time
something simple like the following will do: >
\begin{equation}
\label{eqn:simple}
1 + 1 = 2
\end{equation}
================================================================================
Folding in Latex-Suite *lq_6* *lq_a_bh* *lsq-folding*
Okay, we have typed enough. At this stage, hopefully, your file is looking
something like this: >
1 % File: sample.tex
2 % Created: Sun Jun 22 04:00 PM 2003 P
3 % Last Change: Mon Dec 15 07:00 PM 2003
4 %
5 \documentclass[a4paper]{article}
6
7 \usepackage[sumlimits,]{amsmath}
8
9 \begin{document}
10 \begin{equation}
11 \label{eqn:euler}
12 e^{j\pi} + 1 = 0
13 \end{equation}
14 This is the famous euler equation. I
15 will type another equation, just as
16 true:
17 \begin{equation}
18 \label{eqn:simple}
19 1 + 1 = 2
20 \end{equation}
21 This is my contribution to mathematics.
22 \end{document}
In normal mode, press \rf. This will fold up the entire file and you should see
the file looking as below: >
1 % File: sample.tex
2 % Created: Sun Jun 22 04:00 PM 2003 P
3 % Last Change: Mon Dec 15 07:00 PM 2003
4 %
5 +-- 4 lines: Preamble: \documentclass[a4paper]{article} -----
9 \begin{document}
10 +-- 4 lines: equation (eqn:euler) \label{eqn:euler} -----------
14 This is the famous euler equation. I
15 will type another equation, just as
16 true:
10 +-- 4 lines: equation (eqn:simple) \label{eqn:simple} ---------
21 This is my contribution to mathematics.
22 \end{document}
What has happened is that Latex-Suite folded away blocks of LaTeX code into
folded regions. You can open and close folds by using the command za in normal
mode.
================================================================================
Inserting a Reference *lq_7* *lq_a_bi*
*lsq-inserting-reference*
A necessary part of LaTeX editing is referencing equations, figures,
bibliographic entries etc. This is done with the \ref and the \cite commands.
Latex-Suite provides an easy way to do this. Somewhere in the body of the
document, type in the following sentence >
This is a reference to (\ref{}).
With the cursor between the {} press <F9> in insert mode. Your vim session will
sprout a new windows showing all the \labels found in all the .tex files of your
current project. To insert the reference, just position the cursor on the
relevant line and press <enter>. The line which you were editing will change to: >
This is a reference to (\ref{eqn:euler})
and the bottom window closes automatically.
The <F9> key also works for inserting \cite commands to reference bibliographic
entries, inserting file names for the \inputgraphics command and just plain
searching for words. Click here |lq_u_5| for more information.
================================================================================
Compiling a document *lq_8* *lq_a_bj*
*lsq-compiling*
|lq_8_1| Debugging LaTeX source files
Great! We have just created a small latex file. The next step is to make the
latex compiler create a .dvi file from it. Compiling via latex-suite is simple.
Goto normal mode and press \ll (replace \ with whatever mapleader setting you
have). This will call the latex compiler. If all goes well, then the focus
should return to the vim window.
Nothing happend? Ouch! You might need to do some additional settings as
described here. |lq_u_6|
--------------------------------------------------------------------------------
Debugging LaTeX source files *lq_8_1* *lq_a_bk*
*lsq-debugging*
To illustrate the debugging procedure, let's create a few mistakes in the file.
Insert the following ``mistakes'' in the file: >
This is a $\mistake$.
And this is $\another$
Now press \ll again. This time you will notice that after compilation finishes,
the cursor automatically lands on $\mistake$. In addition, 2 new windows will
appear as shown here:
The middle window is an _Error List_ window showing you the errors which the
latex compiler found. The bottom window is a _Log Preview_ window, which shows
you the context of the error made by displaying the relevant portion of the .log
file created during the latex compilation procedure. Jump to the _Error List_
window and try scrolling around in it using either the j, k keys or the arrow
keys. You will notice that the _Log Preview_ window scrolls automatically to
retain the context of the error you are currently located on. If you press
<enter> on any line, you will see the cursor jump to the location of the error.
Latex-Suite tries to guess the column location as best as it can so you can
continue typing straight away.
Having got a taste for compiling, proceed by deleting the erroneous lines and
re-compiling.
The Latex-Suite compiler is capable of much more including selectively filtering
out common errors which you might want to ignore for the moment, compiling parts
of a document, setting levels of verbosity in the compiler output etc. See here
|lq_u_7| for more.
================================================================================
Viewing DVI files *lq_9* *lq_a_bl*
*lsq-viewing-dvi*
|lq_9_1| Performing forward searches
|lq_9_2| Performing inverse searches
Now that you have compiled your first latex source, its time to view it. Again,
this should be pretty simple. Press \lv in normal mode. Depending on your
platform, a DVI viewer program should open up and display the dvi file generated
in compilation step previously.
Nothing happend? Ouch! You might need to do some additional settings as
described here. |lq_u_8|
--------------------------------------------------------------------------------
Performing forward searches *lq_9_1* *lq_a_bm*
*lsq-quick-forward-searching*
If you are using a modern DVI viewer, then it is possible to do what is called
forward and inverse searching. However, you will need to customize the standard
Latex-Suite distribution in order to utilize this functionality. Type in the
following on the command line: >
:let g:Tex_CompileRule_dvi = 'latex -src-specials -interaction=nonstopmode $*'
:TCTarget dvi
Now recompile the latex file by pressing \ll. This time, instead of pressing \lv
to view the file, press \ls from within the tex file. If the DVI viewer supports
forward searching (most of them do), then the viewer will actually display the
portion of the DVI file corresponding to the location where you were editing the
tex file.
NOTE: The reason Latex-Suite does not have this setting by default is that on
some systems this causes unpredictable results in the DVI output. If you
find the DVI output satisfactory, then you can insert the first of the 2
lines above into your $VIM/ftplugin/tex.vim file. $VIM is ~/vimfiles for
windows and ~/.vim for *nix machines.
--------------------------------------------------------------------------------
Performing inverse searches *lq_9_2* *lq_a_bn*
*lsq-quick-inverse-searching*
Most DVI viewers also support inverse searching, whereby you can make the DVI
viewer ask vim to display the tex source corresponding to the DVI file being
shown. This is extremely helpful while proofreading large documents.
Simply double-click anywhere in the viewer window. If the viewer supports it,
then it will attempt to open an editor window at the location corresponding to
where you double-clicked. On *nix platforms, Latex-Suite attempts to start the
viewer program in such a way that it already knows to use vim to open the tex
source. Thus you should see a vim window open up showing the tex file. However,
if there is an error, or some other program is used, you will need to tell the
viewer program to use gvim as the editor. On windows platforms, if you use the
commonly available yap viewer (available as part of the miktex distribution),
then this option can be set from View > Options > Inverse Search. In the Command
line: window, write >
"C:\Program Files\vim\vim61\gvim" -c ":RemoteOpen +%l %f"
(Customize the path according to where you have installed gvim). If you double
click in the view pane now, you will see gvim start up and take you to the
relevant portion of the tex file.
================================================================================
Conclusions *lq_10* *lq_a_bo*
*lsq-conclusions*
Thats all folks! By now, you should know enough of the basic functions of
latex-suite. Ofcourse, latex-suite is capable of much, much more such as
compiling files multiple times to resolve changed labels, compiling
dependencies, handling user packages and more. To get a feel for that, you will
need to take a look at the Latex-Suite user manual. |lq_u_9|
================================================================================
URLs used in this file
*lq_u_1* : http://vim.sf.net
*lq_u_2* : http://vim-latex.sourceforge.net/index.php?subject=download&title=Download
*lq_u_3* : http://vim-latex.sourceforge.net/documentation/latex-suite/latex-macros.html
*lq_u_4* : http://vim-latex.sourceforge.net/documentation/latex-suite/auc-tex-mappings.html
*lq_u_5* : http://vim-latex.sourceforge.net/documentation/latex-suite/latex-completion.html
*lq_u_6* : http://vim-latex.sourceforge.net/index.php?subject=faq&title=FAQ#faq-2
*lq_u_7* : http://vim-latex.sourceforge.net/documentation/latex-suite/latex-compiling.html
*lq_u_8* : http://vim-latex.sourceforge.net/index.php?subject=faq&title=FAQ#faq-3
*lq_u_9* : http://vim-latex.sourceforge.net/index.php?subject=manual&title=Manual#user-manual
================================================================================
About this file
This file was created automatically from its XML variant using db2vim. db2vim is
a python script which understands a very limited subset of the Docbook XML 4.2
DTD and outputs a plain text file in vim help format.
db2vim can be obtained via anonymous CVS from sourceforge.net. Use
cvs -d:pserver:anonymous@cvs.vim-latex.sf.net:/cvsroot/vim-latex co db2vim
Or you can visit the web-interface to sourceforge CVS at:
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/vim-latex/db2vim/
================================================================================

View File

@@ -0,0 +1,433 @@
<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"docbook-xml/docbookx.dtd"
[<!ENTITY dummy "dummy">
<!ENTITY date "$Date$">
<!ENTITY ls "Latex-Suite">
<!ENTITY latex "LaTeX">
<!ENTITY vim "Vim">
<!ENTITY ph "&lt;++&gt;">
]>
<article lang="en">
<articleinfo id="lsq-articleinfo">
<title id="lsq-articleinfo-title">A (very) quick introduction to Latex-Suite</title>
<author>
<firstname>Srinath</firstname>
<surname>Avadhanula</surname>
<affiliation>
<address><email>srinath AT fastmail DOT fm</email></address>
</affiliation>
</author>
<abstract>
&ls; is a comprehensive set of scripts to aid in editing, compiling and
viewing &latex; documents. A thorough explanation of the full
capabilities of &ls; is described in the user manual. This guide on the
other hand, provides a quick 30-45 minute running start to some of the
more commonly used functionalities of &ls;.
</abstract>
<date>&date;</date>
</articleinfo>
<section id="lsq-using-tutorial">
<title id="using-tutorial">Using this tutorial</title>
<para>
This tutorial assumes that you have vim version 6.1+ installed on your
machine. To check, open vim and type
<programlisting>:ver</programlisting>
You will see the version in the first line of the output. Get the latest
vim version from <ulink url="http://vim.sf.net">http://vim.sf.net</ulink>.
</para>
<para>
Assuming you have Vim 6.1+ already up and running, follow the
instructions <ulink
url="http://vim-latex.sourceforge.net/index.php?subject=download&amp;title=Download">here</ulink>
to set up Latex-Suite.
</para>
<para>
Good, now you are all set to start the tutorial. Since this tutorial
aims to explain the newbie-friendly version of &ls;, it needs some GUI
functionality. Therefore, at least for this tutorial, open the gui
version of vim. (On MS windows, this is the default). Open up this help
file in either the same gvim session in a split window or in a different
session and follow the (friendly) instructions.
</para>
</section>
<section id="lsq-inserting-template">
<title id="inserting-template-title">Inserting a template</title>
<para>
Start up gvim and begin editing a new file.
<programlisting>e newfile.tex</programlisting>
If the installation went well, you should see a new set of
menus appear. Goto <literal>Tex-Suite &gt; Templates</literal>. You will see
a number of templates to choose from. For now, choose to insert a
template for an article. You should get the following in the main
vim window (after possibly a hit-enter prompt).
<programlisting>
1 % File: sample.tex
2 % Created: Sun Jun 22 04:00 PM 2003 P
3 % Last Change: Sun Jun 22 04:00 PM 2003 P
4 %
5 \documentclass[a4paper]{article}
6 \begin{document}
7
8 \end{document}
9
10 ~
11 ~
12 ~
13 ~
-- INSERT -- 7,1 All
</programlisting>
</para>
<imageobject>
<imagedata fileref="" format="png"></imagedata>
</imageobject>
<para>
The cursor is left on line 7 (just after the
<literal>\begin{document}</literal> line) from where you can start
typing straight away. Trying to lessen movement is a recurring theme in
Latex-Suite.
</para>
</section>
<section id="lsq-lsq-inserting-package">
<title>Inserting a package</title>
<para>
Assume that we are writing a mathematical paper and we want to use the
popular amsmath package. We will use some functionality which
Latex-Suite provides specifically for including LaTeX packages,
providing options etc. Navigate to before the
<literal>\begin{document}</literal> line (The portion of the document
before the <literal>\begin{document}</literal> is called the
<emphasis>preamble</emphasis> in LaTeX). On an empty line in the
preamble, type the single word <literal>amsmath</literal> and then press
<literal>&lt;F5&gt;</literal> in normal mode. The line will change to
<programlisting>\usepackage[]{amsmath}&ph;</programlisting>
with the cursor positioned conveniently between the
<literal>[]</literal>'s. For now, do not worry about the trailing
<literal>&ph;</literal> at the end of this line. Assume we want to
provide the <literal>sumlimits</literal> options to amsmath. You can
either type in this option manually, or choose from a menu of package
options which Latex-Suite automatically creates when you insert a
package using <literal>&lt;F5&gt;</literal>. With the cursor still
placed between the <literal>[]</literal>, goto <literal>TeX-Suite &gt;
Packages &gt; amsmath Options</literal>. Choose the
<literal>sumlimits</literal> option. The package line should get
converted to:
<programlisting>\usepackage[sumlimits,]{amsmath}&ph;</programlisting>
</para>
<para>
with the cursor before <literal>]</literal>. Press
<literal>&lt;C-j&gt;</literal> in insert mode. You will see the cursor
jump to the end of the package line and the trailing
<literal>&ph;</literal> will disappear. What just happened?! You had
your first taste of <emphasis>Placeholders</emphasis>. Read more about
them (later) <ulink
url="http://vim-latex.sourceforge.net/documentation/latex-suite/latex-macros.html">here</ulink>.
In short, pressing <literal>&lt;C-j&gt;</literal> in insert mode takes
you to the next <literal>&ph;</literal> in the text.
</para>
</section>
<section id="lsq-insert-environment">
<title>Inserting an Environment</title>
<para>
Now let us type in a simple formula in LaTeX. Move back to the body of
the document (The portion of the document between
<literal>\begin{document}</literal> and
<literal>\end{document}</literal> is called the body). Type in a few
simple sentences and then on an empty line, type the single word
<literal>equation</literal>. Escape to normal mode and press
<literal>&lt;F5&gt;</literal>. (Remember:
<literal>&lt;F5&gt;</literal> is very useful!) This time, the line will
change to:
<programlisting>\begin{equation}
&lt;+content+&gt;
\label{&lt;+label+&gt;}
\end{equation}&ph;</programlisting>
with the cursor on the <literal>&lt;+content+&gt;</literal>.
</para>
</section>
<section id="lsq-keyboard-shortcuts">
<title>A few keyboard shortcuts</title>
<para>
Now to type in the famous Euler formula. Our aim is to type
<programlisting>e^{j\pi} + 1 = 0</programlisting> Instead
of typing this blindly, let us use a few shortcuts to reduce
movement. Start out by typing <literal>e^</literal>. Now instead of
typing <literal>{</literal>, type another <literal>^</literal>. You
will see the <literal>e^^</literal> change instantly to
<literal>e^{}&ph;</literal> with the cursor on
<literal>&lt;+content+&gt;</literal>. (The <literal>^^</literal> changed to
<literal>^{}&ph;</literal>.) Continue with the following sequence of
letters: <literal>j`p</literal>. This will change instantly to
<literal>j\pi</literal>. (The <literal>`p</literal> changed to
<literal>\pi</literal>.) Having typed in all we need to type between
the <literal>{}</literal>'s, press <literal>&lt;C-j&gt;</literal>.
You will pop back out of the curly-braces. Continue typing the rest
of the formula.
Latex-Suite provides a large number
of shortcuts which should making typing much more fun and fast
if you get acquainted with them. A list is provided <ulink
url="http://vim-latex.sourceforge.net/documentation/latex-suite/auc-tex-mappings.html">here</ulink>. Definitely spend some time getting a feel for
them. Most of them are pretty intuitive like <literal>`/</literal>
for <literal>\frac{}{}</literal>, <literal>`8</literal> for
<literal>\infty</literal> etc.
</para>
<para>
Now enter a label.
Press <literal>&lt;C-j&gt;</literal> to jump to
<literal>&lt;+label+&gt;</literal>.
We
will use <literal>eqn:euler</literal>. After typing in
<literal>eqn:euler</literal>, press <literal>&lt;C-j&gt;</literal>. This
will take you outside the curly-braces. Another time you used a
Placeholder!
</para>
<para>
In order to understand the next section better, it will be helpful
to have one more <literal>\label</literal>. Lets use the handy
<literal>&lt;F5&gt;</literal>
key to insert another equation. This time something simple like the
following will do:
<programlisting>\begin{equation}
\label{eqn:simple}
1 + 1 = 2
\end{equation}</programlisting>
</para>
</section>
<section id="lsq-folding">
<title>Folding in &ls;</title>
<para>
Okay, we have typed enough. At this stage, hopefully, your file is
looking something like this:
<programlisting>
1 % File: sample.tex
2 % Created: Sun Jun 22 04:00 PM 2003 P
3 % Last Change: Mon Dec 15 07:00 PM 2003
4 %
5 \documentclass[a4paper]{article}
6
7 \usepackage[sumlimits,]{amsmath}
8
9 \begin{document}
10 \begin{equation}
11 \label{eqn:euler}
12 e^{j\pi} + 1 = 0
13 \end{equation}
14 This is the famous euler equation. I
15 will type another equation, just as
16 true:
17 \begin{equation}
18 \label{eqn:simple}
19 1 + 1 = 2
20 \end{equation}
21 This is my contribution to mathematics.
22 \end{document}
</programlisting>
In normal mode, press <literal>\rf</literal>. This will fold up the
entire file and you should see the file looking as below:
<programlisting>
1 % File: sample.tex
2 % Created: Sun Jun 22 04:00 PM 2003 P
3 % Last Change: Mon Dec 15 07:00 PM 2003
4 %
5 +-- 4 lines: Preamble: \documentclass[a4paper]{article} -----
9 \begin{document}
10 +-- 4 lines: equation (eqn:euler) \label{eqn:euler} -----------
14 This is the famous euler equation. I
15 will type another equation, just as
16 true:
10 +-- 4 lines: equation (eqn:simple) \label{eqn:simple} ---------
21 This is my contribution to mathematics.
22 \end{document}
</programlisting>
What has happened is that &ls; folded away blocks of &latex; code into
folded regions. You can open and close folds by using the command
<literal>za</literal> in normal mode.
</para>
</section>
<section id="lsq-inserting-reference">
<title>Inserting a Reference</title>
<para>
A necessary part of LaTeX editing is referencing equations, figures,
bibliographic entries etc. This is done with the
<literal>\ref</literal> and the <literal>\cite</literal> commands.
Latex-Suite provides an easy way to do this. Somewhere in the body of
the document, type in the following sentence
<programlisting>This is a reference to (\ref{}).</programlisting>
With the cursor between the <literal>{}</literal> press
<literal>&lt;F9&gt;</literal> in insert mode. Your vim session will
sprout a new windows showing all the
<literal>\label</literal>s found in all the <literal>.tex</literal> files
of your current project.
To insert the reference, just position the cursor on
the relevant line and press
<literal>&lt;enter&gt;</literal>. The line which you were editing will change
to:
<programlisting>This is a reference to (\ref{eqn:euler})</programlisting>
and the bottom window closes automatically.
</para>
<para>
The <literal>&lt;F9&gt;</literal> key also works for inserting
<literal>\cite</literal> commands to reference bibliographic entries,
inserting file names for the <literal>\inputgraphics</literal> command
and just plain searching for words. Click <ulink
url="http://vim-latex.sourceforge.net/documentation/latex-suite/latex-completion.html">here</ulink>
for more information.
</para>
</section>
<section id="lsq-compiling">
<title>Compiling a document</title>
<para>
Great! We have just created a small latex file. The next step is to
make the latex compiler create a .dvi file from it. Compiling via
latex-suite is simple. Goto normal mode and press <literal>\ll</literal>
(replace <literal>\</literal> with whatever <literal>mapleader</literal> setting you
have). This will call the latex compiler. If all goes well, then
the focus should return to the vim window.
</para>
<para>
Nothing happend? Ouch! You might need to do some additional settings as
described <ulink
url="http://vim-latex.sourceforge.net/index.php?subject=faq&amp;title=FAQ#faq-2">here.</ulink>
</para>
<section id="lsq-debugging">
<title>Debugging LaTeX source files</title>
<para>
To illustrate the debugging procedure, let's create a few mistakes
in the file. Insert the following ``mistakes'' in the file:
<programlisting>This is a $\mistake$.
And this is $\another$</programlisting>
Now press <literal>\ll</literal> again. This time you will notice that
after compilation finishes, the cursor automatically lands on
<literal>$\mistake$</literal>. In addition, 2 new windows will appear
as shown here:
</para>
<imageobject>
<imagedata fileref="" format=""></imagedata>
</imageobject>
<para>
The middle window is an <emphasis>Error List</emphasis> window
showing you the errors which the latex compiler found. The bottom
window is a <emphasis>Log Preview</emphasis> window, which shows you
the context of the error made by displaying the relevant portion of
the <literal>.log</literal> file created during the latex
compilation procedure. Jump to the <emphasis>Error List</emphasis>
window and try scrolling around in it using either the <literal>j,
k</literal> keys or the arrow keys. You will notice that the
<emphasis>Log Preview</emphasis> window scrolls automatically to
retain the context of the error you are currently located on. If you
press <literal>&lt;enter&gt;</literal> on any line, you will see the
cursor jump to the location of the error. Latex-Suite tries to guess
the column location as best as it can so you can continue typing
straight away.
</para>
</section>
<para>
Having got a taste for compiling, proceed by deleting the erroneous
lines and re-compiling.
</para>
<para>
The Latex-Suite compiler is capable of much more including
selectively filtering out common errors which you might want to
ignore for the moment, compiling parts of a document, setting
levels of verbosity in the compiler output etc. See <ulink
url="http://vim-latex.sourceforge.net/documentation/latex-suite/latex-compiling.html">here</ulink>
for more.
</para>
</section>
<section id="lsq-viewing-dvi">
<title>Viewing DVI files</title>
<para>
Now that you have compiled your first latex source, its time to
view it. Again, this should be pretty simple. Press
<literal>\lv</literal> in normal mode. Depending on your platform, a DVI
viewer program should open up and display the dvi file generated in
compilation step previously.
</para>
<para>
Nothing happend? Ouch! You might need to do some additional settings as
described <ulink
url="http://vim-latex.sourceforge.net/index.php?subject=faq&amp;title=FAQ#faq-3">here.</ulink>
</para>
<section id="lsq-quick-forward-searching">
<title>Performing forward searches</title>
<para>
If you are using a modern DVI viewer, then it is possible to do what
is called forward and inverse searching. However, you will need to
customize the standard Latex-Suite distribution in order to utilize
this functionality. Type in the following on the command line:
<programlisting>:let g:Tex_CompileRule_dvi = 'latex -src-specials -interaction=nonstopmode $*'
:TCTarget dvi</programlisting>
Now recompile the latex file by pressing <literal>\ll</literal>.
This time, instead of pressing <literal>\lv</literal> to view the
file, press <literal>\ls</literal> from within the tex file. If the
DVI viewer supports forward searching (most of them do), then the
viewer will actually display the portion of the DVI file
corresponding to the location where you were editing the tex file.
</para>
<note>
<para>
The reason Latex-Suite does not have this setting by default is
that on some systems this causes unpredictable results in the DVI
output. If you find the DVI output satisfactory, then you can
insert the first of the 2 lines above into your
<literal>$VIM/ftplugin/tex.vim</literal> file.
<literal>$VIM</literal> is <literal>~/vimfiles</literal> for
windows and <literal>~/.vim</literal> for *nix machines.
</para>
</note>
</section>
<section id="lsq-quick-inverse-searching">
<title>Performing inverse searches</title>
<para>
Most DVI viewers also support inverse searching, whereby you can
make the DVI viewer ask vim to display the tex source corresponding
to the DVI file being shown. This is extremely helpful while
proofreading large documents.
</para>
<para>
Simply double-click anywhere in the viewer window. If the viewer
supports it, then it will attempt to open an editor window at the
location corresponding to where you double-clicked. On *nix
platforms, Latex-Suite attempts to start the viewer program in such
a way that it already knows to use vim to open the tex source. Thus
you should see a vim window open up showing the tex file. However,
if there is an error, or some other program is used, you will need
to tell the viewer program to use gvim as the editor. On windows
platforms, if you use the commonly available <literal>yap</literal>
viewer (available as part of the miktex distribution), then this
option can be set from <literal>View &gt; Options &gt; Inverse
Search</literal>. In the <literal>Command line:</literal> window,
write
<programlisting>"C:\Program Files\vim\vim61\gvim" -c ":RemoteOpen +%l %f"</programlisting>
(Customize the path according to where you have installed gvim).
If you double click in the view pane now, you will see gvim start
up and take you to the relevant portion of the tex file.
</para>
</section>
</section>
<section id="lsq-conclusions">
<title>Conclusions</title>
<para>
Thats all folks! By now, you should know enough of the basic functions
of latex-suite. Ofcourse, latex-suite is capable of much, much more such
as compiling files multiple times to resolve changed labels, compiling
dependencies, handling user packages and more. To get a feel for that,
you will need to take a look at the <ulink
url="http://vim-latex.sourceforge.net/index.php?subject=manual&amp;title=Manual#user-manual">&ls;
user manual.</ulink>
</para>
</section>
</article>
<!--
vim: et:sw=1:ts=1
-->

View File

@@ -0,0 +1,182 @@
/*
* Authors: Srinath Avadhanula and Mikolaj Machowski
* This style file borrows some elements from main.css, the style file used
* in cream.sf.net
*
* */
P {
font-size : 12pt ;
font-family : helvetica, arial, verdana, sans-serif ;
vertical-align : top;
}
DT {
font-size : 11pt ;
font-family : helvetica, arial, verdana, sans-serif ;
vertical-align : top;
}
LI {
font-size : 12pt ;
font-family : helvetica, arial, verdana, sans-serif ;
vertical-align : top;
}
DIV.header {
margin : 0.5cm ;
width : 800px ;
height : 100
}
.note {
}
TD {
font-size : 11pt ;
font-family : helvetica, arial, verdana, sans-serif ;
vertical-align : top;
}
TD.menu {
text-align : center ;
font-family : verdana, helvetica, sans-serif
}
TD.footright {
text-align : right ;
font-size : 10pt ;
font-family : verdana, helvetica, sans-serif
}
TD.leftpanel {
font-size: 14px ;
font-family: verdana, helvetica, sans-serif ;
vertical-align: top ;
width: 150px;
padding: 15px;
background-color: #88aaaa;
}
TD.mainpanel {
font-size : 12pt ;
font-family : helvetica, arial, verdana, sans-serif ;
vertical-align : top;
padding: 15px;
}
TD.footpanel {
font-size: 12px ;
font-family: verdana, helvetica, sans-serif ;
vertical-align: top ;
text-align: right;
padding: 5px;
background-color: #88aaaa;
}
.navigation {
vertical-align: top;
width: 150px;
padding: 15px;
background-color: #445555;
color: #fffcfc;
}
.navheader {
margin-top: -0.5em;
margin-bottom: 0.5em;
text-align: right;
color: #446644;
font-size: 14px;
font-weight: bold;
}
SPAN.menu {
text-align : center ;
font-size : 12pt ;
font-family : verdana, helvetica, sans-serif
}
DIV.merit {
margin : 0.5cm ;
width : 800px
}
TABLE.meritum {
margin : 0.5cm ;
border : 0
}
.foot {
margin : 0.5cm ;
width : 800px
}
.head {
margin : 0.5cm ;
}
CODE {
font-family: "Andale Mono", "Courier New", "Courier", monospace;
background-color: #eef0f3;
white-space: nowrap;
}
.singlesmall {
font-size: 14px;
}
.doublesmall {
font-size: 12px;
}
DIV.footer {
margin : 0.5cm ;
width : 800px
}
.qa {
margin : 0.5cm ;
font-size : 16px;
font-weight : bold;
}
.ans {
margin : 0.5cm ;
font-weight : normal;
}
H2.hline {
text-align : center ;
font-family : verdana, helvetica, sans-serif
}
A.extlinks {
font-size : 11pt ;
font-family : verdana, helvetica, sans-serif ;
font-weight : bold
}
TT {
font-family: courier,sans-serif;
font-size: 11pt;
}
PRE.programlisting {
font-family: courier,sans-serif;
font-size: 10pt;
background-color:#eef0f3;
border-color: #000000;
border-width: 1px;
border-style: solid;
}
SPAN.conflict {
font-size : small ;
font-family: courier,sans-serif;
color : #DD4444;
}
HR.navig {
color: #446644;
height: 1px;
margin-top: 1em;
border-top: 0px; /* Mozilla work-around to eliminate "groove" */
}
A.question {
color: #000000;
height: 1px;
margin-top: 1em;
border-top: 0px; /* Mozilla work-around to eliminate "groove" */
}
A.question:hover {
color: #000000;
background-color: #eef0f3;
height: 1px;
margin-top: 1em;
border-top: 0px; /* Mozilla work-around to eliminate "groove" */
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,22 @@
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns="http://www.w3.org/TR/xhtml1/transitional"
exclude-result-prefixes="#default">
<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"/>
<!-- import common customizations -->
<xsl:import href="latex-suite-common.xsl"/>
<xsl:output method="html"
encoding="ISO-8859-1"
indent="no"/>
<!-- insert customization here -->
<xsl:param name="section.autolabel" select="1"/>
<xsl:param name="html.stylesheet" select="'latex-suite.css'"/>
</xsl:stylesheet>

View File

@@ -0,0 +1,619 @@
Alt-B latex-suite.txt /*Alt-B*
Alt-C latex-suite.txt /*Alt-C*
Alt-I latex-suite.txt /*Alt-I*
Alt-L latex-suite.txt /*Alt-L*
IMAP_PutTextWithMovement latex-suite.txt /*IMAP_PutTextWithMovement*
Imap_DeleteEmptyPlaceHolders latex-suite.txt /*Imap_DeleteEmptyPlaceHolders*
Imap_FreezeImap latex-suite.txt /*Imap_FreezeImap*
Imap_GoToSelectMode latex-suite.txt /*Imap_GoToSelectMode*
Imap_PlaceHolderEnd latex-suite.txt /*Imap_PlaceHolderEnd*
Imap_PlaceHolderStart latex-suite.txt /*Imap_PlaceHolderStart*
Imap_StickyPlaceHolders latex-suite.txt /*Imap_StickyPlaceHolders*
Imap_UsePlaceHolders latex-suite.txt /*Imap_UsePlaceHolders*
Plug_IMAP_DeleteAndJumBack latex-suite.txt /*Plug_IMAP_DeleteAndJumBack*
Plug_IMAP_DeleteAndJumpForward latex-suite.txt /*Plug_IMAP_DeleteAndJumpForward*
Plug_IMAP_JumpBack latex-suite.txt /*Plug_IMAP_JumpBack*
Plug_IMAP_JumpForward latex-suite.txt /*Plug_IMAP_JumpForward*
Plug_Tex_InsertItemOnThisLine latex-suite.txt /*Plug_Tex_InsertItemOnThisLine*
Plug_Tex_LeftRight latex-suite.txt /*Plug_Tex_LeftRight*
Plug_Tex_MathBF latex-suite.txt /*Plug_Tex_MathBF*
Plug_Tex_MathCal latex-suite.txt /*Plug_Tex_MathCal*
TLook latex-suite.txt /*TLook*
TLookAll latex-suite.txt /*TLookAll*
TLookBib latex-suite.txt /*TLookBib*
TMacro latex-suite.txt /*TMacro*
TMacroDelete latex-suite.txt /*TMacroDelete*
TMacroEdit latex-suite.txt /*TMacroEdit*
TMacroNew latex-suite.txt /*TMacroNew*
TPackage latex-suite.txt /*TPackage*
TPackageUpdate latex-suite.txt /*TPackageUpdate*
TPackageUpdateAll latex-suite.txt /*TPackageUpdateAll*
TPartComp latex-suite.txt /*TPartComp*
TPartView latex-suite.txt /*TPartView*
TSection latex-suite.txt /*TSection*
TSectionAdvanced latex-suite.txt /*TSectionAdvanced*
TTemplate latex-suite.txt /*TTemplate*
Tex_AutoFolding latex-suite.txt /*Tex_AutoFolding*
Tex_BIBINPUTS latex-suite.txt /*Tex_BIBINPUTS*
Tex_CatchVisMapErrors latex-suite.txt /*Tex_CatchVisMapErrors*
Tex_Com_name latex-suite.txt /*Tex_Com_name*
Tex_Com_name_aliasto latex-suite.txt /*Tex_Com_name_aliasto*
Tex_CompileRule_format latex-suite.txt /*Tex_CompileRule_format*
Tex_CustomTemplateDirectory latex-suite.txt /*Tex_CustomTemplateDirectory*
Tex_Debug latex-suite.txt /*Tex_Debug*
Tex_DefaultTargetFormat latex-suite.txt /*Tex_DefaultTargetFormat*
Tex_Diacritics latex-suite.txt /*Tex_Diacritics*
Tex_EnvEndWithCR latex-suite.txt /*Tex_EnvEndWithCR*
Tex_EnvLabelprefix_name latex-suite.txt /*Tex_EnvLabelprefix_name*
Tex_Env_name latex-suite.txt /*Tex_Env_name*
Tex_Env_name_aliasto latex-suite.txt /*Tex_Env_name_aliasto*
Tex_EnvironmentMaps latex-suite.txt /*Tex_EnvironmentMaps*
Tex_EnvironmentMenus latex-suite.txt /*Tex_EnvironmentMenus*
Tex_ExplorerHeight latex-suite.txt /*Tex_ExplorerHeight*
Tex_FoldedCommands latex-suite.txt /*Tex_FoldedCommands*
Tex_FoldedEnvironments latex-suite.txt /*Tex_FoldedEnvironments*
Tex_FoldedMisc latex-suite.txt /*Tex_FoldedMisc*
Tex_FoldedSections latex-suite.txt /*Tex_FoldedSections*
Tex_Folding latex-suite.txt /*Tex_Folding*
Tex_FontMaps latex-suite.txt /*Tex_FontMaps*
Tex_FontMenus latex-suite.txt /*Tex_FontMenus*
Tex_GotoError latex-suite.txt /*Tex_GotoError*
Tex_HotKeyMappings latex-suite.txt /*Tex_HotKeyMappings*
Tex_IgnoreLevel latex-suite.txt /*Tex_IgnoreLevel*
Tex_IgnoredWarnings latex-suite.txt /*Tex_IgnoredWarnings*
Tex_ImageDir latex-suite.txt /*Tex_ImageDir*
Tex_ItemStyle_environment latex-suite.txt /*Tex_ItemStyle_environment*
Tex_ItemsWithCR latex-suite.txt /*Tex_ItemsWithCR*
Tex_LabelAfterContent latex-suite.txt /*Tex_LabelAfterContent*
Tex_Leader latex-suite.txt /*Tex_Leader*
Tex_Leader2 latex-suite.txt /*Tex_Leader2*
Tex_MainFileExpression latex-suite.txt /*Tex_MainFileExpression*
Tex_MainMenuLocation latex-suite.txt /*Tex_MainMenuLocation*
Tex_MathMenus latex-suite.txt /*Tex_MathMenus*
Tex_MenuPrefix latex-suite.txt /*Tex_MenuPrefix*
Tex_Menus latex-suite.txt /*Tex_Menus*
Tex_MultipleCompileFormats latex-suite.txt /*Tex_MultipleCompileFormats*
Tex_NestElementMenus latex-suite.txt /*Tex_NestElementMenus*
Tex_NestPackagesMenu latex-suite.txt /*Tex_NestPackagesMenu*
Tex_PackagesMenu latex-suite.txt /*Tex_PackagesMenu*
Tex_ProjectSourceFiles latex-suite.txt /*Tex_ProjectSourceFiles*
Tex_PromptedCommands latex-suite.txt /*Tex_PromptedCommands*
Tex_PromptedEnvironments latex-suite.txt /*Tex_PromptedEnvironments*
Tex_RememberCiteSearch latex-suite.txt /*Tex_RememberCiteSearch*
Tex_SectionMaps latex-suite.txt /*Tex_SectionMaps*
Tex_SectionMenus latex-suite.txt /*Tex_SectionMenus*
Tex_SmartKeyBS latex-suite.txt /*Tex_SmartKeyBS*
Tex_SmartKeyQuote latex-suite.txt /*Tex_SmartKeyQuote*
Tex_TEXINPUTS latex-suite.txt /*Tex_TEXINPUTS*
Tex_UseCiteCompletionVer2 latex-suite.txt /*Tex_UseCiteCompletionVer2*
Tex_UseMakefile latex-suite.txt /*Tex_UseMakefile*
Tex_UseMenuWizard latex-suite.txt /*Tex_UseMenuWizard*
Tex_UseOutlineCompletion latex-suite.txt /*Tex_UseOutlineCompletion*
Tex_UsePython latex-suite.txt /*Tex_UsePython*
Tex_UseSimpleLabelSearch latex-suite.txt /*Tex_UseSimpleLabelSearch*
Tex_UseUtfMenus latex-suite.txt /*Tex_UseUtfMenus*
Tex_ViewRuleComplete_format latex-suite.txt /*Tex_ViewRuleComplete_format*
Tex_ViewRule_format latex-suite.txt /*Tex_ViewRule_format*
Tex_ViewerCwindowHeight latex-suite.txt /*Tex_ViewerCwindowHeight*
Tex_ViewerPreviewHeight latex-suite.txt /*Tex_ViewerPreviewHeight*
Tshortcuts latex-suite.txt /*Tshortcuts*
adding-bib-options latex-suite.txt /*adding-bib-options*
altkey-mappings latex-suite.txt /*altkey-mappings*
auc-tex-mappings latex-suite.txt /*auc-tex-mappings*
automatic-package-detection latex-suite.txt /*automatic-package-detection*
bibtex-bindings latex-suite.txt /*bibtex-bindings*
changing-commands latex-suite.txt /*changing-commands*
changing-environments latex-suite.txt /*changing-environments*
compiler-dependency latex-suite.txt /*compiler-dependency*
compiler-output-customization latex-suite.txt /*compiler-output-customization*
compiler-rules latex-suite.txt /*compiler-rules*
compiling-multiple latex-suite.txt /*compiling-multiple*
completion-window-preferences latex-suite.txt /*completion-window-preferences*
custom-macros-menu latex-suite.txt /*custom-macros-menu*
custom-packages latex-suite.txt /*custom-packages*
customize-alt-key-maps latex-suite.txt /*customize-alt-key-maps*
customize-imap-maps latex-suite.txt /*customize-imap-maps*
customizing-compiling latex-suite.txt /*customizing-compiling*
customizing-directories latex-suite.txt /*customizing-directories*
customizing-folding latex-suite.txt /*customizing-folding*
customizing-latex-completion latex-suite.txt /*customizing-latex-completion*
customizing-latex-suite latex-suite.txt /*customizing-latex-suite*
customizing-macros latex-suite.txt /*customizing-macros*
customizing-macros-commands latex-suite.txt /*customizing-macros-commands*
customizing-macros-environments latex-suite.txt /*customizing-macros-environments*
customizing-menus latex-suite.txt /*customizing-menus*
customizing-packages latex-suite.txt /*customizing-packages*
customizing-place-holders latex-suite.txt /*customizing-place-holders*
customizing-smart-keys latex-suite.txt /*customizing-smart-keys*
customizing-viewing latex-suite.txt /*customizing-viewing*
customizing-what-to-fold latex-suite.txt /*customizing-what-to-fold*
default-folding latex-suite.txt /*default-folding*
diacritic-mappings latex-suite.txt /*diacritic-mappings*
enabling-searching latex-suite.txt /*enabling-searching*
enclosing-commands latex-suite.txt /*enclosing-commands*
enclosing-env-f5 latex-suite.txt /*enclosing-env-f5*
enclosing-env-threeletter latex-suite.txt /*enclosing-env-threeletter*
enclosing-environments latex-suite.txt /*enclosing-environments*
environment-mappings latex-suite.txt /*environment-mappings*
external-compiling latex-suite.txt /*external-compiling*
fold-setting-adding latex-suite.txt /*fold-setting-adding*
fold-setting-advanced latex-suite.txt /*fold-setting-advanced*
font-maps latex-suite.txt /*font-maps*
forward-searching latex-suite.txt /*forward-searching*
greek-letter-mappings latex-suite.txt /*greek-letter-mappings*
im_1 imaps.txt /*im_1*
imaps-usage imaps.txt /*imaps-usage*
imaps.txt imaps.txt /*imaps.txt*
imaps.txt-toc imaps.txt /*imaps.txt-toc*
inserting-commands latex-suite.txt /*inserting-commands*
inserting-env-f5 latex-suite.txt /*inserting-env-f5*
inserting-env-shift-f1 latex-suite.txt /*inserting-env-shift-f1*
inserting-env-threeletter latex-suite.txt /*inserting-env-threeletter*
inserting-environments latex-suite.txt /*inserting-environments*
inserting-packages latex-suite.txt /*inserting-packages*
inverse-searching latex-suite.txt /*inverse-searching*
latex-command-maps latex-suite.txt /*latex-command-maps*
latex-compiling latex-suite.txt /*latex-compiling*
latex-completion latex-suite.txt /*latex-completion*
latex-completion-cite latex-suite.txt /*latex-completion-cite*
latex-folding latex-suite.txt /*latex-folding*
latex-macros latex-suite.txt /*latex-macros*
latex-master-file latex-suite.txt /*latex-master-file*
latex-package-scanning latex-suite.txt /*latex-package-scanning*
latex-packages latex-suite.txt /*latex-packages*
latex-project latex-suite.txt /*latex-project*
latex-project-example latex-suite.txt /*latex-project-example*
latex-project-settings latex-suite.txt /*latex-project-settings*
latex-suite-commands latex-suite.txt /*latex-suite-commands*
latex-suite-commands-maps latex-suite.txt /*latex-suite-commands-maps*
latex-suite-credits latex-suite.txt /*latex-suite-credits*
latex-suite-maintainer latex-suite.txt /*latex-suite-maintainer*
latex-suite-maps latex-suite.txt /*latex-suite-maps*
latex-suite-quickstart.txt latex-suite-quickstart.txt /*latex-suite-quickstart.txt*
latex-suite-quickstart.txt-toc latex-suite-quickstart.txt /*latex-suite-quickstart.txt-toc*
latex-suite-templates latex-suite.txt /*latex-suite-templates*
latex-suite.txt latex-suite.txt /*latex-suite.txt*
latex-suite.txt-toc latex-suite.txt /*latex-suite.txt-toc*
latex-viewing latex-suite.txt /*latex-viewing*
latex-viewing-rules latex-suite.txt /*latex-viewing-rules*
lq_1 latex-suite-quickstart.txt /*lq_1*
lq_10 latex-suite-quickstart.txt /*lq_10*
lq_2 latex-suite-quickstart.txt /*lq_2*
lq_3 latex-suite-quickstart.txt /*lq_3*
lq_4 latex-suite-quickstart.txt /*lq_4*
lq_5 latex-suite-quickstart.txt /*lq_5*
lq_6 latex-suite-quickstart.txt /*lq_6*
lq_7 latex-suite-quickstart.txt /*lq_7*
lq_8 latex-suite-quickstart.txt /*lq_8*
lq_8_1 latex-suite-quickstart.txt /*lq_8_1*
lq_9 latex-suite-quickstart.txt /*lq_9*
lq_9_1 latex-suite-quickstart.txt /*lq_9_1*
lq_9_2 latex-suite-quickstart.txt /*lq_9_2*
lq_a_bc latex-suite-quickstart.txt /*lq_a_bc*
lq_a_bd latex-suite-quickstart.txt /*lq_a_bd*
lq_a_be latex-suite-quickstart.txt /*lq_a_be*
lq_a_bf latex-suite-quickstart.txt /*lq_a_bf*
lq_a_bg latex-suite-quickstart.txt /*lq_a_bg*
lq_a_bh latex-suite-quickstart.txt /*lq_a_bh*
lq_a_bi latex-suite-quickstart.txt /*lq_a_bi*
lq_a_bj latex-suite-quickstart.txt /*lq_a_bj*
lq_a_bk latex-suite-quickstart.txt /*lq_a_bk*
lq_a_bl latex-suite-quickstart.txt /*lq_a_bl*
lq_a_bm latex-suite-quickstart.txt /*lq_a_bm*
lq_a_bn latex-suite-quickstart.txt /*lq_a_bn*
lq_a_bo latex-suite-quickstart.txt /*lq_a_bo*
lq_u_1 latex-suite-quickstart.txt /*lq_u_1*
lq_u_2 latex-suite-quickstart.txt /*lq_u_2*
lq_u_3 latex-suite-quickstart.txt /*lq_u_3*
lq_u_4 latex-suite-quickstart.txt /*lq_u_4*
lq_u_5 latex-suite-quickstart.txt /*lq_u_5*
lq_u_6 latex-suite-quickstart.txt /*lq_u_6*
lq_u_7 latex-suite-quickstart.txt /*lq_u_7*
lq_u_8 latex-suite-quickstart.txt /*lq_u_8*
lq_u_9 latex-suite-quickstart.txt /*lq_u_9*
ls-completion-custom latex-suite.txt /*ls-completion-custom*
ls-completion-ref latex-suite.txt /*ls-completion-ref*
ls-filename-completion latex-suite.txt /*ls-filename-completion*
ls-general-purpose-settings latex-suite.txt /*ls-general-purpose-settings*
ls-imap-f7 latex-suite.txt /*ls-imap-f7*
ls-imap-s-f7 latex-suite.txt /*ls-imap-s-f7*
ls-imaps-syntax latex-suite.txt /*ls-imaps-syntax*
ls-new-macros latex-suite.txt /*ls-new-macros*
ls-set-grepprg latex-suite.txt /*ls-set-grepprg*
ls-vmap-f7 latex-suite.txt /*ls-vmap-f7*
ls_1 latex-suite.txt /*ls_1*
ls_10 latex-suite.txt /*ls_10*
ls_10_1 latex-suite.txt /*ls_10_1*
ls_10_1_1 latex-suite.txt /*ls_10_1_1*
ls_10_1_2 latex-suite.txt /*ls_10_1_2*
ls_10_2 latex-suite.txt /*ls_10_2*
ls_10_2_1 latex-suite.txt /*ls_10_2_1*
ls_10_2_10 latex-suite.txt /*ls_10_2_10*
ls_10_2_11 latex-suite.txt /*ls_10_2_11*
ls_10_2_12 latex-suite.txt /*ls_10_2_12*
ls_10_2_13 latex-suite.txt /*ls_10_2_13*
ls_10_2_14 latex-suite.txt /*ls_10_2_14*
ls_10_2_15 latex-suite.txt /*ls_10_2_15*
ls_10_2_16 latex-suite.txt /*ls_10_2_16*
ls_10_2_2 latex-suite.txt /*ls_10_2_2*
ls_10_2_3 latex-suite.txt /*ls_10_2_3*
ls_10_2_4 latex-suite.txt /*ls_10_2_4*
ls_10_2_5 latex-suite.txt /*ls_10_2_5*
ls_10_2_6 latex-suite.txt /*ls_10_2_6*
ls_10_2_7 latex-suite.txt /*ls_10_2_7*
ls_10_2_8 latex-suite.txt /*ls_10_2_8*
ls_10_2_9 latex-suite.txt /*ls_10_2_9*
ls_11 latex-suite.txt /*ls_11*
ls_11_1 latex-suite.txt /*ls_11_1*
ls_11_10 latex-suite.txt /*ls_11_10*
ls_11_10_1 latex-suite.txt /*ls_11_10_1*
ls_11_11 latex-suite.txt /*ls_11_11*
ls_11_11_1 latex-suite.txt /*ls_11_11_1*
ls_11_1_1 latex-suite.txt /*ls_11_1_1*
ls_11_1_2 latex-suite.txt /*ls_11_1_2*
ls_11_2 latex-suite.txt /*ls_11_2*
ls_11_2_1 latex-suite.txt /*ls_11_2_1*
ls_11_2_2 latex-suite.txt /*ls_11_2_2*
ls_11_2_3 latex-suite.txt /*ls_11_2_3*
ls_11_2_4 latex-suite.txt /*ls_11_2_4*
ls_11_2_5 latex-suite.txt /*ls_11_2_5*
ls_11_3 latex-suite.txt /*ls_11_3*
ls_11_3_1 latex-suite.txt /*ls_11_3_1*
ls_11_3_1_1 latex-suite.txt /*ls_11_3_1_1*
ls_11_3_1_2 latex-suite.txt /*ls_11_3_1_2*
ls_11_3_1_3 latex-suite.txt /*ls_11_3_1_3*
ls_11_3_1_4 latex-suite.txt /*ls_11_3_1_4*
ls_11_3_1_5 latex-suite.txt /*ls_11_3_1_5*
ls_11_3_1_6 latex-suite.txt /*ls_11_3_1_6*
ls_11_3_1_7 latex-suite.txt /*ls_11_3_1_7*
ls_11_3_1_8 latex-suite.txt /*ls_11_3_1_8*
ls_11_3_1_9 latex-suite.txt /*ls_11_3_1_9*
ls_11_3_2 latex-suite.txt /*ls_11_3_2*
ls_11_3_2_1 latex-suite.txt /*ls_11_3_2_1*
ls_11_3_2_2 latex-suite.txt /*ls_11_3_2_2*
ls_11_3_2_3 latex-suite.txt /*ls_11_3_2_3*
ls_11_3_2_4 latex-suite.txt /*ls_11_3_2_4*
ls_11_3_3 latex-suite.txt /*ls_11_3_3*
ls_11_3_4 latex-suite.txt /*ls_11_3_4*
ls_11_3_5 latex-suite.txt /*ls_11_3_5*
ls_11_3_6 latex-suite.txt /*ls_11_3_6*
ls_11_3_7 latex-suite.txt /*ls_11_3_7*
ls_11_3_8 latex-suite.txt /*ls_11_3_8*
ls_11_4 latex-suite.txt /*ls_11_4*
ls_11_4_1 latex-suite.txt /*ls_11_4_1*
ls_11_4_2 latex-suite.txt /*ls_11_4_2*
ls_11_5 latex-suite.txt /*ls_11_5*
ls_11_5_1 latex-suite.txt /*ls_11_5_1*
ls_11_5_2 latex-suite.txt /*ls_11_5_2*
ls_11_5_3 latex-suite.txt /*ls_11_5_3*
ls_11_5_4 latex-suite.txt /*ls_11_5_4*
ls_11_5_5 latex-suite.txt /*ls_11_5_5*
ls_11_5_6 latex-suite.txt /*ls_11_5_6*
ls_11_5_7 latex-suite.txt /*ls_11_5_7*
ls_11_6 latex-suite.txt /*ls_11_6*
ls_11_6_1 latex-suite.txt /*ls_11_6_1*
ls_11_6_2 latex-suite.txt /*ls_11_6_2*
ls_11_6_3 latex-suite.txt /*ls_11_6_3*
ls_11_6_4 latex-suite.txt /*ls_11_6_4*
ls_11_6_5 latex-suite.txt /*ls_11_6_5*
ls_11_6_6 latex-suite.txt /*ls_11_6_6*
ls_11_6_7 latex-suite.txt /*ls_11_6_7*
ls_11_6_8 latex-suite.txt /*ls_11_6_8*
ls_11_7 latex-suite.txt /*ls_11_7*
ls_11_7_1 latex-suite.txt /*ls_11_7_1*
ls_11_7_2 latex-suite.txt /*ls_11_7_2*
ls_11_8 latex-suite.txt /*ls_11_8*
ls_11_8_1 latex-suite.txt /*ls_11_8_1*
ls_11_8_2 latex-suite.txt /*ls_11_8_2*
ls_11_8_3 latex-suite.txt /*ls_11_8_3*
ls_11_8_4 latex-suite.txt /*ls_11_8_4*
ls_11_8_5 latex-suite.txt /*ls_11_8_5*
ls_11_8_6 latex-suite.txt /*ls_11_8_6*
ls_11_8_7 latex-suite.txt /*ls_11_8_7*
ls_11_8_8 latex-suite.txt /*ls_11_8_8*
ls_11_9 latex-suite.txt /*ls_11_9*
ls_11_9_1 latex-suite.txt /*ls_11_9_1*
ls_11_9_2 latex-suite.txt /*ls_11_9_2*
ls_12 latex-suite.txt /*ls_12*
ls_2 latex-suite.txt /*ls_2*
ls_3 latex-suite.txt /*ls_3*
ls_3_1 latex-suite.txt /*ls_3_1*
ls_3_10 latex-suite.txt /*ls_3_10*
ls_3_10_1 latex-suite.txt /*ls_3_10_1*
ls_3_10_2 latex-suite.txt /*ls_3_10_2*
ls_3_10_3 latex-suite.txt /*ls_3_10_3*
ls_3_10_4 latex-suite.txt /*ls_3_10_4*
ls_3_11 latex-suite.txt /*ls_3_11*
ls_3_12 latex-suite.txt /*ls_3_12*
ls_3_12_1 latex-suite.txt /*ls_3_12_1*
ls_3_12_2 latex-suite.txt /*ls_3_12_2*
ls_3_1_1 latex-suite.txt /*ls_3_1_1*
ls_3_1_1_1 latex-suite.txt /*ls_3_1_1_1*
ls_3_1_1_2 latex-suite.txt /*ls_3_1_1_2*
ls_3_1_1_3 latex-suite.txt /*ls_3_1_1_3*
ls_3_1_2 latex-suite.txt /*ls_3_1_2*
ls_3_1_2_1 latex-suite.txt /*ls_3_1_2_1*
ls_3_1_2_2 latex-suite.txt /*ls_3_1_2_2*
ls_3_1_3 latex-suite.txt /*ls_3_1_3*
ls_3_2 latex-suite.txt /*ls_3_2*
ls_3_2_1 latex-suite.txt /*ls_3_2_1*
ls_3_2_2 latex-suite.txt /*ls_3_2_2*
ls_3_2_3 latex-suite.txt /*ls_3_2_3*
ls_3_3 latex-suite.txt /*ls_3_3*
ls_3_4 latex-suite.txt /*ls_3_4*
ls_3_5 latex-suite.txt /*ls_3_5*
ls_3_6 latex-suite.txt /*ls_3_6*
ls_3_7 latex-suite.txt /*ls_3_7*
ls_3_8 latex-suite.txt /*ls_3_8*
ls_3_8_1 latex-suite.txt /*ls_3_8_1*
ls_3_9 latex-suite.txt /*ls_3_9*
ls_4 latex-suite.txt /*ls_4*
ls_4_1 latex-suite.txt /*ls_4_1*
ls_4_2 latex-suite.txt /*ls_4_2*
ls_4_3 latex-suite.txt /*ls_4_3*
ls_4_3_1 latex-suite.txt /*ls_4_3_1*
ls_4_4 latex-suite.txt /*ls_4_4*
ls_4_4_1 latex-suite.txt /*ls_4_4_1*
ls_4_4_2 latex-suite.txt /*ls_4_4_2*
ls_5 latex-suite.txt /*ls_5*
ls_5_1 latex-suite.txt /*ls_5_1*
ls_5_2 latex-suite.txt /*ls_5_2*
ls_5_3 latex-suite.txt /*ls_5_3*
ls_5_4 latex-suite.txt /*ls_5_4*
ls_6 latex-suite.txt /*ls_6*
ls_6_1 latex-suite.txt /*ls_6_1*
ls_6_2 latex-suite.txt /*ls_6_2*
ls_6_3 latex-suite.txt /*ls_6_3*
ls_6_4 latex-suite.txt /*ls_6_4*
ls_6_5 latex-suite.txt /*ls_6_5*
ls_6_6 latex-suite.txt /*ls_6_6*
ls_7 latex-suite.txt /*ls_7*
ls_7_1 latex-suite.txt /*ls_7_1*
ls_7_2 latex-suite.txt /*ls_7_2*
ls_7_3 latex-suite.txt /*ls_7_3*
ls_8 latex-suite.txt /*ls_8*
ls_8_1 latex-suite.txt /*ls_8_1*
ls_8_2 latex-suite.txt /*ls_8_2*
ls_8_2_1 latex-suite.txt /*ls_8_2_1*
ls_8_2_2 latex-suite.txt /*ls_8_2_2*
ls_8_2_3 latex-suite.txt /*ls_8_2_3*
ls_8_2_4 latex-suite.txt /*ls_8_2_4*
ls_8_2_5 latex-suite.txt /*ls_8_2_5*
ls_9 latex-suite.txt /*ls_9*
ls_9_1 latex-suite.txt /*ls_9_1*
ls_9_2 latex-suite.txt /*ls_9_2*
ls_a_bA latex-suite.txt /*ls_a_bA*
ls_a_bB latex-suite.txt /*ls_a_bB*
ls_a_bC latex-suite.txt /*ls_a_bC*
ls_a_bD latex-suite.txt /*ls_a_bD*
ls_a_bE latex-suite.txt /*ls_a_bE*
ls_a_bF latex-suite.txt /*ls_a_bF*
ls_a_bG latex-suite.txt /*ls_a_bG*
ls_a_bH latex-suite.txt /*ls_a_bH*
ls_a_bI latex-suite.txt /*ls_a_bI*
ls_a_bJ latex-suite.txt /*ls_a_bJ*
ls_a_bK latex-suite.txt /*ls_a_bK*
ls_a_bL latex-suite.txt /*ls_a_bL*
ls_a_bM latex-suite.txt /*ls_a_bM*
ls_a_bN latex-suite.txt /*ls_a_bN*
ls_a_bO latex-suite.txt /*ls_a_bO*
ls_a_bP latex-suite.txt /*ls_a_bP*
ls_a_bQ latex-suite.txt /*ls_a_bQ*
ls_a_bR latex-suite.txt /*ls_a_bR*
ls_a_bS latex-suite.txt /*ls_a_bS*
ls_a_bT latex-suite.txt /*ls_a_bT*
ls_a_bU latex-suite.txt /*ls_a_bU*
ls_a_bV latex-suite.txt /*ls_a_bV*
ls_a_bW latex-suite.txt /*ls_a_bW*
ls_a_bX latex-suite.txt /*ls_a_bX*
ls_a_bY latex-suite.txt /*ls_a_bY*
ls_a_bZ latex-suite.txt /*ls_a_bZ*
ls_a_bc latex-suite.txt /*ls_a_bc*
ls_a_bd latex-suite.txt /*ls_a_bd*
ls_a_be latex-suite.txt /*ls_a_be*
ls_a_bf latex-suite.txt /*ls_a_bf*
ls_a_bg latex-suite.txt /*ls_a_bg*
ls_a_bh latex-suite.txt /*ls_a_bh*
ls_a_bi latex-suite.txt /*ls_a_bi*
ls_a_bj latex-suite.txt /*ls_a_bj*
ls_a_bk latex-suite.txt /*ls_a_bk*
ls_a_bl latex-suite.txt /*ls_a_bl*
ls_a_bm latex-suite.txt /*ls_a_bm*
ls_a_bn latex-suite.txt /*ls_a_bn*
ls_a_bo latex-suite.txt /*ls_a_bo*
ls_a_bp latex-suite.txt /*ls_a_bp*
ls_a_bq latex-suite.txt /*ls_a_bq*
ls_a_br latex-suite.txt /*ls_a_br*
ls_a_bs latex-suite.txt /*ls_a_bs*
ls_a_bt latex-suite.txt /*ls_a_bt*
ls_a_bu latex-suite.txt /*ls_a_bu*
ls_a_bv latex-suite.txt /*ls_a_bv*
ls_a_bw latex-suite.txt /*ls_a_bw*
ls_a_bx latex-suite.txt /*ls_a_bx*
ls_a_by latex-suite.txt /*ls_a_by*
ls_a_bz latex-suite.txt /*ls_a_bz*
ls_a_cA latex-suite.txt /*ls_a_cA*
ls_a_cB latex-suite.txt /*ls_a_cB*
ls_a_cC latex-suite.txt /*ls_a_cC*
ls_a_cD latex-suite.txt /*ls_a_cD*
ls_a_cE latex-suite.txt /*ls_a_cE*
ls_a_cF latex-suite.txt /*ls_a_cF*
ls_a_cG latex-suite.txt /*ls_a_cG*
ls_a_cH latex-suite.txt /*ls_a_cH*
ls_a_cI latex-suite.txt /*ls_a_cI*
ls_a_cJ latex-suite.txt /*ls_a_cJ*
ls_a_cK latex-suite.txt /*ls_a_cK*
ls_a_cL latex-suite.txt /*ls_a_cL*
ls_a_cM latex-suite.txt /*ls_a_cM*
ls_a_cN latex-suite.txt /*ls_a_cN*
ls_a_cO latex-suite.txt /*ls_a_cO*
ls_a_cP latex-suite.txt /*ls_a_cP*
ls_a_cQ latex-suite.txt /*ls_a_cQ*
ls_a_cR latex-suite.txt /*ls_a_cR*
ls_a_cS latex-suite.txt /*ls_a_cS*
ls_a_cT latex-suite.txt /*ls_a_cT*
ls_a_cU latex-suite.txt /*ls_a_cU*
ls_a_cV latex-suite.txt /*ls_a_cV*
ls_a_cW latex-suite.txt /*ls_a_cW*
ls_a_cX latex-suite.txt /*ls_a_cX*
ls_a_cY latex-suite.txt /*ls_a_cY*
ls_a_cZ latex-suite.txt /*ls_a_cZ*
ls_a_ca latex-suite.txt /*ls_a_ca*
ls_a_cb latex-suite.txt /*ls_a_cb*
ls_a_cc latex-suite.txt /*ls_a_cc*
ls_a_cd latex-suite.txt /*ls_a_cd*
ls_a_ce latex-suite.txt /*ls_a_ce*
ls_a_cf latex-suite.txt /*ls_a_cf*
ls_a_cg latex-suite.txt /*ls_a_cg*
ls_a_ch latex-suite.txt /*ls_a_ch*
ls_a_ci latex-suite.txt /*ls_a_ci*
ls_a_cj latex-suite.txt /*ls_a_cj*
ls_a_ck latex-suite.txt /*ls_a_ck*
ls_a_cl latex-suite.txt /*ls_a_cl*
ls_a_cm latex-suite.txt /*ls_a_cm*
ls_a_cn latex-suite.txt /*ls_a_cn*
ls_a_co latex-suite.txt /*ls_a_co*
ls_a_cp latex-suite.txt /*ls_a_cp*
ls_a_cq latex-suite.txt /*ls_a_cq*
ls_a_cr latex-suite.txt /*ls_a_cr*
ls_a_cs latex-suite.txt /*ls_a_cs*
ls_a_ct latex-suite.txt /*ls_a_ct*
ls_a_cu latex-suite.txt /*ls_a_cu*
ls_a_cv latex-suite.txt /*ls_a_cv*
ls_a_cw latex-suite.txt /*ls_a_cw*
ls_a_cx latex-suite.txt /*ls_a_cx*
ls_a_cy latex-suite.txt /*ls_a_cy*
ls_a_cz latex-suite.txt /*ls_a_cz*
ls_a_dA latex-suite.txt /*ls_a_dA*
ls_a_dB latex-suite.txt /*ls_a_dB*
ls_a_dC latex-suite.txt /*ls_a_dC*
ls_a_dD latex-suite.txt /*ls_a_dD*
ls_a_dE latex-suite.txt /*ls_a_dE*
ls_a_dF latex-suite.txt /*ls_a_dF*
ls_a_dG latex-suite.txt /*ls_a_dG*
ls_a_dH latex-suite.txt /*ls_a_dH*
ls_a_dI latex-suite.txt /*ls_a_dI*
ls_a_dJ latex-suite.txt /*ls_a_dJ*
ls_a_dK latex-suite.txt /*ls_a_dK*
ls_a_dL latex-suite.txt /*ls_a_dL*
ls_a_dM latex-suite.txt /*ls_a_dM*
ls_a_dN latex-suite.txt /*ls_a_dN*
ls_a_dO latex-suite.txt /*ls_a_dO*
ls_a_dP latex-suite.txt /*ls_a_dP*
ls_a_dQ latex-suite.txt /*ls_a_dQ*
ls_a_dR latex-suite.txt /*ls_a_dR*
ls_a_dS latex-suite.txt /*ls_a_dS*
ls_a_dT latex-suite.txt /*ls_a_dT*
ls_a_dU latex-suite.txt /*ls_a_dU*
ls_a_dV latex-suite.txt /*ls_a_dV*
ls_a_dW latex-suite.txt /*ls_a_dW*
ls_a_dX latex-suite.txt /*ls_a_dX*
ls_a_dY latex-suite.txt /*ls_a_dY*
ls_a_dZ latex-suite.txt /*ls_a_dZ*
ls_a_da latex-suite.txt /*ls_a_da*
ls_a_db latex-suite.txt /*ls_a_db*
ls_a_dc latex-suite.txt /*ls_a_dc*
ls_a_dd latex-suite.txt /*ls_a_dd*
ls_a_de latex-suite.txt /*ls_a_de*
ls_a_df latex-suite.txt /*ls_a_df*
ls_a_dg latex-suite.txt /*ls_a_dg*
ls_a_dh latex-suite.txt /*ls_a_dh*
ls_a_di latex-suite.txt /*ls_a_di*
ls_a_dj latex-suite.txt /*ls_a_dj*
ls_a_dk latex-suite.txt /*ls_a_dk*
ls_a_dl latex-suite.txt /*ls_a_dl*
ls_a_dm latex-suite.txt /*ls_a_dm*
ls_a_dn latex-suite.txt /*ls_a_dn*
ls_a_do latex-suite.txt /*ls_a_do*
ls_a_dp latex-suite.txt /*ls_a_dp*
ls_a_dq latex-suite.txt /*ls_a_dq*
ls_a_dr latex-suite.txt /*ls_a_dr*
ls_a_ds latex-suite.txt /*ls_a_ds*
ls_a_dt latex-suite.txt /*ls_a_dt*
ls_a_du latex-suite.txt /*ls_a_du*
ls_a_dv latex-suite.txt /*ls_a_dv*
ls_a_dw latex-suite.txt /*ls_a_dw*
ls_a_dx latex-suite.txt /*ls_a_dx*
ls_a_dy latex-suite.txt /*ls_a_dy*
ls_a_dz latex-suite.txt /*ls_a_dz*
ls_a_eA latex-suite.txt /*ls_a_eA*
ls_a_eB latex-suite.txt /*ls_a_eB*
ls_a_eC latex-suite.txt /*ls_a_eC*
ls_a_eD latex-suite.txt /*ls_a_eD*
ls_a_eE latex-suite.txt /*ls_a_eE*
ls_a_eF latex-suite.txt /*ls_a_eF*
ls_a_eG latex-suite.txt /*ls_a_eG*
ls_a_eH latex-suite.txt /*ls_a_eH*
ls_a_eI latex-suite.txt /*ls_a_eI*
ls_a_eJ latex-suite.txt /*ls_a_eJ*
ls_a_eK latex-suite.txt /*ls_a_eK*
ls_a_eL latex-suite.txt /*ls_a_eL*
ls_a_eM latex-suite.txt /*ls_a_eM*
ls_a_eN latex-suite.txt /*ls_a_eN*
ls_a_eO latex-suite.txt /*ls_a_eO*
ls_a_eP latex-suite.txt /*ls_a_eP*
ls_a_eQ latex-suite.txt /*ls_a_eQ*
ls_a_eR latex-suite.txt /*ls_a_eR*
ls_a_ea latex-suite.txt /*ls_a_ea*
ls_a_eb latex-suite.txt /*ls_a_eb*
ls_a_ec latex-suite.txt /*ls_a_ec*
ls_a_ed latex-suite.txt /*ls_a_ed*
ls_a_ee latex-suite.txt /*ls_a_ee*
ls_a_ef latex-suite.txt /*ls_a_ef*
ls_a_eg latex-suite.txt /*ls_a_eg*
ls_a_eh latex-suite.txt /*ls_a_eh*
ls_a_ei latex-suite.txt /*ls_a_ei*
ls_a_ej latex-suite.txt /*ls_a_ej*
ls_a_ek latex-suite.txt /*ls_a_ek*
ls_a_el latex-suite.txt /*ls_a_el*
ls_a_em latex-suite.txt /*ls_a_em*
ls_a_en latex-suite.txt /*ls_a_en*
ls_a_eo latex-suite.txt /*ls_a_eo*
ls_a_ep latex-suite.txt /*ls_a_ep*
ls_a_eq latex-suite.txt /*ls_a_eq*
ls_a_es latex-suite.txt /*ls_a_es*
ls_a_et latex-suite.txt /*ls_a_et*
ls_a_eu latex-suite.txt /*ls_a_eu*
ls_a_ev latex-suite.txt /*ls_a_ev*
ls_a_ew latex-suite.txt /*ls_a_ew*
ls_a_ex latex-suite.txt /*ls_a_ex*
ls_a_ey latex-suite.txt /*ls_a_ey*
ls_a_ez latex-suite.txt /*ls_a_ez*
ls_u_1 latex-suite.txt /*ls_u_1*
ls_u_10 latex-suite.txt /*ls_u_10*
ls_u_11 latex-suite.txt /*ls_u_11*
ls_u_2 latex-suite.txt /*ls_u_2*
ls_u_3 latex-suite.txt /*ls_u_3*
ls_u_4 latex-suite.txt /*ls_u_4*
ls_u_5 latex-suite.txt /*ls_u_5*
ls_u_6 latex-suite.txt /*ls_u_6*
ls_u_7 latex-suite.txt /*ls_u_7*
ls_u_8 latex-suite.txt /*ls_u_8*
ls_u_9 latex-suite.txt /*ls_u_9*
lsq-compiling latex-suite-quickstart.txt /*lsq-compiling*
lsq-conclusions latex-suite-quickstart.txt /*lsq-conclusions*
lsq-debugging latex-suite-quickstart.txt /*lsq-debugging*
lsq-folding latex-suite-quickstart.txt /*lsq-folding*
lsq-insert-environment latex-suite-quickstart.txt /*lsq-insert-environment*
lsq-inserting-reference latex-suite-quickstart.txt /*lsq-inserting-reference*
lsq-inserting-template latex-suite-quickstart.txt /*lsq-inserting-template*
lsq-keyboard-shortcuts latex-suite-quickstart.txt /*lsq-keyboard-shortcuts*
lsq-lsq-inserting-package latex-suite-quickstart.txt /*lsq-lsq-inserting-package*
lsq-quick-forward-searching latex-suite-quickstart.txt /*lsq-quick-forward-searching*
lsq-quick-inverse-searching latex-suite-quickstart.txt /*lsq-quick-inverse-searching*
lsq-using-tutorial latex-suite-quickstart.txt /*lsq-using-tutorial*
lsq-viewing-dvi latex-suite-quickstart.txt /*lsq-viewing-dvi*
macro-enabling latex-suite.txt /*macro-enabling*
overriding-macros latex-suite.txt /*overriding-macros*
package-actions latex-suite.txt /*package-actions*
part-compiling latex-suite.txt /*part-compiling*
pausing-imaps latex-suite.txt /*pausing-imaps*
place-holder latex-suite.txt /*place-holder*
place-holders latex-suite.txt /*place-holders*
recommended-settings latex-suite.txt /*recommended-settings*
remapping-latex-suite-keys latex-suite.txt /*remapping-latex-suite-keys*
section-mappings latex-suite.txt /*section-mappings*
smart-backspace latex-suite.txt /*smart-backspace*
smart-keys latex-suite.txt /*smart-keys*
supporting-packages latex-suite.txt /*supporting-packages*
why-IMAP latex-suite.txt /*why-IMAP*

View File

@@ -0,0 +1 @@
ref: refs/heads/master

View File

@@ -0,0 +1,11 @@
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = https://github.com/vim-latex/vim-latex.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master

View File

@@ -0,0 +1 @@
Unnamed repository; edit this file 'description' to name the repository.

View File

@@ -0,0 +1,15 @@
#!/bin/sh
#
# An example hook script to check the commit log message taken by
# applypatch from an e-mail message.
#
# The hook should exit with non-zero status after issuing an
# appropriate message if it wants to stop the commit. The hook is
# allowed to edit the commit message file.
#
# To enable this hook, rename this file to "applypatch-msg".
. git-sh-setup
commitmsg="$(git rev-parse --git-path hooks/commit-msg)"
test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"}
:

View File

@@ -0,0 +1,24 @@
#!/bin/sh
#
# An example hook script to check the commit log message.
# Called by "git commit" with one argument, the name of the file
# that has the commit message. The hook should exit with non-zero
# status after issuing an appropriate message if it wants to stop the
# commit. The hook is allowed to edit the commit message file.
#
# To enable this hook, rename this file to "commit-msg".
# Uncomment the below to add a Signed-off-by line to the message.
# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
# hook is more suited to it.
#
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
# This example catches duplicate Signed-off-by lines.
test "" = "$(grep '^Signed-off-by: ' "$1" |
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
echo >&2 Duplicate Signed-off-by lines.
exit 1
}

View File

@@ -0,0 +1,174 @@
#!/usr/bin/perl
use strict;
use warnings;
use IPC::Open2;
# An example hook script to integrate Watchman
# (https://facebook.github.io/watchman/) with git to speed up detecting
# new and modified files.
#
# The hook is passed a version (currently 2) and last update token
# formatted as a string and outputs to stdout a new update token and
# all files that have been modified since the update token. Paths must
# be relative to the root of the working tree and separated by a single NUL.
#
# To enable this hook, rename this file to "query-watchman" and set
# 'git config core.fsmonitor .git/hooks/query-watchman'
#
my ($version, $last_update_token) = @ARGV;
# Uncomment for debugging
# print STDERR "$0 $version $last_update_token\n";
# Check the hook interface version
if ($version ne 2) {
die "Unsupported query-fsmonitor hook version '$version'.\n" .
"Falling back to scanning...\n";
}
my $git_work_tree = get_working_dir();
my $retry = 1;
my $json_pkg;
eval {
require JSON::XS;
$json_pkg = "JSON::XS";
1;
} or do {
require JSON::PP;
$json_pkg = "JSON::PP";
};
launch_watchman();
sub launch_watchman {
my $o = watchman_query();
if (is_work_tree_watched($o)) {
output_result($o->{clock}, @{$o->{files}});
}
}
sub output_result {
my ($clockid, @files) = @_;
# Uncomment for debugging watchman output
# open (my $fh, ">", ".git/watchman-output.out");
# binmode $fh, ":utf8";
# print $fh "$clockid\n@files\n";
# close $fh;
binmode STDOUT, ":utf8";
print $clockid;
print "\0";
local $, = "\0";
print @files;
}
sub watchman_clock {
my $response = qx/watchman clock "$git_work_tree"/;
die "Failed to get clock id on '$git_work_tree'.\n" .
"Falling back to scanning...\n" if $? != 0;
return $json_pkg->new->utf8->decode($response);
}
sub watchman_query {
my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty')
or die "open2() failed: $!\n" .
"Falling back to scanning...\n";
# In the query expression below we're asking for names of files that
# changed since $last_update_token but not from the .git folder.
#
# To accomplish this, we're using the "since" generator to use the
# recency index to select candidate nodes and "fields" to limit the
# output to file names only. Then we're using the "expression" term to
# further constrain the results.
my $last_update_line = "";
if (substr($last_update_token, 0, 1) eq "c") {
$last_update_token = "\"$last_update_token\"";
$last_update_line = qq[\n"since": $last_update_token,];
}
my $query = <<" END";
["query", "$git_work_tree", {$last_update_line
"fields": ["name"],
"expression": ["not", ["dirname", ".git"]]
}]
END
# Uncomment for debugging the watchman query
# open (my $fh, ">", ".git/watchman-query.json");
# print $fh $query;
# close $fh;
print CHLD_IN $query;
close CHLD_IN;
my $response = do {local $/; <CHLD_OUT>};
# Uncomment for debugging the watch response
# open ($fh, ">", ".git/watchman-response.json");
# print $fh $response;
# close $fh;
die "Watchman: command returned no output.\n" .
"Falling back to scanning...\n" if $response eq "";
die "Watchman: command returned invalid output: $response\n" .
"Falling back to scanning...\n" unless $response =~ /^\{/;
return $json_pkg->new->utf8->decode($response);
}
sub is_work_tree_watched {
my ($output) = @_;
my $error = $output->{error};
if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) {
$retry--;
my $response = qx/watchman watch "$git_work_tree"/;
die "Failed to make watchman watch '$git_work_tree'.\n" .
"Falling back to scanning...\n" if $? != 0;
$output = $json_pkg->new->utf8->decode($response);
$error = $output->{error};
die "Watchman: $error.\n" .
"Falling back to scanning...\n" if $error;
# Uncomment for debugging watchman output
# open (my $fh, ">", ".git/watchman-output.out");
# close $fh;
# Watchman will always return all files on the first query so
# return the fast "everything is dirty" flag to git and do the
# Watchman query just to get it over with now so we won't pay
# the cost in git to look up each individual file.
my $o = watchman_clock();
$error = $output->{error};
die "Watchman: $error.\n" .
"Falling back to scanning...\n" if $error;
output_result($o->{clock}, ("/"));
$last_update_token = $o->{clock};
eval { launch_watchman() };
return 0;
}
die "Watchman: $error.\n" .
"Falling back to scanning...\n" if $error;
return 1;
}
sub get_working_dir {
my $working_dir;
if ($^O =~ 'msys' || $^O =~ 'cygwin') {
$working_dir = Win32::GetCwd();
$working_dir =~ tr/\\/\//;
} else {
require Cwd;
$working_dir = Cwd::cwd();
}
return $working_dir;
}

View File

@@ -0,0 +1,8 @@
#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".
exec git update-server-info

View File

@@ -0,0 +1,14 @@
#!/bin/sh
#
# An example hook script to verify what is about to be committed
# by applypatch from an e-mail message.
#
# The hook should exit with non-zero status after issuing an
# appropriate message if it wants to stop the commit.
#
# To enable this hook, rename this file to "pre-applypatch".
. git-sh-setup
precommit="$(git rev-parse --git-path hooks/pre-commit)"
test -x "$precommit" && exec "$precommit" ${1+"$@"}
:

View File

@@ -0,0 +1,49 @@
#!/bin/sh
#
# An example hook script to verify what is about to be committed.
# Called by "git commit" with no arguments. The hook should
# exit with non-zero status after issuing an appropriate message if
# it wants to stop the commit.
#
# To enable this hook, rename this file to "pre-commit".
if git rev-parse --verify HEAD >/dev/null 2>&1
then
against=HEAD
else
# Initial commit: diff against an empty tree object
against=$(git hash-object -t tree /dev/null)
fi
# If you want to allow non-ASCII filenames set this variable to true.
allownonascii=$(git config --type=bool hooks.allownonascii)
# Redirect output to stderr.
exec 1>&2
# Cross platform projects tend to avoid non-ASCII filenames; prevent
# them from being added to the repository. We exploit the fact that the
# printable range starts at the space character and ends with tilde.
if [ "$allownonascii" != "true" ] &&
# Note that the use of brackets around a tr range is ok here, (it's
# even required, for portability to Solaris 10's /usr/bin/tr), since
# the square bracket bytes happen to fall in the designated range.
test $(git diff --cached --name-only --diff-filter=A -z $against |
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
then
cat <<\EOF
Error: Attempt to add a non-ASCII file name.
This can cause problems if you want to work with people on other platforms.
To be portable it is advisable to rename the file.
If you know what you are doing you can disable this check using:
git config hooks.allownonascii true
EOF
exit 1
fi
# If there are whitespace errors, print the offending file names and fail.
exec git diff-index --check --cached $against --

View File

@@ -0,0 +1,13 @@
#!/bin/sh
#
# An example hook script to verify what is about to be committed.
# Called by "git merge" with no arguments. The hook should
# exit with non-zero status after issuing an appropriate message to
# stderr if it wants to stop the merge commit.
#
# To enable this hook, rename this file to "pre-merge-commit".
. git-sh-setup
test -x "$GIT_DIR/hooks/pre-commit" &&
exec "$GIT_DIR/hooks/pre-commit"
:

View File

@@ -0,0 +1,53 @@
#!/bin/sh
# An example hook script to verify what is about to be pushed. Called by "git
# push" after it has checked the remote status, but before anything has been
# pushed. If this script exits with a non-zero status nothing will be pushed.
#
# This hook is called with the following parameters:
#
# $1 -- Name of the remote to which the push is being done
# $2 -- URL to which the push is being done
#
# If pushing without using a named remote those arguments will be equal.
#
# Information about the commits which are being pushed is supplied as lines to
# the standard input in the form:
#
# <local ref> <local oid> <remote ref> <remote oid>
#
# This sample shows how to prevent push of commits where the log message starts
# with "WIP" (work in progress).
remote="$1"
url="$2"
zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')
while read local_ref local_oid remote_ref remote_oid
do
if test "$local_oid" = "$zero"
then
# Handle delete
:
else
if test "$remote_oid" = "$zero"
then
# New branch, examine all commits
range="$local_oid"
else
# Update to existing branch, examine new commits
range="$remote_oid..$local_oid"
fi
# Check for WIP commit
commit=$(git rev-list -n 1 --grep '^WIP' "$range")
if test -n "$commit"
then
echo >&2 "Found WIP commit in $local_ref, not pushing"
exit 1
fi
fi
done
exit 0

View File

@@ -0,0 +1,169 @@
#!/bin/sh
#
# Copyright (c) 2006, 2008 Junio C Hamano
#
# The "pre-rebase" hook is run just before "git rebase" starts doing
# its job, and can prevent the command from running by exiting with
# non-zero status.
#
# The hook is called with the following parameters:
#
# $1 -- the upstream the series was forked from.
# $2 -- the branch being rebased (or empty when rebasing the current branch).
#
# This sample shows how to prevent topic branches that are already
# merged to 'next' branch from getting rebased, because allowing it
# would result in rebasing already published history.
publish=next
basebranch="$1"
if test "$#" = 2
then
topic="refs/heads/$2"
else
topic=`git symbolic-ref HEAD` ||
exit 0 ;# we do not interrupt rebasing detached HEAD
fi
case "$topic" in
refs/heads/??/*)
;;
*)
exit 0 ;# we do not interrupt others.
;;
esac
# Now we are dealing with a topic branch being rebased
# on top of master. Is it OK to rebase it?
# Does the topic really exist?
git show-ref -q "$topic" || {
echo >&2 "No such branch $topic"
exit 1
}
# Is topic fully merged to master?
not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
if test -z "$not_in_master"
then
echo >&2 "$topic is fully merged to master; better remove it."
exit 1 ;# we could allow it, but there is no point.
fi
# Is topic ever merged to next? If so you should not be rebasing it.
only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
only_next_2=`git rev-list ^master ${publish} | sort`
if test "$only_next_1" = "$only_next_2"
then
not_in_topic=`git rev-list "^$topic" master`
if test -z "$not_in_topic"
then
echo >&2 "$topic is already up to date with master"
exit 1 ;# we could allow it, but there is no point.
else
exit 0
fi
else
not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
/usr/bin/perl -e '
my $topic = $ARGV[0];
my $msg = "* $topic has commits already merged to public branch:\n";
my (%not_in_next) = map {
/^([0-9a-f]+) /;
($1 => 1);
} split(/\n/, $ARGV[1]);
for my $elem (map {
/^([0-9a-f]+) (.*)$/;
[$1 => $2];
} split(/\n/, $ARGV[2])) {
if (!exists $not_in_next{$elem->[0]}) {
if ($msg) {
print STDERR $msg;
undef $msg;
}
print STDERR " $elem->[1]\n";
}
}
' "$topic" "$not_in_next" "$not_in_master"
exit 1
fi
<<\DOC_END
This sample hook safeguards topic branches that have been
published from being rewound.
The workflow assumed here is:
* Once a topic branch forks from "master", "master" is never
merged into it again (either directly or indirectly).
* Once a topic branch is fully cooked and merged into "master",
it is deleted. If you need to build on top of it to correct
earlier mistakes, a new topic branch is created by forking at
the tip of the "master". This is not strictly necessary, but
it makes it easier to keep your history simple.
* Whenever you need to test or publish your changes to topic
branches, merge them into "next" branch.
The script, being an example, hardcodes the publish branch name
to be "next", but it is trivial to make it configurable via
$GIT_DIR/config mechanism.
With this workflow, you would want to know:
(1) ... if a topic branch has ever been merged to "next". Young
topic branches can have stupid mistakes you would rather
clean up before publishing, and things that have not been
merged into other branches can be easily rebased without
affecting other people. But once it is published, you would
not want to rewind it.
(2) ... if a topic branch has been fully merged to "master".
Then you can delete it. More importantly, you should not
build on top of it -- other people may already want to
change things related to the topic as patches against your
"master", so if you need further changes, it is better to
fork the topic (perhaps with the same name) afresh from the
tip of "master".
Let's look at this example:
o---o---o---o---o---o---o---o---o---o "next"
/ / / /
/ a---a---b A / /
/ / / /
/ / c---c---c---c B /
/ / / \ /
/ / / b---b C \ /
/ / / / \ /
---o---o---o---o---o---o---o---o---o---o---o "master"
A, B and C are topic branches.
* A has one fix since it was merged up to "next".
* B has finished. It has been fully merged up to "master" and "next",
and is ready to be deleted.
* C has not merged to "next" at all.
We would want to allow C to be rebased, refuse A, and encourage
B to be deleted.
To compute (1):
git rev-list ^master ^topic next
git rev-list ^master next
if these match, topic has not merged in next at all.
To compute (2):
git rev-list master..topic
if this is empty, it is fully merged to "master".
DOC_END

View File

@@ -0,0 +1,24 @@
#!/bin/sh
#
# An example hook script to make use of push options.
# The example simply echoes all push options that start with 'echoback='
# and rejects all pushes when the "reject" push option is used.
#
# To enable this hook, rename this file to "pre-receive".
if test -n "$GIT_PUSH_OPTION_COUNT"
then
i=0
while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"
do
eval "value=\$GIT_PUSH_OPTION_$i"
case "$value" in
echoback=*)
echo "echo from the pre-receive-hook: ${value#*=}" >&2
;;
reject)
exit 1
esac
i=$((i + 1))
done
fi

View File

@@ -0,0 +1,42 @@
#!/bin/sh
#
# An example hook script to prepare the commit log message.
# Called by "git commit" with the name of the file that has the
# commit message, followed by the description of the commit
# message's source. The hook's purpose is to edit the commit
# message file. If the hook fails with a non-zero status,
# the commit is aborted.
#
# To enable this hook, rename this file to "prepare-commit-msg".
# This hook includes three examples. The first one removes the
# "# Please enter the commit message..." help message.
#
# The second includes the output of "git diff --name-status -r"
# into the message, just before the "git status" output. It is
# commented because it doesn't cope with --amend or with squashed
# commits.
#
# The third example adds a Signed-off-by line to the message, that can
# still be edited. This is rarely a good idea.
COMMIT_MSG_FILE=$1
COMMIT_SOURCE=$2
SHA1=$3
/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE"
# case "$COMMIT_SOURCE,$SHA1" in
# ,|template,)
# /usr/bin/perl -i.bak -pe '
# print "\n" . `git diff --cached --name-status -r`
# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;;
# *) ;;
# esac
# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE"
# if test -z "$COMMIT_SOURCE"
# then
# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE"
# fi

View File

@@ -0,0 +1,78 @@
#!/bin/sh
# An example hook script to update a checked-out tree on a git push.
#
# This hook is invoked by git-receive-pack(1) when it reacts to git
# push and updates reference(s) in its repository, and when the push
# tries to update the branch that is currently checked out and the
# receive.denyCurrentBranch configuration variable is set to
# updateInstead.
#
# By default, such a push is refused if the working tree and the index
# of the remote repository has any difference from the currently
# checked out commit; when both the working tree and the index match
# the current commit, they are updated to match the newly pushed tip
# of the branch. This hook is to be used to override the default
# behaviour; however the code below reimplements the default behaviour
# as a starting point for convenient modification.
#
# The hook receives the commit with which the tip of the current
# branch is going to be updated:
commit=$1
# It can exit with a non-zero status to refuse the push (when it does
# so, it must not modify the index or the working tree).
die () {
echo >&2 "$*"
exit 1
}
# Or it can make any necessary changes to the working tree and to the
# index to bring them to the desired state when the tip of the current
# branch is updated to the new commit, and exit with a zero status.
#
# For example, the hook can simply run git read-tree -u -m HEAD "$1"
# in order to emulate git fetch that is run in the reverse direction
# with git push, as the two-tree form of git read-tree -u -m is
# essentially the same as git switch or git checkout that switches
# branches while keeping the local changes in the working tree that do
# not interfere with the difference between the branches.
# The below is a more-or-less exact translation to shell of the C code
# for the default behaviour for git's push-to-checkout hook defined in
# the push_to_deploy() function in builtin/receive-pack.c.
#
# Note that the hook will be executed from the repository directory,
# not from the working tree, so if you want to perform operations on
# the working tree, you will have to adapt your code accordingly, e.g.
# by adding "cd .." or using relative paths.
if ! git update-index -q --ignore-submodules --refresh
then
die "Up-to-date check failed"
fi
if ! git diff-files --quiet --ignore-submodules --
then
die "Working directory has unstaged changes"
fi
# This is a rough translation of:
#
# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX
if git cat-file -e HEAD 2>/dev/null
then
head=HEAD
else
head=$(git hash-object -t tree --stdin </dev/null)
fi
if ! git diff-index --quiet --cached --ignore-submodules $head --
then
die "Working directory has staged changes"
fi
if ! git read-tree -u -m "$commit"
then
die "Could not update working tree to new HEAD"
fi

View File

@@ -0,0 +1,128 @@
#!/bin/sh
#
# An example hook script to block unannotated tags from entering.
# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
#
# To enable this hook, rename this file to "update".
#
# Config
# ------
# hooks.allowunannotated
# This boolean sets whether unannotated tags will be allowed into the
# repository. By default they won't be.
# hooks.allowdeletetag
# This boolean sets whether deleting tags will be allowed in the
# repository. By default they won't be.
# hooks.allowmodifytag
# This boolean sets whether a tag may be modified after creation. By default
# it won't be.
# hooks.allowdeletebranch
# This boolean sets whether deleting branches will be allowed in the
# repository. By default they won't be.
# hooks.denycreatebranch
# This boolean sets whether remotely creating branches will be denied
# in the repository. By default this is allowed.
#
# --- Command line
refname="$1"
oldrev="$2"
newrev="$3"
# --- Safety check
if [ -z "$GIT_DIR" ]; then
echo "Don't run this script from the command line." >&2
echo " (if you want, you could supply GIT_DIR then run" >&2
echo " $0 <ref> <oldrev> <newrev>)" >&2
exit 1
fi
if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
echo "usage: $0 <ref> <oldrev> <newrev>" >&2
exit 1
fi
# --- Config
allowunannotated=$(git config --type=bool hooks.allowunannotated)
allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch)
denycreatebranch=$(git config --type=bool hooks.denycreatebranch)
allowdeletetag=$(git config --type=bool hooks.allowdeletetag)
allowmodifytag=$(git config --type=bool hooks.allowmodifytag)
# check for no description
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
case "$projectdesc" in
"Unnamed repository"* | "")
echo "*** Project description file hasn't been set" >&2
exit 1
;;
esac
# --- Check types
# if $newrev is 0000...0000, it's a commit to delete a ref.
zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')
if [ "$newrev" = "$zero" ]; then
newrev_type=delete
else
newrev_type=$(git cat-file -t $newrev)
fi
case "$refname","$newrev_type" in
refs/tags/*,commit)
# un-annotated tag
short_refname=${refname##refs/tags/}
if [ "$allowunannotated" != "true" ]; then
echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
exit 1
fi
;;
refs/tags/*,delete)
# delete tag
if [ "$allowdeletetag" != "true" ]; then
echo "*** Deleting a tag is not allowed in this repository" >&2
exit 1
fi
;;
refs/tags/*,tag)
# annotated tag
if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
then
echo "*** Tag '$refname' already exists." >&2
echo "*** Modifying a tag is not allowed in this repository." >&2
exit 1
fi
;;
refs/heads/*,commit)
# branch
if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
echo "*** Creating a branch is not allowed in this repository" >&2
exit 1
fi
;;
refs/heads/*,delete)
# delete branch
if [ "$allowdeletebranch" != "true" ]; then
echo "*** Deleting a branch is not allowed in this repository" >&2
exit 1
fi
;;
refs/remotes/*,commit)
# tracking branch
;;
refs/remotes/*,delete)
# delete tracking branch
if [ "$allowdeletebranch" != "true" ]; then
echo "*** Deleting a tracking branch is not allowed in this repository" >&2
exit 1
fi
;;
*)
# Anything else (is there anything else?)
echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
exit 1
;;
esac
# --- Finished
exit 0

Binary file not shown.

View File

@@ -0,0 +1,6 @@
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~

View File

@@ -0,0 +1,2 @@
0000000000000000000000000000000000000000 069a26a0963adb6a9de9f40f5a7332c7207d5423 LinlyBoi <libkyy@e.email> 1673460163 +0200 clone: from https://github.com/vim-latex/vim-latex.git
069a26a0963adb6a9de9f40f5a7332c7207d5423 069a26a0963adb6a9de9f40f5a7332c7207d5423 LinlyBoi <libkyy@e.email> 1673460166 +0200 checkout: moving from master to master

View File

@@ -0,0 +1 @@
0000000000000000000000000000000000000000 069a26a0963adb6a9de9f40f5a7332c7207d5423 LinlyBoi <libkyy@e.email> 1673460163 +0200 clone: from https://github.com/vim-latex/vim-latex.git

View File

@@ -0,0 +1 @@
0000000000000000000000000000000000000000 069a26a0963adb6a9de9f40f5a7332c7207d5423 LinlyBoi <libkyy@e.email> 1673460163 +0200 clone: from https://github.com/vim-latex/vim-latex.git

View File

@@ -0,0 +1,6 @@
# pack-refs with: peeled fully-peeled sorted
069a26a0963adb6a9de9f40f5a7332c7207d5423 refs/remotes/origin/master
a72795d22cd4d5973c332758dfac2344089aa88a refs/tags/v1.10.0
^279c5600776d638d7182a80a18a1e37517b71409
c5ba1fefdff7d7fdc7b8a1b85ac788d269e37294 refs/tags/v1.9.0
^aa33a425d4ce897a265ce765f8841627189a7c26

View File

@@ -0,0 +1 @@
069a26a0963adb6a9de9f40f5a7332c7207d5423

View File

@@ -0,0 +1 @@
ref: refs/remotes/origin/master

View File

@@ -0,0 +1,3 @@
069a26a0963adb6a9de9f40f5a7332c7207d5423
279c5600776d638d7182a80a18a1e37517b71409
aa33a425d4ce897a265ce765f8841627189a7c26

View File

@@ -0,0 +1,2 @@
doc/latex-suite.txt -diff
doc/latex-suite-quickstart.txt -diff

View File

@@ -0,0 +1,40 @@
## To see if new rules exclude any existing files, run
##
## git ls-files -i --exclude-standard
##
## after modifying this file.
## Generated by the build process
## Editor backup and swap files
*~
.\#*
\#**\#
.*.sw[op]
.sw[op]
## Generated by Mac filesystem
.DS_Store
## For rejects
*.orig
*.rej
*.ancestor
*.current
*.patched
## Generated by StGit
patches-*
.stgit-*.txt
## Documentation building
doc/db2vim/domutils.pyc
doc/db2vim/textutils.pyc
doc/latex-suite/
doc/latex-suite.html
doc/latex-suite-quickstart/
doc/latex-suite-quickstart.html
## Pathogen (to make it easier to use vim-latex-git)
doc/tags
*.pyc

View File

@@ -0,0 +1,11 @@
#!/usr/bin/perl
foreach $fname (@ARGV) {
$tags = `fgrep \\label $fname`;
@tagsList = split('\n', $tags);
foreach $tag (@tagsList) {
$tag =~ /.*\\label{([^}]*)}/;
$tagName = $1;
print "$tagName\t$fname\t/label{$tagName}/\n";
}
}

View File

@@ -0,0 +1,78 @@
#!/usr/bin/perl
# Author: Dimitri Antoniou <dimitri@risc2.aecom.yu.edu>
# usage: ltags filename
# handles: \label and \cite{ } with one or more arguments
# fails if arguments of cite spread over more than one line
# also searches in files that are \include or \input in the main file
# get main LaTeX source file from command line:
$mainfile = shift;
# get names of included files and store them in an array
open MAIN, $mainfile or die "$!" ;
@mainfile=<MAIN>;
@allsrcfiles = map{ /^\\(?:input|include){(.*?)}/ } @mainfile;
unshift @allsrcfiles, $mainfile;
# loop over all source files
for $srcfile (@allsrcfiles) {
# if \input{fname} append .tex to fname
unless ( $srcfile =~ m/\.tex/ ) { $srcfile = $srcfile . "\.tex" }
open SRC, $srcfile or die "$!" ;
# store contents of source file in array @texfile
@texfile=<SRC>;
# store lines with \label and \cite (or \citeonline) in arrays
@labelList = grep{ /\\label{/ } @texfile;
@citeList = grep{ /\\(cite|citeonline){/ } @texfile;
# see if we use an external database; if yes, store its name in $bibfile
($dbase) = grep{ /^\\bibliography{/ } @texfile;
if ($dbase) {
$dbase =~ m/\\bibliography{(.*?)}/;
$bibfile = $1;
}
# write \bibitem in tags file
@mrefs=();
@refs=();
@multirefs=();
foreach (@citeList) {
while ( m/\\(?:cite|citeonline){(.*?)}/g ) {
$refs = $1;
# if \cite has more than one argument, split them:
if ($refs =~ /,/) {
@mrefs = split /,/, $refs;
# there might be more than one \cite in a line:
push (@multirefs, @mrefs);
}
else {
@refs = ($refs);
push (@multirefs, @refs);
}
}
# in BibTeX, format is @ARTICLE{Name, }; in source file, \bibitem{Name}
for $ref (@multirefs) {
if ( $dbase ) {
push @unsorttag, "$ref\t$bibfile\t/{$ref,/\n"
}
else {
push @unsorttag, "$ref\t$srcfile\t/bibitem{$ref}/\n"
}
}
}
# write \label in tag file
foreach (@labelList) {
m/\\label{(.*?)}/;
push @unsorttag, "$1\t$srcfile\t/label{$1}/\n";
}
}
# sort tag file; then, eliminate duplicates
@sortedtag = sort @unsorttag;
%seen = ();
@uniqtag = grep { ! $seen{$_} ++ } @sortedtag;
open(TAGS, "> tags");
print TAGS @uniqtag;

View File

@@ -0,0 +1,22 @@
" File: bib_latexSuite.vim
" Author: Srinath Avadhanula
" License: Vim Charityware License
" Description:
" This file sources the bibtex.vim file distributed as part of latex-suite.
" That file sets up 3 maps BBB, BAS, and BBA which are easy wasy to type in
" bibliographic entries.
"
if exists('b:suppress_latex_suite') && b:suppress_latex_suite == 1
finish
endif
" source main.vim because we need a few functions from it.
runtime ftplugin/latex-suite/main.vim
" Disable smart-quotes because we need to enter real quotes in bib files.
runtime ftplugin/latex-suite/bibtex.vim
" Infect the current buffer with <buffer>-local imaps for the IMAPs
call IMAP_infect()
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4:nowrap

View File

@@ -0,0 +1,253 @@
"=============================================================================
" File: bibtex.vim
" Function: BibT
" Author: Alan G Isaac <aisaac@american.edu>
" modified by Srinath Avadhanula for latex-suite.
" License: Vim Charityware license.
"=============================================================================
" Fields:
" Define what field type each letter denotes {{{
"
let s:w_standsfor = 'address'
let s:a_standsfor = 'author'
let s:b_standsfor = 'booktitle'
let s:c_standsfor = 'chapter'
let s:d_standsfor = 'edition'
let s:e_standsfor = 'editor'
let s:h_standsfor = 'howpublished'
let s:i_standsfor = 'institution'
let s:k_standsfor = 'isbn'
let s:j_standsfor = 'journal'
let s:m_standsfor = 'month'
let s:n_standsfor = 'number'
let s:o_standsfor = 'organization'
let s:p_standsfor = 'pages'
let s:q_standsfor = 'publisher'
let s:r_standsfor = 'school'
let s:s_standsfor = 'series'
let s:t_standsfor = 'title'
let s:u_standsfor = 'type'
let s:v_standsfor = 'volume'
let s:y_standsfor = 'year'
let s:z_standsfor = 'note'
" }}}
" Define the fields required for the various entry types {{{
"
" s:{type}_required defines the required fields
" s:{type}_optional1 defines common optional fields
" s:{type}_optional2 defines uncommmon optional fields
" s:{type}_retval defines the first line of the formatted bib entry.
"
let s:key='<+key+>'
let s:{'article'}_required="atjy"
let s:{'article'}_optional1="vnpm"
let s:{'article'}_optional2="z" " z is note
let s:{'article'}_retval = '@ARTICLE{' . s:key . ','."\n"
let s:{'book'}_required="aetqy" " requires author *or* editor
let s:{'book'}_optional1="wd"
let s:{'book'}_optional2="vnsmz" " w is address, d is edition
let s:{'book'}_extras="k" " isbn
let s:{'book'}_retval = '@BOOK{' . s:key . ','."\n"
let s:{'booklet'}_required="t"
let s:{'booklet'}_optional1="ahy"
let s:{'booklet'}_optional2="wmz" " w is address
let s:{'booklet'}_retval = '@BOOKLET{' . s:key . ','."\n"
let s:{'inbook'}_required="aetcpqy"
let s:{'inbook'}_optional1="w" " w is address
let s:{'inbook'}_optional2="vnsudmz" " d is edition
let s:{'inbook'}_extras="k" " isbn
let s:{'inbook'}_retval = '@INBOOK{' . s:key . ','."\n"
let s:{'incollection'}_required="atbqy" " b is booktitle
let s:{'incollection'}_optional1="cpw" " w is address, c is chapter
let s:{'incollection'}_optional2="evnsudmz" " d is edition
let s:{'incollection'}_extras="k" " isbn
let s:{'incollection'}_retval = '@INCOLLECTION{' . s:key . ','."\n"
let s:{'inproceedings'}_required="atby" " b is booktitle
let s:{'inproceedings'}_optional1="epwoq" " w is address, q is publisher
let s:{'inproceedings'}_optional2="vnsmz"
let s:{'inproceedings'}_extras="k" " isbn
let s:{'inproceedings'}_retval = '@INPROCEEDINGS{' . s:key . ','."\n"
let s:{'conference'}_required="atby" " b is booktitle
let s:{'conference'}_optional1="epwoq" " w is address, q is publisher
let s:{'conference'}_optional2="vnsmz"
let s:{'conference'}_extras="k" " isbn
let s:{'conference'}_retval = '@CONFERENCE{' . s:key . ','."\n"
let s:{'manual'}_required="t"
let s:{'manual'}_optional1="ow"
let s:{'manual'}_optional2="admyz" " w is address
let s:{'manual'}_retval = '@MANUAL{' . s:key . ','."\n"
let s:{'msthesis'}_required="atry" " r is school
let s:{'msthesis'}_optional1="w" " w is address
let s:{'msthesis'}_optional2="umz" " u is type, w is address
let s:{'msthesis'}_retval = '@MASTERSTHESIS{' . s:key . ','."\n"
let s:{'misc'}_required=""
let s:{'misc'}_optional1="ath"
let s:{'misc'}_optional2="myz"
let s:{'misc'}_retval = '@MISC{' . s:key . ','."\n"
let s:{'phdthesis'}_required="atry" " r is school
let s:{'phdthesis'}_optional1="w" " w is address
let s:{'phdthesis'}_optional2="umz" " u is type
let s:{'phdthesis'}_retval = '@PHDTHESIS{' . s:key . ','."\n"
let s:{'proceedings'}_required="ty"
let s:{'proceedings'}_optional1="ewo" " w is address
let s:{'proceedings'}_optional2="vnsmqz" " q is publisher
let s:{'proceedings'}_retval = '@PROCEEDINGS{' . s:key . ','."\n"
let s:{'techreport'}_required="atiy"
let s:{'techreport'}_optional1="unw" " u is type, w is address
let s:{'techreport'}_optional2="mz"
let s:{'techreport'}_retval = '@TECHREPORT{' . s:key . ','."\n"
let s:{'unpublished'}_required="atz"
let s:{'unpublished'}_optional1="y"
let s:{'unpublished'}_optional2="m"
let s:{'unpublished'}_retval = '@UNPUBLISHED{' . s:key . ','."\n"
" }}}
if exists('s:done')
finish
endif
let s:done = 1
call IMAP ('BBB', "\<C-r>=BibT('', '', 0)\<CR>", 'bib')
call IMAP ('BBL', "\<C-r>=BibT('', 'o', 0)\<CR>", 'bib')
call IMAP ('BBH', "\<C-r>=BibT('', 'O', 0)\<CR>", 'bib')
call IMAP ('BBX', "\<C-r>=BibT('', 'Ox', 0)\<CR>", 'bib')
" BibT: function to generate a formatted bibtex entry {{{
" three sample usages:
" :call BibT() will request type choice
" :call BibT("article") preferred, provides most common fields
" :call BibT("article","ox") more optional fields (o) and extras (x)
"
" Input Arguments:
" type: is one of the types listed above. (this should be a complete name, not
" the acronym).
" options: a string containing 0 or more of the letters 'oOx'
" where
" o: include a bib entry with first set of options
" O: include a bib entry with extended options
" x: incude bib entry with extra options
" prompt: whether the fields are asked to be filled on the command prompt or
" whether place-holders are used. when prompt == 1, then comman line
" questions are used.
"
" Returns:
" a string containing a formatted bib entry
function BibT(type, options, prompt)
if a:type != ''
let choosetype = a:type
else
let types =
\ 'article'."\n".
\ 'booklet'."\n".
\ 'book'."\n".
\ 'conference'."\n".
\ 'inbook'."\n".
\ 'incollection'."\n".
\ 'inproceedings'."\n".
\ 'manual'."\n".
\ 'msthesis'."\n".
\ 'misc'."\n".
\ 'phdthesis'."\n".
\ 'proceedings'."\n".
\ 'techreport'."\n".
\ 'unpublished'
let choosetype = Tex_ChooseFromPrompt(
\ "Choose the type of bibliographic entry: \n" .
\ Tex_CreatePrompt(types, 3, "\n") .
\ "\nEnter number or filename :",
\ types, "\n")
if choosetype == ''
let choosetype = 'article'
endif
if types !~ '^\|\n'.choosetype.'$\|\n'
echomsg 'Please choose only one of the given types'
return
endif
endif
if a:options != ''
let options = a:options
else
let options = ""
endif
let fields = ''
let extras=""
let retval = ""
" define fields
let fields = s:{choosetype}_required
if options =~ 'o' && exists('s:'.choosetype.'_optional1')
let fields = fields . s:{choosetype}_optional1
endif
if options =~ "O" && exists('s:'.choosetype.'_optional2')
if options !~ 'o'&& exists('s:'.choosetype.'_optional1')
let fields = fields . s:{choosetype}_optional1
endif
let fields = fields . s:{choosetype}_optional2
endif
if options =~ "x" && exists('s:'.choosetype.'_extras')
let fields = fields . extras
endif
if exists('g:Bib_'.choosetype.'_options')
let fields = fields . g:Bib_{choosetype}_options
endif
let retval = s:{choosetype}_retval
let i = 0
while i < strlen(fields)
let field = strpart(fields, i, 1)
if exists('s:'.field.'_standsfor')
let field_name = s:{field}_standsfor
let retval = retval.field_name." = {<++>},\n"
endif
let i = i + 1
endwhile
" If the user wants even more fine-tuning...
if Tex_GetVarValue('Bib_'.choosetype.'_extrafields') != ''
let extrafields = Tex_GetVarValue('Bib_'.choosetype.'_extrafields')
let i = 1
while 1
let field_name = Tex_Strntok(extrafields, "\n", i)
if field_name == ''
break
endif
let retval = retval.field_name." = {<++>},\n"
let i = i + 1
endwhile
endif
let retval = retval.'otherinfo = {<++>}'."\n"
let retval = retval."}<++>"."\n"
return IMAP_PutTextWithMovement(retval)
endfunction
" }}}
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4

View File

@@ -0,0 +1,248 @@
# Author: Srinath Avadhanula
# This file is distributed as part of the vim-latex project
# http://vim-latex.sf.net
import re
import os
try:
from urllib.request import urlopen, pathname2url
except ImportError:
from urllib import urlopen, pathname2url
# Compatibility functions
# Check for existence of builtin function next()
try:
next
except NameError:
def next(it):
return it.next()
# Define items(dict) as an iterator over the items
if not("iteritems" in dir(dict())):
# In python3, the job of iteritems() is done by items()
def items(dictionary):
return dictionary.items()
else:
# In python2, we use iteritems()
def items(dictionary):
return dictionary.iteritems()
class Bibliography(dict):
def __init__(self, txt, macros={}):
"""
txt:
a string which represents the entire bibtex entry. A typical
entry is of the form:
@ARTICLE{ellington:84:part3,
author = {Ellington, C P},
title = {The Aerodynamics of Hovering Insect Flight. III. Kinematics},
journal = {Philosophical Transactions of the Royal Society of London. Series B, Biological Sciences},
year = {1984},
volume = {305},
pages = {41-78},
number = {1122},
owner = {Srinath},
pdf = {C:\srinath\research\papers\Ellington-3-Kinematics.pdf},
timestamp = {2006.01.02},
}
"""
for k, v in items(macros):
txt = txt.replace(k, '{' + v + '}')
m = re.match(r'\s*@(\w+)\s*{\s*((\S+),)?(.*)}\s*', txt,
re.MULTILINE | re.DOTALL)
if not m:
return None
self['bibtype'] = m.group(1).capitalize()
self['key'] = m.group(3)
self['body'] = m.group(4)
body = self['body']
self['bodytext'] = ''
while 1:
m = re.search(r'(\S+?)\s*=\s*(.)', body)
if not m:
break
field = m.group(1)
body = body[(m.start(2) + 1):]
if m.group(2) == '{':
# search for the next closing brace. This is not simply a
# matter of searching for the next closing brace since
# braces can be nested. The following code basically goes
# to the next } which has not already been closed by a
# following {.
mniter = re.finditer(r'{|}', body)
count = 1
while 1:
try:
mn = next(mniter)
except StopIteration:
return None
if mn.group(0) == '{':
count += 1
else:
count -= 1
if count == 0:
value = body[:(mn.start(0))]
break
elif m.group(2) == '"':
# search for the next unquoted double-quote. To be more
# precise, a double quote which is preceded by an even
# number of double quotes.
mn = re.search(r'(?!\\)(\\\\)*"', body)
if not mn:
return None
value = body[:(mn.start(0))]
else:
# $ always matches. So we do not need to do any
# error-checking.
mn = re.search(r',|$', body)
value = m.group(2) + body[:(mn.start(0))].rstrip()
self[field.lower()] = re.sub(r'\s+', ' ', value)
body = body[(mn.start(0) + 1):]
self['bodytext'] += (' %s: %s\n' % (field, value))
if self['bibtype'].lower() == 'string':
self['macro'] = {field: value}
self['bodytext'] = self['bodytext'].rstrip()
def __getitem__(self, key):
try:
return dict.__getitem__(self, key)
except KeyError:
return ''
def __str__(self):
if self['bibtype'].lower() == 'string':
return 'String: %(macro)s' % self
elif self['bibtype'].lower() == 'article':
return ('Article [%(key)s]\n' +
'TI "%(title)s"\n' +
'AU %(author)s\n' +
'IN In %(journal)s, %(year)s') % self
elif self['bibtype'].lower() == 'conference':
return ('Conference [%(key)s]\n' +
'TI "%(title)s"\n' +
'AU %(author)s\n' +
'IN In %(booktitle)s, %(year)s') % self
elif self['bibtype'].lower() == 'mastersthesis':
return ('Masters [%(key)s]\n' +
'TI "%(title)s"\n' +
'AU %(author)s\n' +
'IN In %(school)s, %(year)s') % self
elif self['bibtype'].lower() == 'phdthesis':
return ('PhD [%(key)s]\n' +
'TI "%(title)s"\n' +
'AU %(author)s\n' +
'IN In %(school)s, %(year)s') % self
elif self['bibtype'].lower() == 'book':
return ('Book [%(key)s]\n' +
'TI "%(title)s"\n' +
'AU %(author)s\n' +
'IN %(publisher)s, %(year)s') % self
else:
s = '%(bibtype)s [%(key)s]\n' % self
if self['title']:
s += 'TI "%(title)s"\n' % self
if self['author']:
s += 'AU %(author)s\n' % self
for k, v in items(self):
if k not in ['title', 'author', 'bibtype', 'key', 'id', 'file',
'body', 'bodytext']:
s += 'MI %s: %s\n' % (k, v)
return s.rstrip()
def satisfies(self, filters):
for field, regexp in filters:
if not re.search(regexp, self[field], re.I):
return False
return True
class BibFile:
def __init__(self, filelist=''):
self.bibentries = []
self.filters = []
self.macros = {}
self.sortfields = []
if filelist:
for f in filelist.splitlines():
self.addfile(f)
def addfile(self, file):
content = urlopen('file://' + pathname2url(os.path.abspath(file))).read()
try:
content_str = content.decode('utf-8')
except UnicodeDecodeError:
content_str = content.decode('latin1')
fields = content_str.split('@')
for f in fields:
if not (f and re.match('string', f, re.I)):
continue
b = Bibliography('@' + f)
self.macros.update(b['macro'])
for f in fields:
if not f or re.match('string', f, re.I):
continue
b = Bibliography('@' + f, self.macros)
if b:
b['file'] = file
b['id'] = len(self.bibentries)
self.bibentries += [b]
def addfilter(self, filterspec):
self.filters += [filterspec.split()]
def rmfilters(self):
self.filters = []
def __str__(self):
s = ''
for b in self.bibentries:
if b['key'] and b.satisfies(self.filters):
s += '%s\n\n' % b
return s
def addsortfield(self, field):
self.sortfields += [field]
def rmsortfields(self):
self.sortfields = []
def sort(self):
self.bibentries.sort(key=lambda x:[x[field] for field in self.sortfields])
if __name__ == "__main__":
import sys
bf = BibFile(sys.argv[1])
print(bf)

View File

@@ -0,0 +1,146 @@
" ==============================================================================
" History: This was originally part of auctex.vim by Carl Mueller.
" Srinath Avadhanula incorporated it into latex-suite with
" significant modifications.
" Parts of this file may be copyrighted by others as noted.
" Description:
" This ftplugin provides the following maps:
" . <M-b> encloses the previous character in \mathbf{}
" . <M-c> is polymorphic as follows:
" Insert mode:
" 1. If the previous character is a letter or number, then capitalize it and
" enclose it in \mathcal{}
" 2. otherwise insert \cite{}
" Visual Mode:
" 1. Enclose selection in \mathcal{}
" . <M-l> is also polymorphic as follows:
" If the character before typing <M-l> is one of '([{|<q', then do the
" following:
" 1. (<M-l> \left(\right
" similarly for [, |
" {<M-l> \left\{\right\}
" 2. <<M-l> \langle\rangle
" 3. q<M-l> \lefteqn{}
" otherwise insert \label{}
" . <M-i> inserts \item commands at the current cursor location depending on
" the surrounding environment. For example, inside itemize, it will
" insert a simple \item, but within a description, it will insert
" \item[<+label+>] etc.
"
" These functions make it extremeley easy to do all the \left \right stuff in
" latex.
" ==============================================================================
" Avoid reinclusion.
if exists('b:did_brackets')
finish
endif
let b:did_brackets = 1
" define the funtions only once.
if exists('*Tex_MathBF')
finish
endif
" Tex_MathBF: encloses te previous letter/number in \mathbf{} {{{
" Description:
function! Tex_MathBF()
return "\<Left>\\mathbf{\<Right>}"
endfunction " }}}
" Tex_MathCal: enclose the previous letter/number in \mathcal {{{
" Description:
" if the last character is not a letter/number, then insert \cite{}
function! Tex_MathCal()
let line = getline(line("."))
let char = line[col(".")-2]
if char =~ '[a-zA-Z0-9]'
return "\<BS>".'\mathcal{'.toupper(char).'}'
else
return IMAP_PutTextWithMovement('\cite{<++>}<++>')
endif
endfunction
" }}}
" Tex_LeftRight: maps <M-l> in insert mode. {{{
" Description:
" This is a polymorphic function, which maps the behaviour of <M-l> in the
" following way:
" If the character before typing <M-l> is one of '([{|<q', then do the
" following:
" 1. (<M-l> \left(<++>\right<++>
" similarly for [, |
" {<M-l> \left\{<++>\right\}<++>
" 2. <<M-l> \langle<++>\rangle<++>
" 3. q<M-l> \lefteqn{<++>}<++>
" otherwise insert \label{<++>}<++>
function! Tex_LeftRight()
let line = getline(line("."))
let char = line[col(".")-2]
let previous = line[col(".")-3]
let matchedbrackets = '()[]{}||'
if char =~ '(\|\[\|{\||'
let add = ''
if char =~ '{'
let add = "\\"
endif
let rhs = matchstr(matchedbrackets, char.'\zs.\ze')
return "\<BS>".IMAP_PutTextWithMovement('\left'.add.char.'<++>\right'.add.rhs.'<++>')
elseif char == '<'
return "\<BS>".IMAP_PutTextWithMovement('\langle <++>\rangle<++>')
elseif char == 'q'
return "\<BS>".IMAP_PutTextWithMovement('\lefteqn{<++>}<++>')
else
return IMAP_PutTextWithMovement('\label{<++>}<++>')
endif
endfunction " }}}
" Tex_PutLeftRight: maps <M-l> in normal mode {{{
" Description:
" Put \left...\right in front of the matched brackets.
function! Tex_PutLeftRight()
let previous = getline(line("."))[col(".") - 2]
let char = getline(line("."))[col(".") - 1]
if previous == '\'
if char == '{'
exe "normal! ileft\\\<Esc>l%iright\\\<Esc>l%"
elseif char == '}'
exe "normal! iright\\\<Esc>l%ileft\\\<Esc>l%"
endif
elseif char =~ '\[\|('
exe "normal! i\\left\<Esc>l%i\\right\<Esc>l%"
elseif char =~ '\]\|)'
exe "normal! i\\right\<Esc>l%i\\left\<Esc>l%"
endif
endfunction " }}}
" Provide <plug>'d mapping for easy user customization. {{{
inoremap <silent> <Plug>Tex_MathBF <C-r>=Tex_MathBF()<CR>
inoremap <silent> <Plug>Tex_MathCal <C-r>=Tex_MathCal()<CR>
inoremap <silent> <Plug>Tex_LeftRight <C-r>=Tex_LeftRight()<CR>
vnoremap <silent> <Plug>Tex_MathBF <C-C>`>a}<Esc>`<i\mathbf{<Esc>
vnoremap <silent> <Plug>Tex_MathCal <C-C>`>a}<Esc>`<i\mathcal{<Esc>
nnoremap <silent> <Plug>Tex_LeftRight :call Tex_PutLeftRight()<CR>
" }}}
" Tex_SetBracketingMaps: create mappings for the current buffer {{{
function! <SID>Tex_SetBracketingMaps()
if g:Tex_AdvancedMath == 1
call Tex_MakeMap('<M-b>', '<Plug>Tex_MathBF', 'i', '<buffer> <silent>')
call Tex_MakeMap('<M-c>', '<Plug>Tex_MathCal', 'i', '<buffer> <silent>')
call Tex_MakeMap('<M-l>', '<Plug>Tex_LeftRight', 'i', '<buffer> <silent>')
call Tex_MakeMap('<M-b>', '<Plug>Tex_MathBF', 'v', '<buffer> <silent>')
call Tex_MakeMap('<M-c>', '<Plug>Tex_MathCal', 'v', '<buffer> <silent>')
call Tex_MakeMap('<M-l>', '<Plug>Tex_LeftRight', 'n', '<buffer> <silent>')
endif
endfunction
" }}}
augroup LatexSuite
au LatexSuite User LatexSuiteFileType
\ call Tex_Debug('brackets.vim: Catching LatexSuiteFileType event', 'brak') |
\ call <SID>Tex_SetBracketingMaps()
augroup END
" vim:fdm=marker

View File

@@ -0,0 +1,935 @@
"=============================================================================
" File: compiler.vim
" Author: Srinath Avadhanula
" Created: Tue Apr 23 05:00 PM 2002 PST
"
" Description: functions for compiling/viewing/searching latex documents
"=============================================================================
" line continuation used here.
let s:save_cpo = &cpo
set cpo&vim
" Tex_SetTeXCompilerTarget: sets the 'target' for the next call to Tex_RunLaTeX() {{{
function! Tex_SetTeXCompilerTarget(type, target)
call Tex_Debug("+Tex_SetTeXCompilerTarget: setting target to [".a:target."] for ".a:type."r", "comp")
if a:target == ''
let target = Tex_GetVarValue('Tex_DefaultTargetFormat')
let target = input('Enter the target format for '.a:type.'r: ', target)
else
let target = a:target
endif
if target == ''
let target = 'dvi'
endif
let targetRule = Tex_GetVarValue('Tex_'.a:type.'Rule_'.target)
if a:type == "Compile" && Tex_GetVarValue('Tex_UseMakefile') && (glob('makefile') != '' || glob('Makefile') != '')
" if a makefile exists and the user wants to use it, then use that
" irrespective of whether *.latexmain exists or not.
call Tex_Debug("Tex_SetTeXCompilerTarget: using the makefile in the current directory", "comp")
let &l:makeprg = 'make "' . a:target . '"'
call Tex_Debug('Tex_SetTeXCompilerTarget: set [makeprg = "' . &l:makeprg . '"]', 'comp')
elseif targetRule != ''
if a:type == 'Compile'
let &l:makeprg = escape(targetRule, Tex_GetVarValue('Tex_EscapeChars'))
elseif a:type == 'View'
let s:viewer = targetRule
endif
let s:target = target
elseif Tex_GetVarValue('Tex_'.a:type.'RuleComplete_'.target) != ''
let s:target = target
let s:viewer = ''
elseif a:type == 'View' && (has('osx') || has('macunix'))
\ && Tex_GetVarValue('Tex_TreatMacViewerAsUNIX') != 1
" On the mac, we can have empty view rules, so do not complain when
" both Tex_ViewRule_target and Tex_ViewRuleComplete_target are
" empty. On other platforms, we will complain... see below.
let s:target = target
let s:viewer = ''
else
let l:origdir = fnameescape(getcwd())
exe 'cd '.fnameescape(expand('%:p:h'))
if !Tex_GetVarValue('Tex_UseMakefile') || (glob('makefile*') == '' && glob('Makefile*') == '')
if has('gui_running')
call confirm(
\'No '.a:type.' rule defined for target '.target."\n".
\'Please specify a rule in $VIMRUNTIME/ftplugin/tex/texrc'."\n".
\' :help Tex_'.a:type.'Rule_format'."\n".
\'for more information',
\"&ok", 1, 'Warning')
else
call input(
\'No '.a:type.' rule defined for target '.target."\n".
\'Please specify a rule in $VIMRUNTIME/ftplugin/tex/texrc'."\n".
\' :help Tex_'.a:type.'Rule_format'."\n".
\'for more information'
\)
endif
else
echomsg 'Assuming target is for makefile'
let s:target = target
endif
exe 'cd '.l:origdir
endif
endfunction
function! SetTeXTarget(...)
if a:0 < 1
let target = Tex_GetVarValue('Tex_DefaultTargetFormat')
let target = input('Enter the target format for compiler and viewer: ', target)
else
let target = a:1
endif
if target == ''
let target = 'dvi'
endif
call Tex_SetTeXCompilerTarget('Compile', target)
call Tex_SetTeXCompilerTarget('View', target)
endfunction
com! -nargs=1 TCTarget :call Tex_SetTeXCompilerTarget('Compile', <f-args>)
com! -nargs=1 TVTarget :call Tex_SetTeXCompilerTarget('View', <f-args>)
com! -nargs=? TTarget :call SetTeXTarget(<f-args>)
" }}}
" Tex_CompileLatex: compiles the present file. {{{
" Description:
function! Tex_CompileLatex()
if &ft != 'tex'
echo "calling Tex_RunLaTeX from a non-tex file"
return
end
" close any preview windows left open.
pclose!
let l:origdir = fnameescape(getcwd())
" Find the main file corresponding to this file. Always cd to the
" directory containing the file to avoid problems with the directory
" containing spaces.
" Latex on linux seems to be unable to handle file names with spaces at
" all! Therefore for the moment, do not attempt to handle spaces in the
" file name.
if exists('b:fragmentFile')
let mainfname = expand('%:p:t')
call Tex_CD(expand('%:p:h'))
else
let mainfname = Tex_GetMainFileName(':p:t')
call Tex_CD(Tex_GetMainFileName(':p:h'))
end
call Tex_Debug('Tex_CompileLatex: getting mainfname = ['.mainfname.'] from Tex_GetMainFileName', 'comp')
" if a makefile exists and the user wants to use it, then use that
" irrespective of whether *.latexmain exists or not. mainfname is still
" extracted from *.latexmain (if possible) log file name depends on the
" main file which will be compiled.
if Tex_GetVarValue('Tex_UseMakefile') && (glob('makefile') != '' || glob('Makefile') != '')
" makeprg is already set by Tex_SetTeXCompilerTarget
call Tex_Debug('Tex_CompileLatex: execing [make!]', 'comp')
exec 'make!'
else
" If &makeprg has something like "$*.ps", it means that it wants the
" file-name without the extension... Therefore remove it.
if &makeprg =~ '\$\*\.\w\+'
let mainfname = fnamemodify(mainfname, ':r')
endif
call Tex_Debug('Tex_CompileLatex: execing [make! "'.mainfname.'"]', 'comp')
exec 'make! "'.mainfname.'"'
endif
redraw!
exe 'cd '.l:origdir
endfunction " }}}
" Tex_RunLaTeX: compilation function {{{
" this function runs the latex command on the currently open file. often times
" the file being currently edited is only a fragment being \input'ed into some
" master tex file. in this case, make a file called mainfile.latexmain in the
" directory containig the file. in other words, if the current file is
" ~/thesis/chapter.tex
" so that doing "latex chapter.tex" doesnt make sense, then make a file called
" main.tex.latexmain
" in the ~/thesis directory. this will then run "latex main.tex" when
" Tex_RunLaTeX() is called.
function! Tex_RunLaTeX()
call Tex_Debug('+Tex_RunLaTeX, b:fragmentFile = '.exists('b:fragmentFile'), 'comp')
let dir = expand("%:p:h").'/'
let l:origdir = fnameescape(getcwd())
call Tex_CD(expand("%:p:h"))
let initTarget = s:target
" first get the dependency chain of this format.
call Tex_Debug("Tex_RunLaTeX: compiling to target [".s:target."]", "comp")
if Tex_GetVarValue('Tex_FormatDependency_'.s:target) != ''
let dependency = Tex_GetVarValue('Tex_FormatDependency_'.s:target)
if dependency !~ ','.s:target.'$'
let dependency = dependency.','.s:target
endif
else
let dependency = s:target
endif
call Tex_Debug('Tex_RunLaTeX: getting dependency chain = ['.dependency.']', 'comp')
" now compile to the final target format via each dependency.
let i = 1
while Tex_Strntok(dependency, ',', i) != ''
let s:target = Tex_Strntok(dependency, ',', i)
call Tex_SetTeXCompilerTarget('Compile', s:target)
call Tex_Debug('Tex_RunLaTeX: setting target to '.s:target, 'comp')
if Tex_GetVarValue('Tex_MultipleCompileFormats') =~ '\<'.s:target.'\>'
call Tex_Debug("Tex_RunLaTeX: compiling file multiple times via Tex_CompileMultipleTimes", "comp")
call Tex_CompileMultipleTimes()
else
call Tex_Debug("Tex_RunLaTeX: compiling file once via Tex_CompileLatex", "comp")
call Tex_CompileLatex()
endif
let errlist = Tex_GetErrorList()
call Tex_Debug("Tex_RunLaTeX: errlist = [".errlist."]", "comp")
" If there are any errors, then break from the rest of the steps
if errlist =~ '\v(error|warning)'
call Tex_Debug('Tex_RunLaTeX: There were errors in compiling, breaking chain...', 'comp')
break
endif
let i = i + 1
endwhile
let s:target = initTarget
let s:origwinnum = winnr()
call Tex_SetupErrorWindow()
exe 'cd '.l:origdir
call Tex_Debug("-Tex_RunLaTeX", "comp")
endfunction
" }}}
" Tex_ViewLaTeX: opens viewer {{{
" Description: opens the DVI viewer for the file being currently edited.
" Again, if the current file is a \input in a master file, see text above
" Tex_RunLaTeX() to see how to set this information.
function! Tex_ViewLaTeX()
if &ft != 'tex'
echo "calling Tex_ViewLaTeX from a non-tex file"
return
end
let l:origdir = fnameescape(getcwd())
" If b:fragmentFile is set, it means this file was compiled as a fragment
" using Tex_PartCompile, which means that we want to ignore any
" *.latexmain or makefile's.
if !exists('b:fragmentFile')
" cd to the location of the file to avoid having to deal with spaces
" in the directory name.
let mainfname = Tex_GetMainFileName(':p:t:r')
call Tex_CD(Tex_GetMainFileName(':p:h'))
else
let mainfname = expand("%:p:t:r")
call Tex_CD(expand("%:p:h"))
endif
if Tex_GetVarValue('Tex_ViewRuleComplete_'.s:target) != ''
let execString = Tex_GetVarValue('Tex_ViewRuleComplete_'.s:target)
let execString = substitute(execString, '{v:servername}', v:servername, 'g')
elseif has('win32')
" unfortunately, yap does not allow the specification of an external
" editor from the command line. that would have really helped ensure
" that this particular vim and yap are connected.
let execString = 'start '.s:viewer.' "$*.'.s:target.'"'
elseif ((has('osx') || has('macunix'))
\ && Tex_GetVarValue('Tex_TreatMacViewerAsUNIX') != 1)
if strlen(s:viewer) > 0
let appOpt = '-a ' . s:viewer
else
let appOpt = ''
endif
let execString = 'open '.appOpt.' $*.'.s:target
else
" taken from Dimitri Antoniou's tip on vim.sf.net (tip #225).
" slight change to actually use the current servername instead of
" hardcoding it as xdvi.
" Using an option for specifying the editor in the command line
" because that seems to not work on older bash'es.
if s:target == 'dvi'
if Tex_GetVarValue('Tex_UseEditorSettingInDVIViewer') == 1 &&
\ v:servername != '' &&
\ s:viewer =~ '^ *xdvik\?\( \|$\)'
let execString = s:viewer.' -editor "gvim --servername '.v:servername.
\ ' --remote-silent +\%l \%f" $*.dvi'
elseif Tex_GetVarValue('Tex_UseEditorSettingInDVIViewer') == 1 &&
\ s:viewer =~ '^ *kdvi\( \|$\)'
let execString = s:viewer.' --unique $*.dvi'
else
let execString = s:viewer.' $*.dvi'
endif
else
let execString = s:viewer.' $*.'.s:target
endif
if( Tex_GetVarValue('Tex_ExecuteUNIXViewerInForeground') != 1 )
" Redirect output to /dev/null
if( stridx( &shellredir, "%s" ) != -1 )
let execString .= " " . substitute( &shellredir, "%s", "/dev/null", '' )
else
let execString .= " " . &shellredir . "/dev/null"
endif
" And execute in background
let execString = execString.' &'
endif
end
let execString = substitute(execString, '\V$*', mainfname, 'g')
call Tex_Debug("Tex_ViewLaTeX: execString = ".execString, "comp")
exec 'silent! !'.execString
if !has('gui_running')
redraw!
endif
exe 'cd '.l:origdir
endfunction
" }}}
" Tex_Stringformat: Build strings from formatstrings. {{{
" Descriptions: Build strings from format strings containing %s placeholders
function! Tex_Stringformat(fmt, ...)
let l:items = split(a:fmt, "%s", 1)
let l:index = 0
let l:length = len(a:000)
while l:index < l:length
call insert(l:items, a:000[l:index], 2 * l:index + 1)
let l:index += 1
endwhile
return join(l:items, "")
endfunction
" }}}
" Tex_ForwardSearchLaTeX: searches for current location in dvi file. {{{
" Description: if the DVI viewer is compatible, then take the viewer to that
" position in the dvi file. see docs for Tex_RunLaTeX() to set a
" master file if this is an \input'ed file.
" Tip: With YAP on Windows, it is possible to do forward and inverse searches
" on DVI files. to do forward search, you'll have to compile the file
" with the --src-specials option. then set the following as the command
" line in the 'view/options/inverse search' dialog box:
" gvim --servername LATEX --remote-silent +%l "%f"
" For inverse search, if you are reading this, then just pressing \ls
" will work.
function! Tex_ForwardSearchLaTeX()
if &ft != 'tex'
echo "calling Tex_ForwardSeachLaTeX from a non-tex file"
return
end
if Tex_GetVarValue('Tex_ViewRule_'.s:target) == ''
return
endif
let viewer = Tex_GetVarValue('Tex_ViewRule_'.s:target)
let l:origdir = fnameescape(getcwd())
let mainfnameRoot = shellescape(fnamemodify(Tex_GetMainFileName(), ':t:r'), 1)
let mainfnameFull = Tex_GetMainFileName(':p:r')
let target_file = shellescape(mainfnameFull . "." . s:target, 1)
let sourcefile = shellescape(expand('%'), 1)
let sourcefileFull = shellescape(expand('%:p'), 1)
let linenr = line('.')
" cd to the location of the file to avoid problems with directory name
" containing spaces.
call Tex_CD(Tex_GetMainFileName(':p:h'))
" inverse search tips taken from Dimitri Antoniou's tip and Benji Fisher's
" tips on vim.sf.net (vim.sf.net tip #225)
let execString = 'silent! !'
if (has('win32'))
if (viewer =~? '^ *yap\( \|$\)')
let execString .= Tex_Stringformat('start %s -s %s%s %s', viewer, linenr, sourcefile, mainfnameRoot)
" SumatraPDF forward search support added by Dieter Castel:
elseif (viewer =~? "^sumatrapdf")
" Forward search in sumatra has these arguments (-reuse-instance is optional):
" SumatraPDF -reuse-instance "pdfPath" -forward-search "texPath" lineNumber
let execString .= Tex_Stringformat('start %s %s -forward-search %s %s', viewer, target_file, sourcefileFull, linenr)
endif
elseif ((has('osx') || has('macunix'))
\ && (viewer =~ '\(Skim\|PDFView\|TeXniscope\)'))
" We're on a Mac using a traditional Mac viewer
if viewer =~ 'Skim'
if executable('displayline')
let execString .= 'displayline '
else
let execString .= '/Applications/Skim.app/Contents/SharedSupport/displayline '
endif
let execString .= join([linenr, target_file, sourcefileFull])
elseif viewer =~ 'PDFView'
let execString .= '/Applications/PDFView.app/Contents/MacOS/gotoline.sh '
let execString .= join([linenr, target_file, sourcefileFull])
elseif viewer =~ 'TeXniscope'
let execString .= '/Applications/TeXniscope.app/Contents/Resources/forward-search.sh '
let execString .= join([linenr, sourcefileFull, target_file])
endif
else
" We're either UNIX or Mac and using a UNIX-type viewer
" Check for the special DVI viewers first
if viewer =~ '^ *\(xdvi\|xdvik\|kdvi\|okular\|zathura\)\( \|$\)'
let execString .= viewer." "
if Tex_GetVarValue('Tex_UseEditorSettingInDVIViewer') == 1 &&
\ exists('v:servername') &&
\ viewer =~ '^ *xdvik\?\( \|$\)'
let execString .= Tex_Stringformat('-name xdvi -sourceposition "%s %s" -editor "gvim --servername %s --remote-silent +\%l \%f" %s', linenr, expand('%'), v:servername, target_file)
elseif viewer =~ '^ *kdvi'
let execString .= Tex_Stringformat('--unique file:%s\#src:%s%s', target_file, linenr, sourcefile)
elseif viewer =~ '^ *xdvik\?\( \|$\)'
let execString .= Tex_Stringformat('-name xdvi -sourceposition "%s %s" %s', linenr, expand('%'), target_file)
elseif viewer =~ '^ *okular'
let execString .= Tex_Stringformat('--unique %s\#src:%s%s', target_file, linenr, sourcefileFull)
elseif viewer =~ '^ *zathura'
let execString .= Tex_Stringformat('--synctex-forward %s:1:%s %s', linenr, sourcefileFull, target_file)
endif
elseif (viewer == "synctex_wrapper" )
" Unix + synctex_wrapper
" You can add a custom script named 'synctex_wrapper' in your $PATH
" syntax is: synctex_wrapper TARGET_FILE LINE_NUMBER COLUMN_NUMBER SOURCE_FILE
let execString .= Tex_Stringformat('synctex_wrapper %s %s %s %s', target_file, linenr, col('.'), sourcefile)
else
" We must be using a generic UNIX viewer
" syntax is: viewer TARGET_FILE LINE_NUMBER SOURCE_FILE
let execString .= join([viewer, target_file, linenr, sourcefile])
endif
" See if we should add &. On Mac (at least in MacVim), it seems
" like this should NOT be added...
if( Tex_GetVarValue('Tex_ExecuteUNIXViewerInForeground') != 1 )
let execString = execString.' &'
endif
endif
call Tex_Debug("Tex_ForwardSearchLaTeX: execString = ".execString, "comp")
execute execString
if !has('gui_running')
redraw!
endif
exe 'cd '.l:origdir
endfunction
" }}}
" ==============================================================================
" Functions for compiling parts of a file.
" ==============================================================================
" Tex_PartCompile: compiles selected fragment {{{
" Description: creates a temporary file from the selected fragment of text
" prepending the preamble and \end{document} and then asks Tex_RunLaTeX() to
" compile it.
function! Tex_PartCompile() range
call Tex_Debug('+Tex_PartCompile', 'comp')
" Get a temporary file in the same directory as the file from which
" fragment is being extracted. This is to enable the use of relative path
" names in the fragment.
let tmpfile = Tex_GetTempName(expand('%:p:h'))
" Remember all the temp files and for each temp file created, remember
" where the temp file came from.
let s:Tex_NumTempFiles = (exists('s:Tex_NumTempFiles') ? s:Tex_NumTempFiles + 1 : 1)
let s:Tex_TempFiles = (exists('s:Tex_TempFiles') ? s:Tex_TempFiles : '')
\ . tmpfile."\n"
let s:Tex_TempFile_{s:Tex_NumTempFiles} = tmpfile
" TODO: For a function Tex_RestoreFragment which restores a temp file to
" its original location.
let s:Tex_TempFileOrig_{s:Tex_NumTempFiles} = expand('%:p')
let s:Tex_TempFileRange_{s:Tex_NumTempFiles} = a:firstline.','.a:lastline
" Set up an autocmd to clean up the temp files when Vim exits.
if Tex_GetVarValue('Tex_RemoveTempFiles')
augroup RemoveTmpFiles
au!
au VimLeave * :call Tex_RemoveTempFiles()
augroup END
endif
" If mainfile exists open it in tiny window and extract preamble there,
" otherwise do it from current file
let mainfile = Tex_GetMainFileName(":p")
exe 'bot 1 split '.escape(mainfile, ' ')
exe '1,/\s*\\begin{document}/w '.tmpfile
wincmd q
exe a:firstline.','.a:lastline."w! >> ".tmpfile
" edit the temporary file
if exists('drop')
exec 'drop '.tmpfile
else
exec 'tabe '.tmpfile
endif
" append the \end{document} line.
$ put ='\end{document}'
w
" set this as a fragment file.
let b:fragmentFile = 1
silent! call Tex_RunLaTeX()
endfunction " }}}
" Tex_RemoveTempFiles: cleans up temporary files created during part compilation {{{
" Description: During part compilation, temporary files containing the
" visually selected text are created. These files need to be
" removed when Vim exits to avoid "file leakage".
function! Tex_RemoveTempFiles()
if !exists('s:Tex_NumTempFiles') || !Tex_GetVarValue('Tex_RemoveTempFiles')
return
endif
let i = 1
while i <= s:Tex_NumTempFiles
let tmpfile = s:Tex_TempFile_{i}
" Remove the tmp file and all other associated files such as the
" .log files etc.
call Tex_DeleteFile(fnamemodify(tmpfile, ':p:r').'.*')
let i = i + 1
endwhile
endfunction " }}}
" ==============================================================================
" Compiling a file multiple times to resolve references/citations etc.
" ==============================================================================
" Tex_CompileMultipleTimes: The main function {{{
" Description: compiles a file multiple times to get cross-references right.
function! Tex_CompileMultipleTimes()
" Just extract the root without any extension because we want to construct
" the log file names etc from it.
let l:origdir = fnameescape(getcwd())
let mainFileName_root = Tex_GetMainFileName(':p:t:r')
call Tex_CD(Tex_GetMainFileName(':p:h'))
" First ignore undefined references and the
" "rerun to get cross-references right" message from
" the compiler output.
let origlevel = Tex_GetVarValue('Tex_IgnoreLevel')
let origpats = Tex_GetVarValue('Tex_IgnoredWarnings')
let g:Tex_IgnoredWarnings = g:Tex_IgnoredWarnings."\n"
\ . 'Reference %.%# undefined'."\n"
\ . 'Rerun to get cross-references right'
TCLevel 1000
let idxFileName = mainFileName_root.'.idx'
let auxFileName = mainFileName_root.'.aux'
let runCount = 0
let needToRerun = 1
while needToRerun == 1 && runCount < 5
" assume we need to run only once.
let needToRerun = 0
let idxlinesBefore = Tex_CatFile(idxFileName)
let auxlinesBefore = Tex_GetAuxFile(auxFileName)
" first run latex.
echomsg "latex run number : ".(runCount+1)
call Tex_Debug("Tex_CompileMultipleTimes: latex run number : ".(runCount+1), "comp")
silent! call Tex_CompileLatex()
" If there are errors in any latex compilation step, immediately
" return. For now, do not bother with warnings because those might go
" away after compiling again or after bibtex is run etc.
let errlist = Tex_GetErrorList()
call Tex_Debug("Tex_CompileMultipleTimes: errors = [".errlist."]", "comp")
if errlist =~ 'error'
let g:Tex_IgnoredWarnings = origpats
exec 'TCLevel '.origlevel
return
endif
let idxlinesAfter = Tex_CatFile(idxFileName)
" If .idx file changed, then run makeindex to generate the new .ind
" file and remember to rerun latex.
if runCount == 0 && glob(idxFileName) != '' && idxlinesBefore != idxlinesAfter
echomsg "Running makeindex..."
let temp_mp = &mp | let &mp = Tex_GetVarValue('Tex_MakeIndexFlavor')
exec 'silent! make "'.mainFileName_root.'"'
let &mp = temp_mp
let needToRerun = 1
endif
" The first time we see if we need to generate the bibliography and if the .bbl file
" changes, we will rerun latex.
" We use '\\bibdata' as a check for BibTeX and '\\abx' as a check for biber.
if runCount == 0 && Tex_IsPresentInFile('\\bibdata|\\abx', mainFileName_root.'.aux')
let bibFileName = mainFileName_root.'.bbl'
let biblinesBefore = Tex_CatFile(bibFileName)
echomsg "Running '".Tex_GetVarValue('Tex_BibtexFlavor')."' ..."
let temp_mp = &mp | let &mp = Tex_GetVarValue('Tex_BibtexFlavor')
exec 'silent! make "'.mainFileName_root.'"'
let &mp = temp_mp
let biblinesAfter = Tex_CatFile(bibFileName)
" If the .bbl file changed after running bibtex, we need to
" latex again.
if biblinesAfter != biblinesBefore
echomsg 'Need to rerun because bibliography file changed...'
call Tex_Debug('Tex_CompileMultipleTimes: Need to rerun because bibliography file changed...', 'comp')
let needToRerun = 1
endif
endif
" check if latex asks us to rerun
let auxlinesAfter = Tex_GetAuxFile(auxFileName)
if auxlinesAfter != auxlinesBefore
echomsg "Need to rerun because the AUX file changed..."
call Tex_Debug("Tex_CompileMultipleTimes: Need to rerun to get cross-references right...", 'comp')
let needToRerun = 1
endif
let runCount = runCount + 1
endwhile
redraw!
call Tex_Debug("Tex_CompileMultipleTimes: Ran latex ".runCount." time(s)", "comp")
echomsg "Ran latex ".runCount." time(s)"
let g:Tex_IgnoredWarnings = origpats
exec 'TCLevel '.origlevel
" After all compiler calls are done, reparse the .log file for
" errors/warnings to handle the situation where the clist might have been
" emptied because of bibtex/makeindex being run as the last step.
if Tex_GetVarValue('Tex_GotoError') == 1
exec 'silent! cfile '.mainFileName_root.'.log'
else
exec 'silent! cgetfile '.mainFileName_root.'.log'
end
exe 'cd '.l:origdir
endfunction " }}}
" Tex_GetAuxFile: get the contents of the AUX file {{{
" Description: get the contents of the AUX file recursively including any
" @\input'ted AUX files.
function! Tex_GetAuxFile(auxFile)
if !filereadable(a:auxFile)
return ''
endif
let auxContents = Tex_CatFile(a:auxFile)
let pattern = '@\input{\(.\{-}\)}'
let auxContents = substitute(auxContents, pattern, '\=Tex_GetAuxFile(submatch(1))', 'g')
return auxContents
endfunction " }}}
" ==============================================================================
" Helper functions for
" . viewing the log file in preview mode.
" . syncing the display between the quickfix window and preview window
" . going to the correct line _and column_ number from from the quick fix
" window.
" ==============================================================================
" Tex_SetupErrorWindow: sets up the cwindow and preview of the .log file {{{
" Description:
function! Tex_SetupErrorWindow()
let mainfname = Tex_GetMainFileName()
let winnum = winnr()
" close the quickfix window before trying to open it again, otherwise
" whether or not we end up in the quickfix window after the :cwindow
" command is not fixed.
cclose
cwindow
" create log file name from mainfname
let mfnlog = fnamemodify(mainfname, ":t:r").'.log'
call Tex_Debug('Tex_SetupErrorWindow: mfnlog = '.mfnlog, 'comp')
" if we moved to a different window, then it means we had some errors.
if winnum != winnr()
if Tex_GetVarValue('Tex_ShowErrorContext')
call Tex_UpdatePreviewWindow(mfnlog)
exe 'nnoremap <buffer> <silent> j j:call Tex_UpdatePreviewWindow("'.mfnlog.'")<CR>'
exe 'nnoremap <buffer> <silent> k k:call Tex_UpdatePreviewWindow("'.mfnlog.'")<CR>'
exe 'nnoremap <buffer> <silent> <up> <up>:call Tex_UpdatePreviewWindow("'.mfnlog.'")<CR>'
exe 'nnoremap <buffer> <silent> <down> <down>:call Tex_UpdatePreviewWindow("'.mfnlog.'")<CR>'
endif
exe 'nnoremap <buffer> <silent> <enter> :call Tex_GotoErrorLocation("'.mfnlog.'")<CR>'
setlocal nowrap
" resize the window to just fit in with the number of lines.
exec ( line('$') < 4 ? line('$') : 4 ).' wincmd _'
if Tex_GetVarValue('Tex_GotoError') == 1
call Tex_GotoErrorLocation(mfnlog)
else
exec s:origwinnum.' wincmd w'
endif
endif
endfunction " }}}
" Tex_PositionPreviewWindow: positions the preview window correctly. {{{
" Description:
" The purpose of this function is to count the number of times an error
" occurs on the same line. or in other words, if the current line is
" something like |10 error|, then we want to count the number of
" lines in the quickfix window before this line which also contain lines
" like |10 error|.
"
function! Tex_PositionPreviewWindow(filename)
if getline('.') !~ '|\d\+ \(error\|warning\)|'
if !search('|\d\+ \(error\|warning\)|')
call Tex_Debug("not finding error pattern anywhere in quickfix window :".bufname(bufnr('%')),
\ 'comp')
pclose!
return
endif
endif
" extract the error pattern (something like 'file.tex|10 error|') on the
" current line.
let errpat = matchstr(getline('.'), '^\f*|\d\+ \(error\|warning\)|\ze')
let errfile = matchstr(getline('.'), '^\f*\ze|\d\+ \(error\|warning\)|')
" extract the line number from the error pattern.
let linenum = matchstr(getline('.'), '|\zs\d\+\ze \(error\|warning\)|')
" if we are on an error, then count the number of lines before this in the
" quickfix window with an error on the same line.
if errpat =~ 'error|$'
" our location in the quick fix window.
let errline = line('.')
" goto the beginning of the quickfix window and begin counting the lines
" which show an error on the same line.
0
let numrep = 0
while 1
" if we are on the same kind of error line, then means we have another
" line containing the same error pattern.
if getline('.') =~ errpat
let numrep = numrep + 1
normal! 0
endif
" if we have reached the original location in the quick fix window,
" then break.
if line('.') == errline
break
else
" otherwise, search for the next line which contains the same
" error pattern again. goto the end of the current line so we
" dont count this line again.
normal! $
call search(errpat, 'W')
endif
endwhile
else
let numrep = 1
endif
if getline('.') =~ '|\d\+ warning|'
let searchpat = escape(matchstr(getline('.'), '|\d\+ warning|\s*\zs.*'), '\ ')
else
let searchpat = 'l\.'.linenum
endif
" We first need to be in the scope of the correct file in the .log file.
" This is important for example, when a.tex and b.tex both have errors on
" line 9 of the file and we want to go to the error of b.tex. Merely
" searching forward from the beginning of the log file for l.9 will always
" land us on the error in a.tex.
if errfile != ''
exec 'silent! bot pedit +/(\\(\\f\\|\\[\\|\]\\|\\s\\)*'.errfile.'/ '.a:filename
else
exec 'bot pedit +0 '.a:filename
endif
" Goto the preview window
" TODO: This is not robust enough. Check that a wincmd j actually takes
" us to the preview window.
wincmd j
" now search forward from this position in the preview window for the
" numrep^th error of the current line in the quickfix window.
while numrep > 0
call search(searchpat, 'W')
let numrep = numrep - 1
endwhile
normal! z.
endfunction " }}}
" Tex_UpdatePreviewWindow: updates the view of the log file {{{
" Description:
" This function should be called when focus is in a quickfix window.
" It opens the log file in a preview window and makes it display that
" part of the log file which corresponds to the error which the user is
" currently on in the quickfix window. Control returns to the quickfix
" window when the function returns.
"
function! Tex_UpdatePreviewWindow(filename)
call Tex_PositionPreviewWindow(a:filename)
if &previewwindow
6 wincmd _
wincmd p
endif
endfunction " }}}
" Tex_GotoErrorLocation: goes to the correct location of error in the tex file {{{
" Description:
" This function should be called when focus is in a quickfix window. This
" function will first open the preview window of the log file (if it is not
" already open), position the display of the preview to coincide with the
" current error under the cursor and then take the user to the file in
" which this error has occured.
"
" The position is both the correct line number and the column number.
function! Tex_GotoErrorLocation(filename)
" first use vim's functionality to take us to the location of the error
" accurate to the line (not column). This lets us go to the correct file
" without applying any logic.
exec "normal! \<enter>"
" If the log file is not found, then going to the correct line number is
" all we can do.
if glob(a:filename) == ''
return
endif
let winnum = winnr()
" then come back to the quickfix window
wincmd w
" find out where in the file we had the error.
let linenum = matchstr(getline('.'), '|\zs\d\+\ze \(warning\|error\)|')
call Tex_PositionPreviewWindow(a:filename)
if getline('.') =~ 'l.\d\+'
let brokenline = matchstr(getline('.'), 'l.'.linenum.' \zs.*\ze')
" If the line is of the form
" l.10 ...and then there was some error
" it means (most probably) that only part of the erroneous line is
" shown. In this case, finding the length of the broken line is not
" correct. Instead goto the beginning of the line and search forward
" for the part which is displayed and then go to its end.
if brokenline =~ '^\M...'
let partline = matchstr(brokenline, '^\M...\m\zs.*')
let normcmd = "0/\\V".escape(partline, "\\")."/e+1\<CR>"
else
let column = strlen(brokenline) + 1
let normcmd = column.'|'
endif
elseif getline('.') =~ 'LaTeX Warning: \(Citation\|Reference\) `.*'
let ref = matchstr(getline('.'), "LaTeX Warning: \\(Citation\\|Reference\\) `\\zs[^']\\+\\ze'")
let normcmd = '0/'.ref."\<CR>"
else
let normcmd = '0'
endif
" go back to the window where we came from.
exec winnum.' wincmd w'
exec 'silent! '.linenum.' | normal! '.normcmd
if !Tex_GetVarValue('Tex_ShowErrorContext')
pclose!
endif
endfunction " }}}
" Tex_SetCompilerMaps: sets maps for compiling/viewing/searching {{{
" Description:
function! <SID>Tex_SetCompilerMaps()
if exists('b:Tex_doneCompilerMaps')
return
endif
let s:ml = '<Leader>'
nnoremap <buffer> <Plug>Tex_Compile :call Tex_RunLaTeX()<cr>
xnoremap <buffer> <Plug>Tex_Compile :call Tex_PartCompile()<cr>
nnoremap <buffer> <Plug>Tex_View :call Tex_ViewLaTeX()<cr>
nnoremap <buffer> <Plug>Tex_ForwardSearch :call Tex_ForwardSearchLaTeX()<cr>
call Tex_MakeMap(s:ml."ll", "<Plug>Tex_Compile", 'n', '<buffer>')
call Tex_MakeMap(s:ml."ll", "<Plug>Tex_Compile", 'v', '<buffer>')
call Tex_MakeMap(s:ml."lv", "<Plug>Tex_View", 'n', '<buffer>')
call Tex_MakeMap(s:ml."ls", "<Plug>Tex_ForwardSearch", 'n', '<buffer>')
endfunction
" }}}
augroup LatexSuite
au LatexSuite User LatexSuiteFileType
\ call Tex_Debug('compiler.vim: Catching LatexSuiteFileType event', 'comp') |
\ call <SID>Tex_SetCompilerMaps()
augroup END
command! -nargs=0 -range=% TPartCompile :<line1>, <line2> silent! call Tex_PartCompile()
" Setting b:fragmentFile = 1 makes Tex_CompileLatex consider the present file
" the _main_ file irrespective of the presence of a .latexmain file.
command! -nargs=0 TCompileThis let b:fragmentFile = 1
command! -nargs=0 TCompileMainFile let b:fragmentFile = 0
let &cpo = s:save_cpo
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4

View File

@@ -0,0 +1,251 @@
"=============================================================================
" File: custommacros.vim
" Author: Mikolaj Machowski
" Version: 1.0
" Created: Tue Apr 23 05:00 PM 2002 PST
"
" Description: functions for processing custom macros in the
" latex-suite/macros directory
"=============================================================================
let s:path = expand('<sfile>:p:h')
" Set path to macros dir dependent on OS {{{
if has("unix") || has("osx") || has("macunix")
let s:macrodirpath = $HOME."/.vim/ftplugin/latex-suite/macros/"
elseif has("win32")
if exists("$HOME")
let s:macrodirpath = $HOME."/vimfiles/ftplugin/latex-suite/macros/"
else
let s:macrodirpath = $VIM."/vimfiles/ftplugin/latex-suite/macros/"
endif
endif
" }}}
" SetCustomMacrosMenu: sets up the menu for Macros {{{
function! <SID>SetCustomMacrosMenu()
let flist = Tex_FindInRtp('', 'macros')
exe 'amenu '.g:Tex_MacrosMenuLocation.'&New :call <SID>NewMacro("FFFromMMMenu")<CR>'
exe 'amenu '.g:Tex_MacrosMenuLocation.'&Redraw :call RedrawMacro()<CR>'
let i = 1
while 1
let fname = Tex_Strntok(flist, ',', i)
if fname == ''
break
endif
exe "amenu ".g:Tex_MacrosMenuLocation."&Delete.&".i.":<tab>".fname." :call <SID>DeleteMacro('".fname."')<CR>"
exe "amenu ".g:Tex_MacrosMenuLocation."&Edit.&".i.":<tab>".fname." :call <SID>EditMacro('".fname."')<CR>"
exe "imenu ".g:Tex_MacrosMenuLocation."&".i.":<tab>".fname." <C-r>=<SID>ReadMacro('".fname."')<CR>"
exe "nmenu ".g:Tex_MacrosMenuLocation."&".i.":<tab>".fname." i<C-r>=<SID>ReadMacro('".fname."')<CR>"
let i = i + 1
endwhile
endfunction
if g:Tex_Menus
call <SID>SetCustomMacrosMenu()
endif
" }}}
" NewMacro: opens new file in macros directory {{{
function! <SID>NewMacro(...)
" Allow for calling :TMacroNew without argument or from menu and prompt
" for name.
if a:0 > 0
let newmacroname = a:1
else
let newmacroname = input("Name of new macro: ")
if newmacroname == ''
return
endif
endif
if newmacroname == "FFFromMMMenu"
" Check if NewMacro was called from menu and prompt for insert macro
" name
let newmacroname = input("Name of new macro: ")
if newmacroname == ''
return
endif
elseif Tex_FindInRtp(newmacroname, 'macros') != ''
" If macro with this name already exists, prompt for another name.
exe "echomsg 'Macro ".newmacroname." already exists. Try another name.'"
let newmacroname = input("Name of new macro: ")
if newmacroname == ''
return
endif
endif
exec 'split '.fnameescape(s:macrodirpath.newmacroname)
setlocal filetype=tex
endfunction
" }}}
" RedrawMacro: refreshes macro menu {{{
function! RedrawMacro()
aunmenu TeX-Suite.Macros
call <SID>SetCustomMacrosMenu()
endfunction
" }}}
" ChooseMacro: choose a macro file {{{
" " Description:
function! s:ChooseMacro(ask)
let filelist = Tex_FindInRtp('', 'macros')
let filename = Tex_ChooseFromPrompt(
\ a:ask."\n" .
\ Tex_CreatePrompt(filelist, 2, ',') .
\ "\nEnter number or filename :",
\ filelist, ',')
return filename
endfunction
" }}}
" DeleteMacro: deletes macro file {{{
function! <SID>DeleteMacro(...)
if a:0 > 0
let filename = a:1
else
let filename = s:ChooseMacro('Choose a macro file for deletion :')
endif
if !filereadable(s:macrodirpath.filename)
" When file is not in local directory decline to remove it.
call confirm('This file is not in your local directory: '.filename."\n".
\ 'It will not be deleted.' , '&OK', 1)
else
let ch = confirm('Really delete '.filename.' ?', "&Yes\n&No", 2)
if ch == 1
call delete(s:macrodirpath.filename)
endif
call RedrawMacro()
endif
endfunction
" }}}
" EditMacro: edits macro file {{{
function! <SID>EditMacro(...)
if a:0 > 0
let filename = a:1
else
let filename = s:ChooseMacro('Choose a macro file to edit:')
endif
if filereadable(s:macrodirpath.filename)
" If file exists in local directory open it.
exec 'split '.fnameescape(s:macrodirpath.filename)
else
" But if file doesn't exist in local dir it probably is in user
" restricted area. Instead opening try to copy it to local dir.
" Pity VimL doesn't have mkdir() function :)
let ch = confirm("You are trying to edit file which is probably read-only.\n".
\ "It will be copied to your local LaTeX-Suite macros directory\n".
\ "and you will be operating on local copy with suffix -local.\n".
\ "It will succeed only if ftplugin/latex-suite/macros dir exists.\n".
\ "Do you agree?", "&Yes\n&No", 1)
if ch == 1
" But there is possibility we already created local modification.
" Check it and offer opening this file.
if filereadable(s:macrodirpath.filename.'-local')
let ch = confirm('Local version of '.filename." already exists.\n".
\ 'Do you want to open it or overwrite with original version?',
\ "&Open\nOver&write\n&Cancel", 1)
if ch == 1
exec 'split '.fnameescape(s:macrodirpath.filename.'-local')
elseif ch == 2
new
exe '0read '.Tex_FindInRtp(filename, 'macros', ':p')
" This is possible macro was edited before, wipe it out.
if bufexists(s:macrodirpath.filename.'-local')
exe 'bwipe '.s:macrodirpath.filename.'-local'
endif
exe 'write! '.s:macrodirpath.filename.'-local'
else
return
endif
else
" If file doesn't exist, open new file, read in system macro and
" save it in local macro dir with suffix -local
new
exe '0read '.Tex_FindInRtp(filename, 'macros', ':p')
exe 'write '.s:macrodirpath.filename.'-local'
endif
endif
endif
setlocal filetype=tex
endfunction
" }}}
" ReadMacro: reads in a macro from a macro file. {{{
" allowing for placement via placeholders.
function! <SID>ReadMacro(...)
if a:0 > 0
let filename = a:1
else
let filename = s:ChooseMacro('Choose a macro file for insertion:')
endif
let fname = Tex_FindInRtp(filename, 'macros', ':p')
let markerString = '<---- Latex Suite End Macro ---->'
let _a = @a
silent! call append(line('.'), markerString)
silent! exec "read ".fname
silent! exec "normal! V/^".markerString."$/-1\<CR>\"ax"
" This is kind of tricky: At this stage, we are one line after the one we
" started from with the marker text on it. We need to
" 1. remove the marker and the line.
" 2. get focus to the previous line.
" 3. not remove anything from the previous line.
silent! exec "normal! $v0k$\"_x"
call Tex_CleanSearchHistory()
let @a = substitute(@a, '['."\n\r\t ".']*$', '', '')
let textWithMovement = IMAP_PutTextWithMovement(@a)
call setreg("a", _a, "c")
return textWithMovement
endfunction
" }}}
" commands for macros {{{
com! -nargs=? TMacroNew :call <SID>NewMacro(<f-args>)
" This macros had to have 2 versions:
if v:version >= 602
com! -complete=custom,Tex_CompleteMacroName -nargs=? TMacro
\ :let s:retVal = <SID>ReadMacro(<f-args>) <bar> normal! i<C-r>=s:retVal<CR>
com! -complete=custom,Tex_CompleteMacroName -nargs=? TMacroEdit
\ :call <SID>EditMacro(<f-args>)
com! -complete=custom,Tex_CompleteMacroName -nargs=? TMacroDelete
\ :call <SID>DeleteMacro(<f-args>)
" Tex_CompleteMacroName: for completing names in TMacro... commands {{{
" Description: get list of macro names with Tex_FindInRtp(), remove full path
" and return list of names separated with newlines.
"
function! Tex_CompleteMacroName(A,P,L)
" Get name of macros from all runtimepath directories
let macronames = Tex_FindInRtp('', 'macros')
" Separate names with \n not ,
let macronames = substitute(macronames,',','\n','g')
return macronames
endfunction
" }}}
else
com! -nargs=? TMacro
\ :let s:retVal = <SID>ReadMacro(<f-args>) <bar> normal! i<C-r>=s:retVal<CR>
com! -nargs=? TMacroEdit :call <SID>EditMacro(<f-args>)
com! -nargs=? TMacroDelete :call <SID>DeleteMacro(<f-args>)
endif
" }}}
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4

View File

@@ -0,0 +1,124 @@
"=============================================================================
" File: diacritics.vim
" Author: Lubomir Host
" Created: Tue Apr 23 07:00 PM 2002 PST
"
" Description: shortcuts for all diacritics.
"=============================================================================
if !g:Tex_Diacritics
finish
endif
" \'{a} {{{
call IMAP ('=a', "\\\'{a}", 'tex')
call IMAP ('=b', "\\'{b}", 'tex')
call IMAP ('=c', "\\'{c}", 'tex')
call IMAP ('=d', "\\'{d}", 'tex')
call IMAP ('=e', "\\'{e}", 'tex')
call IMAP ('=f', "\\'{f}", 'tex')
call IMAP ('=g', "\\'{g}", 'tex')
call IMAP ('=h', "\\'{h}", 'tex')
call IMAP ('=i', "\\'{\i}", 'tex')
call IMAP ('=j', "\\'{j}", 'tex')
call IMAP ('=k', "\\'{k}", 'tex')
call IMAP ('=l', "\\'{l}", 'tex')
call IMAP ('=m', "\\'{m}", 'tex')
call IMAP ('=n', "\\'{n}", 'tex')
call IMAP ('=o', "\\'{o}", 'tex')
call IMAP ('=p', "\\'{p}", 'tex')
call IMAP ('=q', "\\'{q}", 'tex')
call IMAP ('=r', "\\'{r}", 'tex')
call IMAP ('=s', "\\'{s}", 'tex')
call IMAP ('=t', "\\'{t}", 'tex')
call IMAP ('=u', "\\'{u}", 'tex')
call IMAP ('=v', "\\'{v}", 'tex')
call IMAP ('=w', "\\'{w}", 'tex')
call IMAP ('=x', "\\'{x}", 'tex')
call IMAP ('=y', "\\'{y}", 'tex')
call IMAP ('=z', "\\'{z}", 'tex')
call IMAP ('=A', "\\'{A}", 'tex')
call IMAP ('=B', "\\'{B}", 'tex')
call IMAP ('=C', "\\'{C}", 'tex')
call IMAP ('=D', "\\'{D}", 'tex')
call IMAP ('=E', "\\'{E}", 'tex')
call IMAP ('=F', "\\'{F}", 'tex')
call IMAP ('=G', "\\'{G}", 'tex')
call IMAP ('=H', "\\'{H}", 'tex')
call IMAP ('=I', "\\'{\I}", 'tex')
call IMAP ('=J', "\\'{J}", 'tex')
call IMAP ('=K', "\\'{K}", 'tex')
call IMAP ('=L', "\\'{L}", 'tex')
call IMAP ('=M', "\\'{M}", 'tex')
call IMAP ('=N', "\\'{N}", 'tex')
call IMAP ('=O', "\\'{O}", 'tex')
call IMAP ('=P', "\\'{P}", 'tex')
call IMAP ('=Q', "\\'{Q}", 'tex')
call IMAP ('=R', "\\'{R}", 'tex')
call IMAP ('=S', "\\'{S}", 'tex')
call IMAP ('=T', "\\'{T}", 'tex')
call IMAP ('=U', "\\'{U}", 'tex')
call IMAP ('=V', "\\'{V}", 'tex')
call IMAP ('=W', "\\'{W}", 'tex')
call IMAP ('=X', "\\'{X}", 'tex')
call IMAP ('=Y', "\\'{Y}", 'tex')
call IMAP ('=Z', "\\'{Z}", 'tex')
" }}}
" \v{a} {{{
call IMAP ('+a', "\\v{a}", 'tex')
call IMAP ('+b', "\\v{b}", 'tex')
call IMAP ('+c', "\\v{c}", 'tex')
call IMAP ('+d', "\\v{d}", 'tex')
call IMAP ('+e', "\\v{e}", 'tex')
call IMAP ('+f', "\\v{f}", 'tex')
call IMAP ('+g', "\\v{g}", 'tex')
call IMAP ('+h', "\\v{h}", 'tex')
call IMAP ('+i', "\\v{\i}", 'tex')
call IMAP ('+j', "\\v{j}", 'tex')
call IMAP ('+k', "\\v{k}", 'tex')
call IMAP ('+l', "\\q l", 'tex')
call IMAP ('+m', "\\v{m}", 'tex')
call IMAP ('+n', "\\v{n}", 'tex')
call IMAP ('+o', "\\v{o}", 'tex')
call IMAP ('+p', "\\v{p}", 'tex')
call IMAP ('+q', "\\v{q}", 'tex')
call IMAP ('+r', "\\v{r}", 'tex')
call IMAP ('+s', "\\v{s}", 'tex')
call IMAP ('+t', "\\q t", 'tex')
call IMAP ('+u', "\\v{u}", 'tex')
call IMAP ('+v', "\\v{v}", 'tex')
call IMAP ('+w', "\\v{w}", 'tex')
call IMAP ('+x', "\\v{x}", 'tex')
call IMAP ('+y', "\\v{y}", 'tex')
call IMAP ('+z', "\\v{z}", 'tex')
call IMAP ('+A', "\\v{A}", 'tex')
call IMAP ('+B', "\\v{B}", 'tex')
call IMAP ('+C', "\\v{C}", 'tex')
call IMAP ('+D', "\\v{D}", 'tex')
call IMAP ('+E', "\\v{E}", 'tex')
call IMAP ('+F', "\\v{F}", 'tex')
call IMAP ('+G', "\\v{G}", 'tex')
call IMAP ('+H', "\\v{H}", 'tex')
call IMAP ('+I', "\\v{\I}", 'tex')
call IMAP ('+J', "\\v{J}", 'tex')
call IMAP ('+K', "\\v{K}", 'tex')
call IMAP ('+L', "\\v{L}", 'tex')
call IMAP ('+M', "\\v{M}", 'tex')
call IMAP ('+N', "\\v{N}", 'tex')
call IMAP ('+O', "\\v{O}", 'tex')
call IMAP ('+P', "\\v{P}", 'tex')
call IMAP ('+Q', "\\v{Q}", 'tex')
call IMAP ('+R', "\\v{R}", 'tex')
call IMAP ('+S', "\\v{S}", 'tex')
call IMAP ('+T', "\\v{T}", 'tex')
call IMAP ('+U', "\\v{U}", 'tex')
call IMAP ('+V', "\\v{V}", 'tex')
call IMAP ('+W', "\\v{W}", 'tex')
call IMAP ('+X', "\\v{X}", 'tex')
call IMAP ('+Y', "\\v{Y}", 'tex')
call IMAP ('+Z', "\\v{Z}", 'tex')
" }}}
call IMAP ('+}', "\\\"{a}", 'tex')
call IMAP ('+:', "\\^{o}", 'tex')
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4

View File

@@ -0,0 +1,289 @@
addprefix
addunit
ampere
amperemetresecond
amperepermetre
amperepermetrenp
amperepersquaremetre
amperepersquaremetrenp
angstrom
arad
arcminute
arcsecond
are
atomicmass
atto
attod
barn
bbar
becquerel
becquerelbase
bel
candela
candelapersquaremetre
candelapersquaremetrenp
celsius
Celsius
celsiusbase
centi
centid
coulomb
coulombbase
coulombpercubicmetre
coulombpercubicmetrenp
coulombperkilogram
coulombperkilogramnp
coulombpermol
coulombpermolnp
coulombpersquaremetre
coulombpersquaremetrenp
cubed
cubic
cubicmetre
cubicmetreperkilogram
cubicmetrepersecond
curie
dday
deca
decad
deci
decid
degree
degreecelsius
deka
dekad
derbecquerel
dercelsius
dercoulomb
derfarad
dergray
derhenry
derhertz
derjoule
derkatal
derlumen
derlux
dernewton
derohm
derpascal
derradian
dersiemens
dersievert
dersteradian
dertesla
dervolt
derwatt
derweber
electronvolt
exa
exad
farad
faradbase
faradpermetre
faradpermetrenp
femto
femtod
fourth
gal
giga
gigad
gram
graybase
graypersecond
graypersecondnp
hectare
hecto
hectod
henry
henrybase
henrypermetre
henrypermetrenp
hertz
hertzbase
hour
joule
joulebase
joulepercubicmetre
joulepercubicmetrenp
jouleperkelvin
jouleperkelvinnp
jouleperkilogram
jouleperkilogramkelvin
jouleperkilogramkelvinnp
jouleperkilogramnp
joulepermole
joulepermolekelvin
joulepermolekelvinnp
joulepermolenp
joulepersquaremetre
joulepersquaremetrenp
joulepertesla
jouleperteslanp
katal
katalbase
katalpercubicmetre
katalpercubicmetrenp
kelvin
kilo
kilod
kilogram
kilogrammetrepersecond
kilogrammetrepersecondnp
kilogrammetrepersquaresecond
kilogrammetrepersquaresecondnp
kilogrampercubicmetre
kilogrampercubicmetrecoulomb
kilogrampercubicmetrecoulombnp
kilogrampercubicmetrenp
kilogramperkilomole
kilogramperkilomolenp
kilogrampermetre
kilogrampermetrenp
kilogrampersecond
kilogrampersecondcubicmetre
kilogrampersecondcubicmetrenp
kilogrampersecondnp
kilogrampersquaremetre
kilogrampersquaremetrenp
kilogrampersquaremetresecond
kilogrampersquaremetresecondnp
kilogramsquaremetre
kilogramsquaremetrenp
kilogramsquaremetrepersecond
kilogramsquaremetrepersecondnp
kilowatthour
liter
litre
lumen
lumenbase
lux
luxbase
mega
megad
meter
metre
metrepersecond
metrepersecondnp
metrepersquaresecond
metrepersquaresecondnp
micro
microd
milli
millid
minute
mole
molepercubicmetre
molepercubicmetrenp
nano
nanod
neper
newton
newtonbase
newtonmetre
newtonpercubicmetre
newtonpercubicmetrenp
newtonperkilogram
newtonperkilogramnp
newtonpermetre
newtonpermetrenp
newtonpersquaremetre
newtonpersquaremetrenp
NoAMS
no@qsk
ohm
ohmbase
ohmmetre
one
paminute
pascal
pascalbase
pascalsecond
pasecond
per
period@active
persquaremetresecond
persquaremetresecondnp
peta
petad
pico
picod
power
@qsk
quantityskip
rad
radian
radianbase
radianpersecond
radianpersecondnp
radianpersquaresecond
radianpersquaresecondnp
reciprocal
rem
roentgen
rp
rpcubed
rpcubic
rpcubicmetreperkilogram
rpcubicmetrepersecond
rperminute
rpersecond
rpfourth
rpsquare
rpsquared
rpsquaremetreperkilogram
second
siemens
siemensbase
sievert
sievertbase
square
squared
squaremetre
squaremetrepercubicmetre
squaremetrepercubicmetrenp
squaremetrepercubicsecond
squaremetrepercubicsecondnp
squaremetreperkilogram
squaremetrepernewtonsecond
squaremetrepernewtonsecondnp
squaremetrepersecond
squaremetrepersecondnp
squaremetrepersquaresecond
squaremetrepersquaresecondnp
steradian
steradianbase
tera
terad
tesla
teslabase
ton
tonne
unit
unitskip
usk
volt
voltbase
voltpermetre
voltpermetrenp
watt
wattbase
wattpercubicmetre
wattpercubicmetrenp
wattperkilogram
wattperkilogramnp
wattpermetrekelvin
wattpermetrekelvinnp
wattpersquaremetre
wattpersquaremetrenp
wattpersquaremetresteradian
wattpersquaremetresteradiannp
weber
weberbase
yocto
yoctod
yotta
yottad
zepto
zeptod
zetta
zettad

View File

@@ -0,0 +1,676 @@
abbrv
abovedisplayshortskip
abovedisplayskip
abstract
abstract
abstractname
acute
addcontentsline
address
addtime
addtocontents
addtocounter
addtolength
addvspace
align
alph
Alph
alpha
amsmath
amsthm
and
appendix
appendixname
arabic
array
arraycolsep
arrayrulewidth
arraystretch
article
author
a4paper
a5paper
backmatter
bar
bar
baselineskip
baselinestretch
batchmode
begin
belowdisplayshortskip
belowdisplayskip
bezier
bf
bfseries
bibindent
bibitem
bibliography
bibliographystyle
bibname
big
Big
Bigg
bigg
Biggl
biggl
Biggm
biggm
Biggr
biggr
Bigl
bigl
bigm
Bigm
bigr
Bigr
bigskip
bigskipamount
binom
blg
boldmath
boldsymbol
book
botfigrule
bottmofraction
bottomnumber
boxedminipage
bp
breve
b5paper
calc
calc
caption
caption2
capt-of
cases
cc
ccaption
ccname
cdotscenter
centering
cercle
cfrac
changebar
chapter
chapterbib
chaptername
check
cite
cleardoublepage
clearpage
cline
clock
closing
cm
COLON
columnsep
columnseprule
columnwidth
contentsline
contentsname
copyright
dag
dashbox
date
dbinom
dblfigure
dblfloatpage
dblfloatsep
dbltextfloatsep
dbltopfraction
dbltopnumber
dcolumn
dd
ddag
ddot
ddots
DeclareMathOperator
depth
description
dfrac
displaylimits
displaymath
displaystyle
document
documentclass
dot
dotfill
doublerulesep
downbracefill
draft
dropping
dywiz
em
emph
empty
encl
enclname
end
endfloat
enlargethispage
enskip
enspace
ensuremath
enumerate
enumi
enumii
enumiii
enumiv
equation
errorstopmode
eucal
eufrak
evensidemargin
everyship
ex
executivepaper
expdlist
extracolsep
extramark
fancybox
fancyhdr
fbox
fboxrule
fboxsep
figure
figurename
file
filecontents
final
flafter
fleqn
floatflt
floatpagefraction
floatsep
flushbottom
flushleft
flushright
fnpara
fnsymbol
fn2end
fontenc
footheight
footmisc
footnote
footnotemark
footnoterule
footnotesep
footnotesize
footnotetext
footnpag
footskip
frac
frame
framebox
frenchspacing
frontmatter
ftnright
fussy
gather
genfrac
geometry
glossary
glossaryentry
graphicx
graphpaper
grave
hat
hbox
headheihgt
headings
headsep
height
helvet
hfill
hhline
hline
hrulefill
hspace
huge
Huge
HUGE
hyperref
hyphenation
ifthen
in
include
includeonly
indent
indentfirst
index
indexentry
indexname
indexspace
input
inputenc
intertext
intextsep
invisible
it
item
itemindent
itemize
itemsep
itshape
jot
kill
label
labelenumi
labelenumii
labelenumiii
labelenumiv
labelitemi
labelitemii
labelitemiii
labelitemiv
labelsep
labelwidth
landscape
large
LARGE
Large
LaTeX
LaTeXe
latexsym
ldots
left
leftarrowfill
lefteqn
leftmargin
leftmargini
leftmarginii
leftmarginiii
leftmarginiv
leftmarginv
leftmarginvi
leftmark
legalpaper
leq
leqno
letter
letterpaper
letterspace
lhead
limits
line
linebreak
linethickness
linewidth
list
listfigurename
listfiles
listoffigures
listoftables
listparindent
location
longtable
lq
lrbox
lscape
mainmatter
makeatletter
makeatother
makebox
makeglossary
makeidx
makeindex
makelabel
maketitle
manyfoot
marginpar
marginparpush
marginparsep
marginparwidth
markboth
markleft
markright
math
mathbb
mathbf
mathbin
mathcal
mathclose
mathfrak
mathindent
mathit
mathnormal
mathop
mathopen
mathord
mathpunct
mathrel
mathrm
mathscr
mathsf
mathstrut
mathtt
mathversion
mbox
mdseries
medmuskip
medskip
medskipamount
minipage
minitoc
minus
mkern
mm
moreverbatim
mpfootnote
mu
multicol
multicolumn
multilanguage
multiput
multirow
myheadings
nabla
name
NeedsTeXFormat
newcommand
newcounter
newenvironment
newfont
newlength
newline
newpage
newsavebox
newtheorem
nocite
nofiles
noindent
nolimits
nolinebreak
nomathsymbols
nonfrenchspacing
nonumber
nopagebreak
normalfont
normalsize
not
notag
note
notitlepage
nu
numberline
numline
numprint
oddsidemargin
oldstyle
onecolumn
oneside
onlynotes
onlyslides
openany
openbib
opening
openright
operatorname
oval
overbrace
overlay
overleftarrow
overline
overrightarrow
page
pagebreak
pagenumbering
pageref
pagestyle
paperheight
paperwidth
par
paragraph
parbox
parbox
parindent
parsep
parskip
part
partial
partname
partopsep
pauza
pc
phi
pi
picture
plain
PLdateending
plmath
PLSlash
plus
pmb
pmod
polski
polski
poptabs
pounds
ppauza
prefixing
printindex
protect
providecommand
ps
pt
pushtabs
put
qbezier
qbeziermax
qquad
quad
quotation
quote
raggedbottom
raggedleft
raggedright
ragged2e
raisebox
ratio
real
ref
refname
refstepcounter
relsize
renewcommand
renewenvironment
report
reversemarginpar
rhead
right
rightarrowfill
rightmargin
rightmark
rm
rmfamily
roman
Roman
rotate
rotating
rq
rule
samepage
savebox
sb
sbox
sc
scriptscriptstyle
scriptsize
scriptstyle
scrollmode
scshape
secnumdepth
section
sectionmark
see
seename
selectfont
selectlanguage
setcounter
setlength
settime
settodepth
settoheight
settowidth
sf
sffamily
shadethm
shadow
shapepar
shortstack
showlabels
sidecap
signature
sin
sl
slide
slides
sloppy
sloppybar
slshape
small
smallskip
smallskipamount
soul
sp
space
sqrt
ss
SS
stackrel
startbreaks
stepcounter
stop
stopbreaks
stretch
strut
subfigure
subfigure
subitem
subparagraph
subsection
subsubitem
subsubsection
sum
supressfloats
symbol
symbol
tabbing
tabcolsep
table
tablename
tableofcontents
tabular
tabularx
tag
tan
tbinom
telephone
TeX
textbf
textbullet
textcircled
textcompwordmark
textemdash
textendash
textexclamdown
textfloatsep
textfraction
textheight
textit
textmd
textnormal
textperiodcenter
textquestiondown
textquotedblleft
textquotedblright
textquoteleft
textquoteright
textrm
textsc
textsf
textsl
textstyle
textsuperscript
texttt
textup
textvisiblespace
textwidth
tfrac
thanks
the
thebibliography
theindex
theorem
thepage
thesection
theta
thicklines
thickmuskip
thinlines
thispagestyle
tilde
time
times
tiny
title
titlepage
tocdepth
today
topfigrule
topfraction
topmargin
topmargin
topmargin
topsep
topskip
topskip
totalheight
totalnumber
trivlist
tt
ttfamily
twocolumn
twocolumn
twoside
typein
typein
typeout
typeout
ulem
ulem
unboldmath
underbrace
underline
unsort
unsrt
upbracefill
upshape
upshape
usebox
usebox
usecounter
usefont
usepackage
value
vbox
vdots
vec
vector
verb
verb
verbatim
verse
vfill
visible
vline
vmargin
voffset
vspace
widehat
widetilde
width
wrapfig
xleftarrow
xrightarrow
threeparttable

View File

@@ -0,0 +1,330 @@
"=============================================================================
" File: elementmacros.vim
" Author: Mikolaj Machowski
" Created: Tue Apr 23 06:00 PM 2002 PST
"
" Description: macros for dimensions/fonts/counters.
" and various common commands such ref/label/footnote.
"=============================================================================
nmap <silent> <script> <plug> i
imap <silent> <script> <C-o><plug> <Nop>
if exists('s:lastElementsLocation') && g:Tex_ElementsMenuLocation == s:lastElementsLocation
finish
endif
if exists('s:lastElementsLocation')
exe 'aunmenu '.s:lastElementsLocation.'Font.'
exe 'aunmenu '.s:lastElementsLocation.'Dimension.'
exe 'aunmenu '.s:lastElementsLocation.'Counters.'
exe 'aunmenu '.s:lastElementsLocation.'Various.'
endif
let s:lastElementsLocation = g:Tex_ElementsMenuLocation
let s:fontMenuLoc = g:Tex_ElementsMenuLocation.'Font.'
let s:dimensionMenuLoc = g:Tex_ElementsMenuLocation.'Dimension.'
let s:counterMenuLoc = g:Tex_ElementsMenuLocation.'Counters.'
let s:variousMenuLoc = g:Tex_ElementsMenuLocation.'Various.'
" ==============================================================================
" Set up the functions the first time.
" ==============================================================================
if !exists('s:definedFuncs') " {{{
let s:definedFuncs = 1
" Tex_RemoveElementMenus: remove the elements menu {{{
function! Tex_RemoveElementMenus()
exe 'silent! aunmenu '.s:lastElementsLocation.'Font.'
exe 'silent! aunmenu '.s:lastElementsLocation.'Dimension.'
exe 'silent! aunmenu '.s:lastElementsLocation.'Counters.'
exe 'silent! aunmenu '.s:lastElementsLocation.'Various.'
endfunction " }}}
" Tex_FontFamily: sets up font menus {{{
function! <SID>Tex_FontFamily(font,fam)
let vislhs = matchstr(tolower(a:font), '^.\zs.*')
" avoid redoing imaps and vmaps for every reconfiguration of menus.
if !exists('s:doneOnce') && g:Tex_FontMaps
exe "xnoremap <silent> ".g:Tex_Leader.vislhs.
\" \<C-\\>\<C-N>:call VEnclose('\\text".vislhs."{', '}', '{\\".vislhs.a:fam." ', '}')<CR>"
exe 'call IMAP ("'.a:font.'", "\\text'.vislhs.'{<++>}<++>", "tex")'
endif
" menu entry.
if g:Tex_Menus && g:Tex_FontMenus
let location = s:fontMenuLoc.substitute(a:fam, '^.', '\u&', '').'.'.vislhs.a:fam.'<tab>'.a:font.'\ ('.g:Tex_Leader.vislhs.')'
exe "amenu ".location.
\" <plug><C-r>=IMAP_PutTextWithMovement('\\text".vislhs."{<++>}<++>')<CR>"
exe "vmenu ".location.
\" \<C-\\>\<C-N>:call VEnclose('\\text".vislhs."{', '}', '{\\".vislhs.a:fam." ', '}')<CR>"
endif
endfunction " }}}
" Tex_FontDiacritics: sets up menus for diacritics. {{{
function! <SID>Tex_FontDiacritics(name, rhs)
let location = s:fontMenuLoc.'&Diacritics.'.a:name.'<tab>'
exe 'amenu '.location.
\" <plug><C-r>=IMAP_PutTextWithMovement('\\".a:rhs."{<++>}<++>')<CR>"
exe 'vmenu '.location.
\" \<C-\\>\<C-n>:call VEnclose('\\".a:rhs."{', '}', '', '')<CR>"
endfunction " }}}
" Tex_FontSize: sets up size fonts {{{
function! <SID>Tex_FontSize(name)
let location = s:fontMenuLoc.'&Size.'.a:name.'<tab>'
exe 'amenu '.location." <plug>\\".a:name
exe 'vunmenu '.location
endfunction " }}}
" Tex_Fontfont: sets up the 'font' part of font menus {{{
function! <SID>Tex_Fontfont(desc, lhs)
let location = s:fontMenuLoc.'&font.'.a:desc.'<tab>'
exe "amenu ".location." <plug><C-r>=IMAP_PutTextWithMovement('".a:lhs."')<CR>"
exe "vunmenu ".location
endfunction " }}}
" Tex_DimMenus: set up dimension menus {{{
function! <SID>Tex_DimMenus(submenu, rhs)
let location = s:dimensionMenuLoc.a:submenu.'.'.a:rhs.'<tab>'
exe "amenu ".location." <plug>\\".a:rhs
exe "vunmenu ".location
endfunction " }}}
" Tex_CounterMenus: set up counters menus {{{
function! <SID>Tex_CounterMenus(submenu, rhs)
let location = s:counterMenuLoc.a:submenu.'.'.a:rhs.'<tab>'
exe "amenu ".location." <plug>\\".a:rhs
exe "vunmenu ".location
endfunction " }}}
" Tex_VariousMenus: set up various menus {{{
function! <SID>Tex_VariousMenus(desc, lhs)
let location = s:variousMenuLoc.a:desc.'<tab>'
exe "amenu ".location." <plug><C-r>=IMAP_PutTextWithMovement('".a:lhs."')<CR>"
exe "vunmenu ".location
endfunction " }}}
endif
" }}}
" ==============================================================================
" Fonts
" ==============================================================================
" series/family/shape {{{
call <SID>Tex_FontFamily("FBF","series")
call <SID>Tex_FontFamily("FMD","series")
call <SID>Tex_FontFamily("FTT","family")
call <SID>Tex_FontFamily("FSF","family")
call <SID>Tex_FontFamily("FRM","family")
call <SID>Tex_FontFamily("FUP","shape")
call <SID>Tex_FontFamily("FSL","shape")
call <SID>Tex_FontFamily("FSC","shape")
call <SID>Tex_FontFamily("FIT","shape")
" the \emph is special.
if g:Tex_FontMaps | exe "xnoremap <silent> ".g:Tex_Leader."em \<C-\\>\<C-N>:call VEnclose('\\emph{', '}', '{\\em', '\\/}')<CR>" | endif
if g:Tex_FontMaps | exe 'call IMAP ("FEM", "\\emph{<++>}<++>", "tex")' | endif
" }}}
if g:Tex_Menus && g:Tex_FontMenus
" {{{ diacritics
call <SID>Tex_FontDiacritics('Acute', '"')
call <SID>Tex_FontDiacritics('Breve', 'u')
call <SID>Tex_FontDiacritics('Circle', 'r')
call <SID>Tex_FontDiacritics('Circumflex', '^')
call <SID>Tex_FontDiacritics('Umlaut', '"')
call <SID>Tex_FontDiacritics('HUmlaut', 'H')
call <SID>Tex_FontDiacritics('Dot\ over', '.')
call <SID>Tex_FontDiacritics('Grave', '`')
call <SID>Tex_FontDiacritics('Hacek', 'v')
call <SID>Tex_FontDiacritics('Makron', '=')
call <SID>Tex_FontDiacritics('Tilde', '~')
call <SID>Tex_FontDiacritics('Underline', 'b')
call <SID>Tex_FontDiacritics('Cedille', 'c')
call <SID>Tex_FontDiacritics('Dot\ under', ' ')
call <SID>Tex_FontDiacritics('Ligature', 't')
" }}}
" {{{ Si&ze.
call <SID>Tex_FontSize('tiny')
call <SID>Tex_FontSize('scriptsize')
call <SID>Tex_FontSize('footnotesize')
call <SID>Tex_FontSize('small')
call <SID>Tex_FontSize('normalsize')
call <SID>Tex_FontSize('large')
call <SID>Tex_FontSize('Large')
call <SID>Tex_FontSize('LARGE')
call <SID>Tex_FontSize('huge')
call <SID>Tex_FontSize('Huge')
" }}}
" {{{ &font.
call s:Tex_Fontfont('fontencoding{}', '\fontencoding{<++>}<++>')
call s:Tex_Fontfont('fontfamily{qtm}', '\fontfamily{<++>}<++>')
call s:Tex_Fontfont('fontseries{m\ b\ bx\ sb\ c}', '\fontseries{<++>}<++>')
call s:Tex_Fontfont('fontshape{n\ it\ sl\ sc\ ui}', '\fontshape{<++>}<++>')
call s:Tex_Fontfont('fontsize{}{}', '\fontsize{<++>}{<++>}<++>')
call s:Tex_Fontfont('selectfont', '\selectfont ')
" }}}
endif
" ==============================================================================
" Dimensions
" ==============================================================================
if g:Tex_Menus
" {{{ Static1
call <SID>Tex_DimMenus('Static1', 'arraycolsep')
call <SID>Tex_DimMenus('Static1', 'arrayrulewidth')
call <SID>Tex_DimMenus('Static1', 'bibindent')
call <SID>Tex_DimMenus('Static1', 'columnsep')
call <SID>Tex_DimMenus('Static1', 'columnseprule')
call <SID>Tex_DimMenus('Static1', 'columnwidth')
call <SID>Tex_DimMenus('Static1', 'doublerulesep')
call <SID>Tex_DimMenus('Static1', 'evensidemargin')
call <SID>Tex_DimMenus('Static1', 'fboxrule')
call <SID>Tex_DimMenus('Static1', 'fboxsep')
call <SID>Tex_DimMenus('Static1', 'footheight')
call <SID>Tex_DimMenus('Static1', 'footnotesep')
call <SID>Tex_DimMenus('Static1', 'footskip')
call <SID>Tex_DimMenus('Static1', 'headheight')
call <SID>Tex_DimMenus('Static1', 'headsep')
call <SID>Tex_DimMenus('Static1', 'itemindent')
call <SID>Tex_DimMenus('Static1', 'labelsep')
call <SID>Tex_DimMenus('Static1', 'labelwidth')
call <SID>Tex_DimMenus('Static1', 'leftmargin')
call <SID>Tex_DimMenus('Static1', 'leftmargini')
call <SID>Tex_DimMenus('Static1', 'leftmarginii')
call <SID>Tex_DimMenus('Static1', 'leftmarginiii')
call <SID>Tex_DimMenus('Static1', 'leftmarginiv')
call <SID>Tex_DimMenus('Static1', 'leftmarginv')
call <SID>Tex_DimMenus('Static1', 'leftmarginvi')
call <SID>Tex_DimMenus('Static1', 'linewidth')
call <SID>Tex_DimMenus('Static1', 'listparindent')
call <SID>Tex_DimMenus('Static1', 'marginparpush')
call <SID>Tex_DimMenus('Static1', 'marginparsep')
call <SID>Tex_DimMenus('Static1', 'marginparwidth')
call <SID>Tex_DimMenus('Static1', 'mathindent')
call <SID>Tex_DimMenus('Static1', 'oddsidemargin')
" }}}
" {{{ Static2
call <SID>Tex_DimMenus('Static2', 'paperheight')
call <SID>Tex_DimMenus('Static2', 'paperwidth')
call <SID>Tex_DimMenus('Static2', 'parindent')
call <SID>Tex_DimMenus('Static2', 'rightmargin')
call <SID>Tex_DimMenus('Static2', 'tabbingsep')
call <SID>Tex_DimMenus('Static2', 'tabcolsep')
call <SID>Tex_DimMenus('Static2', 'textheight')
call <SID>Tex_DimMenus('Static2', 'textwidth')
call <SID>Tex_DimMenus('Static2', 'topmargin')
call <SID>Tex_DimMenus('Static2', 'unitlength')
" }}}
" {{{ Dynamic
call <SID>Tex_DimMenus('Dynamic', 'abovedisplayshortskip')
call <SID>Tex_DimMenus('Dynamic', 'abovedisplayskip')
call <SID>Tex_DimMenus('Dynamic', 'baselineskip')
call <SID>Tex_DimMenus('Dynamic', 'belowdisplayshortskip')
call <SID>Tex_DimMenus('Dynamic', 'belowdisplayskip')
call <SID>Tex_DimMenus('Dynamic', 'dblfloatsep')
call <SID>Tex_DimMenus('Dynamic', 'dbltextfloatsep')
call <SID>Tex_DimMenus('Dynamic', 'floatsep')
call <SID>Tex_DimMenus('Dynamic', 'intextsep')
call <SID>Tex_DimMenus('Dynamic', 'itemsep')
call <SID>Tex_DimMenus('Dynamic', 'parsep')
call <SID>Tex_DimMenus('Dynamic', 'parskip')
call <SID>Tex_DimMenus('Dynamic', 'partopsep')
call <SID>Tex_DimMenus('Dynamic', 'textfloatsep')
call <SID>Tex_DimMenus('Dynamic', 'topsep')
call <SID>Tex_DimMenus('Dynamic', 'topskip')
" }}}
" {{{ Change
call <SID>Tex_DimMenus('Change', 'setlength')
call <SID>Tex_DimMenus('Change', 'addtolength')
call <SID>Tex_DimMenus('Change', 'settoheight')
call <SID>Tex_DimMenus('Change', 'settowidth')
call <SID>Tex_DimMenus('Change', 'settolength')
" }}}
endif
" ==============================================================================
" Counters
" ==============================================================================
if g:Tex_Menus
" Counters {{{
call <SID>Tex_CounterMenus('Counters', 'bottomnumber')
call <SID>Tex_CounterMenus('Counters', 'chapter')
call <SID>Tex_CounterMenus('Counters', 'dbltopnumber')
call <SID>Tex_CounterMenus('Counters', 'enumi')
call <SID>Tex_CounterMenus('Counters', 'enumii')
call <SID>Tex_CounterMenus('Counters', 'enumiii')
call <SID>Tex_CounterMenus('Counters', 'enumiv')
call <SID>Tex_CounterMenus('Counters', 'equation')
call <SID>Tex_CounterMenus('Counters', 'figure')
call <SID>Tex_CounterMenus('Counters', 'footnote')
call <SID>Tex_CounterMenus('Counters', 'mpfootnote')
call <SID>Tex_CounterMenus('Counters', 'page')
call <SID>Tex_CounterMenus('Counters', 'paragraph')
call <SID>Tex_CounterMenus('Counters', 'part')
call <SID>Tex_CounterMenus('Counters', 'secnumdepth')
call <SID>Tex_CounterMenus('Counters', 'section')
call <SID>Tex_CounterMenus('Counters', 'subparagraph')
call <SID>Tex_CounterMenus('Counters', 'subsection')
call <SID>Tex_CounterMenus('Counters', 'subsubsection')
call <SID>Tex_CounterMenus('Counters', 'table')
call <SID>Tex_CounterMenus('Counters', 'tocdepth')
call <SID>Tex_CounterMenus('Counters', 'topnumber')
call <SID>Tex_CounterMenus('Counters', 'totalnumber')
" }}}
" theCounters {{{
call <SID>Tex_CounterMenus('theCounters', 'thebottomnumber')
call <SID>Tex_CounterMenus('theCounters', 'thechapter')
call <SID>Tex_CounterMenus('theCounters', 'thedbltopnumber')
call <SID>Tex_CounterMenus('theCounters', 'theenumi')
call <SID>Tex_CounterMenus('theCounters', 'theenumii')
call <SID>Tex_CounterMenus('theCounters', 'theenumiii')
call <SID>Tex_CounterMenus('theCounters', 'theenumiv')
call <SID>Tex_CounterMenus('theCounters', 'theequation')
call <SID>Tex_CounterMenus('theCounters', 'thefigure')
call <SID>Tex_CounterMenus('theCounters', 'thefootnote')
call <SID>Tex_CounterMenus('theCounters', 'thempfootnote')
call <SID>Tex_CounterMenus('theCounters', 'thepage')
call <SID>Tex_CounterMenus('theCounters', 'theparagraph')
call <SID>Tex_CounterMenus('theCounters', 'thepart')
call <SID>Tex_CounterMenus('theCounters', 'thesecnumdepth')
call <SID>Tex_CounterMenus('theCounters', 'thesection')
call <SID>Tex_CounterMenus('theCounters', 'thesubparagraph')
call <SID>Tex_CounterMenus('theCounters', 'thesubsection')
call <SID>Tex_CounterMenus('theCounters', 'thesubsubsection')
call <SID>Tex_CounterMenus('theCounters', 'thetable')
call <SID>Tex_CounterMenus('theCounters', 'thetocdepth')
call <SID>Tex_CounterMenus('theCounters', 'thetopnumber')
call <SID>Tex_CounterMenus('theCounters', 'thetotalnumber')
" }}}
" Type {{{
call <SID>Tex_CounterMenus('Type', 'alph')
call <SID>Tex_CounterMenus('Type', 'Alph')
call <SID>Tex_CounterMenus('Type', 'arabic')
call <SID>Tex_CounterMenus('Type', 'roman')
call <SID>Tex_CounterMenus('Type', 'Roman')
" }}}
endif
" ==============================================================================
" Various
" ==============================================================================
if g:Tex_Menus
" Various {{{
call <SID>Tex_VariousMenus('ref{}' , '\ref{<++>}<++>')
call <SID>Tex_VariousMenus('pageref{}' , '\pageref{<++>}<++>')
call <SID>Tex_VariousMenus('label{}' , '\label{<++>}<++>')
call <SID>Tex_VariousMenus('footnote{}' , '\footnote{<++>}<++>')
call <SID>Tex_VariousMenus('footnotemark{}', '\footnotemark{<++>}<++>')
call <SID>Tex_VariousMenus('footnotemark{}', '\footnotetext{<++>}<++>')
call <SID>Tex_VariousMenus('cite{}' , '\cite{<++>}<++>')
call <SID>Tex_VariousMenus('nocite{}' , '\nocite{<++>}<++>')
" }}}
endif
if g:Tex_CatchVisMapErrors
exe "xnoremap ".g:Tex_Leader." :\<C-u>call ExecMap('".g:Tex_Leader."', 'v')\<CR>"
endif
" this is for avoiding reinclusion of imaps from next time on.
let s:doneOnce = 1
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,200 @@
#!/usr/bin/env python
# Part of Latex-Suite
#
# Copyright: Srinath Avadhanula
# Description:
# This file implements a simple outline creation for latex documents.
import re
import os
import sys
if sys.version_info <= (3, 0):
from StringIO import StringIO
else:
from io import StringIO
def getFileContents(fname):
if type(fname) is not str:
fname = fname.group(3)
# If neither the file or file.tex exists, then we just give up.
if not os.path.isfile(fname):
if os.path.isfile(fname + '.tex'):
fname += '.tex'
else:
return ''
try:
# This longish thing is to make sure that all files are converted into
# \n seperated lines.
contents = '\n'.join(open(fname).read().splitlines())
except IOError:
return ''
# TODO what are all the ways in which a tex file can include another?
pat = re.compile(r'^\s*\\(@?)(include|input){(.*?)}', re.M)
contents = re.sub(pat, getFileContents, contents)
return ('%%==== FILENAME: %s' % fname) + '\n' + contents
def stripComments(contents):
# remove all comments except those of the form
# %%==== FILENAME: <filename.tex>
# BUG: This comment right after a new paragraph is not recognized:
# foo\\%comment
uncomm = [re.sub('(?<!\\\\)%(?!==== FILENAME: ).*', '', line)
for line in contents.splitlines()]
# also remove all only-whitespace lines.
nonempty = [line for line in uncomm if line.strip()]
return nonempty
def addFileNameAndNumber(lines):
filename = ''
retval = ''
for line in lines:
if re.match('%==== FILENAME: ', line):
filename = line.split('%==== FILENAME: ')[1]
else:
retval += '<%s>%s\n' % (filename, line)
return retval
def getSectionLabels_Root(lineinfo, section_prefix, label_prefix):
prev_txt = ''
inside_env = 0
prev_env = ''
outstr = StringIO('')
pres_depth = len(section_prefix)
indent = ' ' * (2*pres_depth + 2)
#print '+getSectionLabels_Root: lineinfo = [%s]' % lineinfo
for line in lineinfo.splitlines():
if not line:
continue
# throw away leading white-space
m = re.search('<(.*?)>(.*)', line)
fname = m.group(1)
line = m.group(2).lstrip()
# we found a label!
m = re.search(r'\\(?:nl)?label{(%s.*?)}' % label_prefix, line)
if m:
# Get the corresponding label
label = m.group(1)
# add the current line (except the \label command) to the text
# which will be displayed below this label
prev_txt += re.search(r'(^.*?)\\(?:nl)?label{', line).group(1)
# for the figure environment however, just display the caption.
# instead of everything since the \begin command.
if prev_env == 'figure':
cm = re.search(r'\\caption(\[.*?\]\s*)?{(.*?)}', prev_txt)
if cm:
prev_txt = cm.group(2)
# print a nice formatted text entry like so
#
# > eqn:label
# : e^{i\pi} + 1 = 0
#
# Use the current "section depth" for the leading indentation.
outstr.write('>%s%s\t\t<%s>\n' % (indent, label, fname))
outstr.write(':%s %s\n' % (indent, prev_txt))
prev_txt = ''
# If we just encoutered the start or end of an environment or a
# label, then do not remember this line.
# NOTE: This assumes that there is no equation text on the same
# line as the \begin or \end command. The text on the same line as
# the \label was already handled.
if re.search(r'\\begin{(equation|align|figure)', line):
prev_txt = ''
prev_env = re.search(r'\\begin{(.*?)}', line).group(1)
inside_env = 1
elif re.search(r'\\(?:nl)?label', line):
prev_txt = ''
elif re.search(r'\\end{(equation|align|figure)', line):
inside_env = 0
prev_env = ''
else:
# If we are inside an environment, then the text displayed with
# the label is the complete text within the environment,
# otherwise its just the previous line.
if inside_env:
prev_txt += line
else:
prev_txt = line
return outstr.getvalue()
def getSectionLabels(lineinfo,
sectypes=['chapter', 'section',
'subsection', 'subsubsection'],
section_prefix='', label_prefix=''):
if not sectypes:
return getSectionLabels_Root(lineinfo, section_prefix, label_prefix)
##print 'sectypes[0] = %s, section_prefix = [%s], lineinfo = [%s]' % (
## sectypes[0], section_prefix, lineinfo)
sections = re.split(r'(<.*?>\\%s{.*})' % sectypes[0], lineinfo)
# there will 1+2n sections, the first containing the "preamble" and the
# others containing the child sections as paris of [section_name,
# section_text]
rettext = getSectionLabels(
sections[0], sectypes[1:], section_prefix, label_prefix)
for i in range(1, len(sections), 2):
sec_num = (i + 1) / 2
section_name = re.search(
r'\\%s{(.*?)}' % sectypes[0], sections[i]).group(1)
section_label_text = getSectionLabels(
sections[i] + sections[i + 1], sectypes[1:],
section_prefix + ('%d.' % sec_num), label_prefix)
if section_label_text:
sec_heading = 2 * ' ' * len(section_prefix) + section_prefix
sec_heading += '%d. %s' % (sec_num, section_name)
sec_heading += '<<<%d\n' % (len(section_prefix) / 2 + 1)
rettext += sec_heading + section_label_text
return rettext
def main(fname, label_prefix):
[head, tail] = os.path.split(fname)
if head:
os.chdir(head)
contents = getFileContents(fname)
nonempty = stripComments(contents)
lineinfo = addFileNameAndNumber(nonempty)
return getSectionLabels(lineinfo, label_prefix=label_prefix)
if __name__ == "__main__":
if len(sys.argv) > 2:
prefix = sys.argv[2]
else:
prefix = ''
print(main(sys.argv[1], prefix))

View File

@@ -0,0 +1,546 @@
"=============================================================================
" File: folding.vim
" Author: Srinath Avadhanula
" modifications/additions by Zhang Linbo, Gerd Wachsmuth
" Created: Tue Apr 23 05:00 PM 2002 PST
"
" Description: functions to interact with Syntaxfolds.vim
"=============================================================================
nnoremap <Plug>Tex_RefreshFolds :call MakeTexFolds(1, 1)<cr>
augroup LatexSuite
au LatexSuite User LatexSuiteFileType
\ call Tex_Debug('folding.vim: catching LatexSuiteFileType', 'fold') |
\ call Tex_SetFoldOptions()
augroup END
" Tex_SetFoldOptions: sets maps for every buffer {{{
" Description:
function! Tex_SetFoldOptions()
if exists('b:doneSetFoldOptions')
return
endif
let b:doneSetFoldOptions = 1
setlocal foldtext=TexFoldTextFunction()
if g:Tex_Folding
call MakeTexFolds(0, 0)
endif
let s:ml = '<Leader>'
call Tex_MakeMap(s:ml."rf", "<Plug>Tex_RefreshFolds", 'n', '<silent> <buffer>')
" Setup a local autocommand, if FileChangedShellPost is available
if exists('##FileChangedShellPost')
augroup LatexSuite
autocmd FileChangedShellPost <buffer> call MakeTexFolds(1, 0)
augroup END
endif
endfunction " }}}
" Tex_FoldSections: creates section folds {{{
" Description:
" This function takes a comma seperated list of "sections" and creates fold
" definitions for them. The first item is supposed to be the "shallowest" field
" and the last is the "deepest". See g:Tex_FoldedSections for the default
" definition of the lst input argument.
"
" **works recursively**
function! Tex_FoldSections(lst, endpat)
let i = match(a:lst, ',')
if i > 0
let s = strpart(a:lst, 0, i)
else
let s = a:lst
endif
if s =~ '%%fakesection'
let s = '^\s*' . s
else
let pattern = ''
let prefix = ''
for label in split( s, "|" )
let pattern .= prefix . '\\' . label . '\|' . '%%fake' . label
let prefix = '\|'
endfor
" The line before the pattern could contain a mixture of "% =_" (within a
" comment).
" The pattern itself is ended by a non-word character "\W" or a newline.
let s = '^\%(%[% =-]*\n\)\?\s*' . '\%(' . pattern . '\)' . '\%(\W\|\n\)'
endif
let endpat = s . '\|' . a:endpat
if i > 0
call Tex_FoldSections(strpart(a:lst,i+1), endpat)
endif
call AddSyntaxFoldItem(s, endpat, 0, -1)
endfunction
" }}}
" MakeTexFolds: function to create fold items for latex. {{{
"
" used in conjunction with MakeSyntaxFolds().
" see ../plugin/syntaxFolds.vim for documentation
function! MakeTexFolds(force, manual)
if exists('g:Tex_Folding') && !g:Tex_Folding
return
endif
if &ft != 'tex'
return
end
" Setup folded items lists g:Tex_Foldedxxxx
" 1. Use default value if g:Tex_Foldedxxxxxx is not defined
" 2. prepend default value to g:Tex_Foldedxxxxxx if it starts with ','
" 3. append default value to g:Tex_Foldedxxxxxx if it ends with ','
" Folding items which are not caught in any of the standard commands,
" environments or sections.
let s = 'item,slide,preamble,<<<'
if !exists('g:Tex_FoldedMisc')
let g:Tex_FoldedMisc = s
elseif g:Tex_FoldedMisc[0] == ','
let g:Tex_FoldedMisc = s . g:Tex_FoldedMisc
elseif g:Tex_FoldedMisc =~ ',$'
let g:Tex_FoldedMisc = g:Tex_FoldedMisc . s
endif
" By default do not fold any commands. It looks like trying to fold
" commands is a difficult problem since commands can be arbitrarily nested
" and the end patterns are not unique unlike the case of environments.
" For this to work well, we need a regexp which will match a line only if
" a command begins on that line but does not end on that line. This
" requires a regexp which will match unbalanced curly braces and that is
" apparently not doable with regexps.
let s = ''
if !exists('g:Tex_FoldedCommands')
let g:Tex_FoldedCommands = s
elseif g:Tex_FoldedCommands[0] == ','
let g:Tex_FoldedCommands = s . g:Tex_FoldedCommands
elseif g:Tex_FoldedCommands =~ ',$'
let g:Tex_FoldedCommands = g:Tex_FoldedCommands . s
endif
let s = 'verbatim,comment,eq,gather,align,figure,table,thebibliography,'
\. 'keywords,abstract,titlepage'
if !exists('g:Tex_FoldedEnvironments')
let g:Tex_FoldedEnvironments = s
elseif g:Tex_FoldedEnvironments[0] == ','
let g:Tex_FoldedEnvironments = s . g:Tex_FoldedEnvironments
elseif g:Tex_FoldedEnvironments =~ ',$'
let g:Tex_FoldedEnvironments = g:Tex_FoldedEnvironments . s
endif
if !exists('g:Tex_FoldedSections')
let g:Tex_FoldedSections = 'part,chapter,section,'
\. 'subsection,subsubsection,paragraph'
endif
" the order in which these calls are made decides the nestedness. in
" latex, a table environment will always be embedded in either an item or
" a section etc. not the other way around. so we first fold up all the
" tables. and then proceed with the other regions.
let b:numFoldItems = 0
" ========================================================================
" How to add new folding items {{{
" ========================================================================
"
" Each of the following function calls defines a syntax fold region. Each
" definition consists of a call to the AddSyntaxFoldItem() function.
"
" The order in which the folds are defined is important. Juggling the
" order of the function calls will create havoc with folding. The
" "deepest" folding item needs to be called first. For example, if
" the \begin{table} environment is a subset (or lies within) the \section
" environment, then add the definition for the \table first.
"
" The AddSyntaxFoldItem() function takes either 4 or 6 arguments. When it
" is called with 4 arguments, it is equivalent to calling it with 6
" arguments with the last two left blank (i.e as empty strings)
"
" The explanation for each argument is as follows:
" startpat: a line matching this pattern defines the beginning of a fold.
" endpat : a line matching this pattern defines the end of a fold.
" startoff: this is the offset from the starting line at which folding will
" actually start
" endoff : like startoff, but gives the offset of the actual fold end from
" the line satisfying endpat.
" startoff and endoff are necessary when the folding region does
" not have a specific end pattern corresponding to a start
" pattern. for example in latex,
" \begin{section}
" defines the beginning of a section, but its not necessary to
" have a corresponding
" \end{section}
" the section is assumed to end 1 line _before_ another section
" starts.
" startskip: a pattern which defines the beginning of a "skipped" region.
"
" For example, suppose we define a \itemize fold as follows:
" startpat = '^\s*\\item',
" endpat = '^\s*\\item\|^\s*\\end{\(enumerate\|itemize\|description\)}',
" startoff = 0,
" endoff = -1
"
" This defines a fold which starts with a line beginning with an
" \item and ending one line before a line beginning with an
" \item or \end{enumerate} etc.
"
" Then, as long as \item's are not nested things are fine.
" However, once items begin to nest, the fold started by one
" \item can end because of an \item in an \itemize
" environment within this \item. i.e, the following can happen:
"
" \begin{itemize}
" \item Some text <------- fold will start here
" This item will contain a nested item
" \begin{itemize} <----- fold will end here because next line contains \item...
" \item Hello
" \end{itemize} <----- ... instead of here.
" \item Next item of the parent itemize
" \end{itemize}
"
" Therefore, in order to completely define a folding item which
" allows nesting, we need to also define a "skip" pattern.
" startskip and end skip do that.
" Leave '' when there is no nesting.
" endskip: the pattern which defines the end of the "skip" pattern for
" nested folds.
"
" Example:
" 1. A syntax fold region for a latex section is
" startpat = "\\section{"
" endpat = "\\section{"
" startoff = 0
" endoff = -1
" startskip = ''
" endskip = ''
" Note that the start and end patterns are thus the same and endoff has a
" negative value to capture the effect of a section ending one line before
" the next starts.
" 2. A syntax fold region for the \itemize environment is:
" startpat = '^\s*\\item',
" endpat = '^\s*\\item\|^\s*\\end{\(enumerate\|itemize\|description\)}',
" startoff = 0,
" endoff = -1,
" startskip = '^\s*\\begin{\(enumerate\|itemize\|description\)}',
" endskip = '^\s*\\end{\(enumerate\|itemize\|description\)}'
" Note the use of startskip and endskip to allow nesting.
"
"
" }}}
" ========================================================================
" {{{ comment lines
if g:Tex_FoldedMisc =~ '\<comments\>'
call AddSyntaxFoldItem (
\ '^%\([^%]\|[^f]\|[^a]\|[^k]\|[^e]\)',
\ '^[^%]',
\ 0,
\ -1
\ )
endif
" }}}
" {{{ items
if g:Tex_FoldedMisc =~ '\<item\>'
call AddSyntaxFoldItem (
\ '^\s*\\item',
\ '^\s*\\item\|^\s*\\end{\(enumerate\|itemize\|description\)}',
\ 0,
\ -1,
\ '^\s*\\begin{\(enumerate\|itemize\|description\)}',
\ '^\s*\\end{\(enumerate\|itemize\|description\)}'
\ )
endif
" }}}
" {{{ title
if g:Tex_FoldedMisc =~ '\<title\>'
call AddSyntaxFoldItem (
\ '^\s*\\title\W',
\ '^\s*\\maketitle',
\ 0,
\ 0
\ )
endif
" }}}
" Commands and Environments {{{
" Fold the commands and environments in 2 passes.
let pass = 0
while pass < 2
if pass == 0
let lst = g:Tex_FoldedCommands
else
let lst = g:Tex_FoldedEnvironments
endif
while lst != ''
let i = match(lst, ',')
if i > 0
let s = strpart(lst, 0, i)
let lst = strpart(lst, i+1)
else
let s = lst
let lst = ''
endif
if s != ''
if pass == 0
" NOTE: This pattern ensures that a command which is
" terminated on the same line will not start a fold.
" However, it will also refuse to fold certain commands
" which have not terminated. eg:
" \commandname{something \textbf{text} and
" will _not_ start a fold.
" In other words, the pattern is safe, but not exact.
call AddSyntaxFoldItem('^\s*\\'.s.'{[^{}]*$','^[^}]*}',0,0)
else
if s =~ 'itemize\|enumerate\|description\|align\|gather'
" These environments can nest.
call AddSyntaxFoldItem('^\s*\\begin{'.s,'\(^\|\s\)\s*\\end{'.s,0,0,'^\s*\\begin{'.s,'\(^\|\s\)\s*\\end{'.s)
else
call AddSyntaxFoldItem('^\s*\\begin{'.s,'\(^\|\s\)\s*\\end{'.s,0,0,'','')
endif
endif
endif
endwhile
let pass = pass + 1
endwhile
" }}}
" Sections {{{
if g:Tex_FoldedSections != ''
call Tex_FoldSections(g:Tex_FoldedSections,
\ '^\s*\\\%(frontmatter\|mainmatter\|backmatter\)\|'
\. '^\s*\\begin{thebibliography\|^\s*\\endinput\|'
\. '^\s*\\begin{slide\|^\s*\\\%(begin\|end\){document\|'
\. '^\s*\\\%(\%(begin\|end\){appendix}\|appendix\)')
endif
" }}}
" {{{ slide
if g:Tex_FoldedMisc =~ '\<slide\>'
call AddSyntaxFoldItem (
\ '^\s*\\begin{slide',
\ '^\s*\\appendix\W\|^\s*\\chapter\W\|^\s*\\end{slide\|^\s*\\end{document',
\ 0,
\ 0
\ )
endif
" }}}
" {{{ preamble
if g:Tex_FoldedMisc =~ '\<preamble\>'
call AddSyntaxFoldItem (
\ '^\s*\\document\(class\|style\)\>',
\ '^\s*\\begin{document}',
\ 0,
\ -1
\ )
endif
" }}}
" Manually folded regions {{{
if g:Tex_FoldedMisc =~ '\(^\|,\)<<<\(,\|$\)'
call AddSyntaxFoldItem (
\ '<<<',
\ '>>>',
\ 0,
\ 0
\ )
endif
" }}}
call MakeSyntaxFolds(a:force)
" Open all folds if this function was triggered automatically
" and g:Tex_AutoFolding is disabled
if !a:manual && !g:Tex_AutoFolding
normal! zR
endif
endfunction
" }}}
" TexFoldTextFunction: create fold text for folds {{{
function! TexFoldTextFunction()
" The dashes indicating the foldlevel together with
" the number of lines are aligned to width '7'.
let lines = v:foldend - v:foldstart + 1
let myfoldtext = repeat('-', v:foldlevel-1) . '+'
\. repeat(' ', 7-(v:foldlevel-1)-len(lines))
\. lines . ' lines: '
" Add some indent per foldlevel
let myfoldtext .= repeat('> ', v:foldlevel-1)
if getline(v:foldstart) =~ '^\s*\\begin{'
let header = matchstr(getline(v:foldstart),
\ '^\s*\\begin{\zs\([:alpha:]*\)[^}]*\ze}')
let title = ''
let caption = ''
let label = ''
let i = v:foldstart
while i <= v:foldend
if getline(i) =~ '\\caption'
" distinguish between
" \caption{fulldesc} - fulldesc will be displayed
" \caption[shortdesc]{fulldesc} - shortdesc will be displayed
if getline(i) =~ '\\caption\['
let caption = matchstr(getline(i), '\\caption\[\zs[^\]]*')
let caption = substitute(caption, '\zs\]{.*}[^}]*$', '', '')
else
let caption = matchstr(getline(i), '\\caption{\zs.*')
let caption = substitute(caption, '\zs}[^}]*$', '', '')
end
elseif getline(i) =~ '\\label'
let label = matchstr(getline(i), '\\label{\zs.*')
" :FIXME: this does not work when \label contains a
" newline or a }-character
let label = substitute(label, '\([^}]*\)}.*$', '\1', '')
elseif header =~ 'frame' && getline(i) =~ '\\begin{frame}.*{[^{}]*}\|\\frametitle\|%'
if getline(i) =~ '\\begin{frame}'
" The first argument inside {} is the frame title (the
" second one is a subtitle)
let title = matchstr(getline(i), '\\begin{frame}.\{-}{\zs[^{}]*\ze}')
elseif getline(i) =~ '\\frametitle'
let title = matchstr(getline(i), '\\frametitle{\zs[^}]*\ze}')
elseif getline(i) =~ '%' && title == ''
let title = substitute(getline(i), '^\(\s\|%\)*', '', '')
endif
end
let i = i + 1
endwhile
if header =~ 'frame'
if title == ''
let title = getline(v:foldstart + 1)
end
" Count frames
let frnum = 0
for line in getline(1,v:foldstart)
if line =~ '\\begin{frame}'
let frnum=frnum+1
endif
endfor
" Pad with spaces to length 2
let frnum = repeat(' ', 2-len(frnum)) . frnum
return myfoldtext . ': Frame ' . frnum . ': ' . title
end
" if no caption found, then use the second line.
if caption == ''
let caption = getline(v:foldstart + 1)
end
return myfoldtext . header. ' ('.label.'): '.caption
elseif getline(v:foldstart) =~ '^\s*%\+[% =-]*$'
" Useless comment. Use the next line.
return myfoldtext . getline(v:foldstart+1)
elseif getline(v:foldstart) =~ '^\s*%%fake'
" Just strip one '%' from the fakesection.
return myfoldtext . substitute(getline(v:foldstart), '^\s*%%fake', '%', '')
elseif getline(v:foldstart) =~ '^\s*%'
" It's any other comment. Use it.
return myfoldtext . getline(v:foldstart)
elseif getline(v:foldstart) =~ '^\s*\\document\(class\|style\).*{'
" This is the preamble.
return myfoldtext . 'Preamble: ' . getline(v:foldstart)
end
let section_pattern = substitute(g:Tex_FoldedSections, ',\||', '\\|', 'g')
let section_pattern = '\\\%(' . section_pattern .'\)\>'
if getline(v:foldstart) =~ '^\s*' . section_pattern
" This is a section. Search for the content of the mandatory argument {...}
let type = matchstr(getline(v:foldstart), '^\s*\zs' . section_pattern)
return myfoldtext . type . s:ParseSectionTitle(v:foldstart, section_pattern)
else
" This is something.
return myfoldtext . getline(v:foldstart)
end
endfunction
" }}}
" s:ParseSectionTitle: create fold text for sections {{{
" Search for the mandatory argument of the \section command and ignore the
" optional argument.
function! s:ParseSectionTitle(foldstart, section_pattern)
let currlinenr = a:foldstart
let currline = s:StripLine(getline(currlinenr))
let currlinelen = strlen(currline)
" Look for the section title after the section macro
let index = match(currline, '^\s*' . a:section_pattern . '\zs')
let maxlines = 10
" Current depth of nested [] and {}:
let currdepth = 0
" Do we have found the mandatory argument?
" (We are looking for '{' at depth 0)
let found_mandatory = 0
let string = ''
while (currdepth > 0) || !found_mandatory
if index >= currlinelen
" Read a new line.
let maxlines = maxlines - 1
if maxlines < 0
return string . ' Scanned too many lines'
endif
let currlinenr = currlinenr + 1
let currline = s:StripLine(getline(currlinenr))
let currlinelen = strlen(currline)
let index = 0
if found_mandatory
let string .= ' '
endif
continue
endif
" Look for [] and {} at current position
if currline[index] =~ '[[{]'
if(currdepth == 0) && (currline[index] =~ '{')
let found_mandatory = 1
end
let currdepth += 1
elseif currline[index] =~ '[]}]'
let currdepth -= 1
endif
" Look for the next interesting character
let next_index = match( currline, '[{}[\]]', index + 1 )
if next_index == -1
let next_index = currlinelen + 1
endif
" Update the string
if found_mandatory
let string .= currline[index:next_index-1]
endif
let index = next_index
endwhile
return string
endfunction
" }}}
" s:StripLine: strips whitespace and comments {{{
function! s:StripLine( string )
let string = matchstr( a:string, '^\s*\zs.*$')
let comment = match( string, '\\\@<!\%(\\\\\)*\zs%')
if comment > 0
let string = string[0:comment-1]
elseif comment == 0
let string = ''
endif
return string
endfunction
" }}}
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4

View File

@@ -0,0 +1,11 @@
% my long complicated macro. This is an example of how to set up a
% tex-macro for latex-suite. simply type in the lines as you would in
% latex. Place holders are allowed.
% NOTE: if you have filetype indentation turned on, then do not do
% formatting here. the indentation will follow automatically...
\begin{mycomplicatedenvironment}
\mycommand1{<++>}
\mycommand2{<+hint2+>}
\mycommand3{<++>}
\mycommand4{<++>}
\end{mycomplicatedenvironment}<++>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,729 @@
"=============================================================================
" File: mathmacros.vim
" Author: Mikolaj Machowski
" Created: Tue Apr 23 06:00 PM 2002 PST
"
" Description: macros for everything mathematical in latex.
"=============================================================================
if !(has('gui_running') && g:Tex_MathMenus && g:Tex_Menus)
finish
endif
let s:MathMenuName = g:Tex_MenuPrefix.'Ma&th.'
function! Tex_MathMenuRemove()
exe 'silent! aunmenu '.s:MathMenuName
endfunction
let s:pA = 'amenu <silent> 85 '.s:MathMenuName
" brackets and dollars {{{
exe s:pA.'\\&[\ \\] <plug><C-r>=IMAP_PutTextWithMovement("\\[<++>\\]<++>")<cr>'
exe s:pA.'\\&(\ \\) <plug><C-r>=IMAP_PutTextWithMovement("\\(<++>\\)<++>")<cr>'
exe s:pA.'&$\ $ <plug>$$'
exe s:pA.'-sepmath1- :'
" }}}
" MATH arrows {{{
let s:pA1 = s:pA."&Arrows."
exe s:pA1.'Leftarrow<Tab>⇐ <plug>\Leftarrow '
exe s:pA1.'leftarrow<Tab>← <plug>\leftarrow'
exe s:pA1.'longleftarrow<Tab>← <plug>\longleftarrow '
exe s:pA1.'Longleftarrow<Tab>⇐ <plug>\Longleftarrow '
exe s:pA1.'rightarrow<Tab>→ <plug>\rightarrow '
exe s:pA1.'longrightarrow<Tab>→ <plug>\longrightarrow '
exe s:pA1.'Rightarrow<Tab>⇒ <plug>\Rightarrow '
exe s:pA1.'Longrightarrow<Tab>⇒ <plug>\Longrightarrow '
exe s:pA1.'leftrightarrow<Tab>⇆ <plug>\leftrightarrow '
exe s:pA1.'longleftrightarrow<Tab>↔ <plug>\longleftrightarrow '
exe s:pA1.'Leftrightarrow<Tab>⇔ <plug>\Leftrightarrow '
exe s:pA1.'Longleftrightarrow<Tab>⇔ <plug>\Longleftrightarrow '
exe s:pA1.'uparrow<Tab>↑ <plug>\uparrow '
exe s:pA1.'Uparrow<Tab>⇑ <plug>\Uparrow '
exe s:pA1.'downarrow<Tab>↓ <plug>\downarrow '
exe s:pA1.'Downarrow<Tab>⇓ <plug>\Downarrow '
exe s:pA1.'updownarrow<Tab>↕ <plug>\updownarrow '
exe s:pA1.'Updownarrow<Tab>⇕ <plug>\Updownarrow '
exe s:pA1.'nearrow<Tab>↗ <plug>\nearrow '
exe s:pA1.'searrow<Tab>↘ <plug>\searrow '
exe s:pA1.'swarrow<Tab>↙ <plug>\swarrow '
exe s:pA1.'nwarrow<Tab>↖ <plug>\nwarrow '
exe s:pA1.'mapsto<Tab>↦ <plug>\mapsto '
exe s:pA1.'leadsto<Tab>↝ <plug>\leadsto '
exe s:pA1.'longmapsto<Tab>⇖ <plug>\longmapsto '
exe s:pA1.'hookleftarrow<Tab>↩ <plug>\hookleftarrow '
exe s:pA1.'hookrightarrow<Tab>↪ <plug>\hookrightarrow '
exe s:pA1.'leftharpoonup<Tab>↼ <plug>\leftharpoonup '
exe s:pA1.'leftharpoondown<Tab>↽ <plug>\leftharpoondown '
exe s:pA1.'rightharpoonup<Tab>⇀ <plug>\rightharpoonup '
exe s:pA1.'rightharpoondown<Tab>⇁ <plug>\rightharpoondown '
exe s:pA1.'rightleftharpoons<Tab>⇌ <plug>\rightleftharpoons '
exe s:pA1.'overleftarrow<Tab> <plug>\overleftarrow '
exe s:pA1.'overrightarrow<Tab> <plug>\overrightarrow '
exe s:pA1.'overleftrightarrow<Tab> <plug>\overleftrightarrow '
exe s:pA1.'underleftarrow<Tab> <plug>\underleftarrow '
exe s:pA1.'underrightarrow<Tab> <plug>\underrightarrow '
exe s:pA1.'underleftrightarrow<Tab> <plug>\underleftrightarrow '
exe s:pA1.'xleftarrow<Tab> <plug>\xleftarrow '
exe s:pA1.'xrightarrow<Tab> <plug>\xrightarrow '
" }}}
" MATH Arrows2 {{{
let s:pA1a = s:pA."Arrows2."
exe s:pA1a.'dashleftarrow<Tab>⇠ <plug>\dashleftarrow '
exe s:pA1a.'leftleftarrows<Tab>⇇ <plug>\leftleftarrows '
exe s:pA1a.'leftrightarrows<Tab>⇆ <plug>\leftrightarrows '
exe s:pA1a.'Lleftarrow<Tab>⇚ <plug>\Lleftarrow '
exe s:pA1a.'twoheadleftarrow<Tab>↞ <plug>\twoheadleftarrow '
exe s:pA1a.'leftarrowtail<Tab>↢ <plug>\leftarrowtail '
exe s:pA1a.'leftrightharpoons<Tab>⇋ <plug>\leftrightharpoons '
exe s:pA1a.'Lsh<Tab>↰ <plug>\Lsh '
exe s:pA1a.'looparrowleft<Tab>↫ <plug>\looparrowleft '
exe s:pA1a.'curvearrowleft<Tab>↶ <plug>\curvearrowleft '
exe s:pA1a.'circlearrowleft<Tab>↺ <plug>\circlearrowleft '
exe s:pA1a.'dashrightarrow<Tab>⇢ <plug>\dashrightarrow '
exe s:pA1a.'rightrightarrows<Tab>⇉ <plug>\rightrightarrows '
exe s:pA1a.'rightleftarrows<Tab>⇄ <plug>\rightleftarrows '
exe s:pA1a.'Rrightarrow<Tab>⇛ <plug>\Rrightarrow '
exe s:pA1a.'twoheadrightarrow<Tab>↠ <plug>\twoheadrightarrow '
exe s:pA1a.'rightarrowtail<Tab>↣ <plug>\rightarrowtail '
exe s:pA1a.'rightleftharpoons<Tab>⇌ <plug>\rightleftharpoons '
exe s:pA1a.'Rsh<Tab>↱ <plug>\Rsh '
exe s:pA1a.'looparrowright<Tab>↬ <plug>\looparrowright '
exe s:pA1a.'curvearrowright<Tab>↷ <plug>\curvearrowright '
exe s:pA1a.'circlearrowright<Tab>↻ <plug>\circlearrowright '
exe s:pA1a.'multimap<Tab>⊸ <plug>\multimap '
exe s:pA1a.'upuparrows<Tab>⇈ <plug>\upuparrows '
exe s:pA1a.'downdownarrows<Tab>⇊ <plug>\downdownarrows '
exe s:pA1a.'upharpoonleft<Tab>↿ <plug>\upharpoonleft '
exe s:pA1a.'upharpoonright<Tab>↾ <plug>\upharpoonright '
exe s:pA1a.'downharpoonleft<Tab>⇃ <plug>\downharpoonleft '
exe s:pA1a.'downharpoonright<Tab>⇂ <plug>\downharpoonright '
exe s:pA1a.'rightsquigarrow<Tab>⇝ <plug>\rightsquigarrow '
exe s:pA1a.'leftrightsquigarrow<Tab>↭ <plug>\leftrightsquigarrow '
" }}}
" MATH nArrows {{{
let s:pA1b = s:pA."&nArrows."
exe s:pA1b.'nleftarrow<Tab>↚ <plug>\nleftarrow '
exe s:pA1b.'nLeftarrow<Tab>⇍ <plug>\nLeftarrow '
exe s:pA1b.'nleftrightarrow<Tab>↮ <plug>\nleftrightarrow '
exe s:pA1b.'nLeftrightarrow<Tab>⇎ <plug>\nleftrightarrow '
exe s:pA1b.'nrightarrow<Tab>↛ <plug>\nrightarrow '
exe s:pA1b.'nRightarrow<Tab>⇏ <plug>\nRightarrow '
" }}}
" MATH Fonts {{{
let s:pA2a = s:pA."&MathFonts."
exe s:pA2a.'mathbf{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathbf{<++>}<++>")<cr>'
exe s:pA2a.'mathrm{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathrm{<++>}<++>")<cr>'
exe s:pA2a.'mathsf{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathsf{<++>}<++>")<cr>'
exe s:pA2a.'mathtt{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathtt{<++>}<++>")<cr>'
exe s:pA2a.'mathit{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathit{<++>}<++>")<cr>'
exe s:pA2a.'mathfrak{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathfrak{<++>}<++>")<cr>'
exe s:pA2a.'mathcal{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathcal{<++>}<++>")<cr>'
exe s:pA2a.'mathscr{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathscr{<++>}<++>")<cr>'
exe s:pA2a.'mathbb{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathbb{<++>}<++>")<cr>'
" }}}
" Greek Letters small {{{
let s:pA2 = s:pA."&Greek.&Small."
exe s:pA2.'alpha<Tab>`a\ \ α <plug>\alpha '
exe s:pA2.'beta<Tab>`b\ \ β <plug>\beta '
exe s:pA2.'gamma<Tab>`g\ \ γ <plug>\gamma '
exe s:pA2.'delta<Tab>`d\ \ δ <plug>\delta '
exe s:pA2.'epsilon<Tab>∊ <plug>\epsilon '
exe s:pA2.'varepsilon<Tab>`e\ \ ε <plug>\varepsilon '
exe s:pA2.'zeta<Tab>`z\ \ ζ <plug>\zeta '
exe s:pA2.'eta<Tab>`h\ \ η <plug>\eta '
exe s:pA2.'theta<Tab>`q\ \ θ <plug>\theta '
exe s:pA2.'vartheta<Tab>ϑ <plug>\vartheta '
exe s:pA2.'iota<Tab>`i\ \ ι <plug>\iota '
exe s:pA2.'kappa<Tab>`k\ \ κ <plug>\kappa '
exe s:pA2.'lambda<Tab>`l\ \ λ <plug>\lambda '
exe s:pA2.'mu<Tab>`m\ \ μ <plug>\mu '
exe s:pA2.'nu<Tab>`n\ \ ν <plug>\nu '
exe s:pA2.'xi<Tab>`x\ \ ξ <plug>\xi '
exe s:pA2.'pi<Tab>`p\ \ π <plug>\pi '
exe s:pA2.'varpi<Tab>ϖ <plug>\varpi '
exe s:pA2.'rho<Tab>`r\ \ ρ <plug>\rho '
exe s:pA2.'varrho<Tab>ϱ <plug>\varrho '
exe s:pA2.'sigma<Tab>`s\ \ σ <plug>\sigma '
exe s:pA2.'varsigma<Tab>`v\ \ ς <plug>\varsigma '
exe s:pA2.'tau<Tab>`t\ \ τ <plug>\tau '
exe s:pA2.'upsilon<Tab>`u\ \ υ <plug>\upsilon '
exe s:pA2.'phi<Tab>φ <plug>\phi '
exe s:pA2.'varphi<Tab>`f\ \ ϕ <plug>\varphi '
exe s:pA2.'chi<Tab>`c\ \ χ <plug>\chi '
exe s:pA2.'psi<Tab>`y\ \ ψ <plug>\psi '
exe s:pA2.'omega<Tab>`w\ \ ω <plug>\omega '
" }}}
" Greek Letters big {{{
let s:pA3 = s:pA.'&Greek.&Big.'
exe s:pA3.'Alpha<Tab>`A\ \ A <plug>\Alpha '
exe s:pA3.'Beta<Tab>`B\ \ B <plug>\Beta '
exe s:pA3.'Gamma<Tab>`G\ \ Γ <plug>\Gamma '
exe s:pA3.'Delta<Tab>`D\ \ Δ <plug>\Delta '
exe s:pA3.'Epsilon<Tab>`E\ \ E <plug>\Epsilon '
exe s:pA3.'Zeta<Tab>`Z\ \ Z <plug>\mathrm{Z} '
exe s:pA3.'Eta<Tab>`H\ \ H <plug>\Eta '
exe s:pA3.'Theta<Tab>Θ <plug>\Theta '
exe s:pA3.'Iota<Tab>I <plug>\mathrm{I} '
exe s:pA3.'Kappa<Tab>`K\ \ K <plug>\Kappa '
exe s:pA3.'Lambda<Tab>`L\ \ Λ <plug>\Lambda '
exe s:pA3.'Mu<Tab>`M\ \ M <plug>\Mu '
exe s:pA3.'Nu<Tab>`N\ \ N <plug>\Nu '
exe s:pA3.'Xi<Tab>`X\ \ Ξ <plug>\Xi '
exe s:pA3.'Pi<Tab>`P\ \ Π <plug>\Pi '
exe s:pA3.'Rho<Tab>`R\ \ P <plug>\Rho '
exe s:pA3.'Sigma<Tab>`S\ \ Σ <plug>\Sigma '
exe s:pA3.'Tau<Tab>`T\ \ T <plug>\Tau '
exe s:pA3.'Upsilon<Tab>`U\ \ Y <plug>\Upsilon '
exe s:pA3.'Phi<Tab>Φ <plug>\Phi '
exe s:pA3.'Chi<Tab>`C\ \ X <plug>\Chi '
exe s:pA3.'Psi<Tab>`Y\ \ Ψ <plug>\Psi '
exe s:pA3.'Omega<Tab>`W\ \ Ω <plug>\Omega '
" }}}
" BinaryRel1 {{{
let s:pA4 = s:pA."&BinaryRel1."
exe s:pA4.'ll<Tab>≪ <plug>\ll '
exe s:pA4.'lll<Tab>⋘ <plug>\lll '
exe s:pA4.'leqslant<Tab>≤ <plug>\leqslant '
exe s:pA4.'leq<Tab>≤ <plug>\leq '
exe s:pA4.'leqq<Tab>≦ <plug>\leqq '
exe s:pA4.'eqslantless<Tab>⋜ <plug>\eqslantless '
exe s:pA4.'lessdot<Tab>⋖ <plug>\lessdot '
exe s:pA4.'prec<Tab>≺ <plug>\prec '
exe s:pA4.'preceq<Tab>≼ <plug>\preceq '
exe s:pA4.'preccurlyeq<Tab>≼ <plug>\preccurlyeq '
exe s:pA4.'curlyeqprec<Tab>⋞ <plug>\curlyeqprec '
exe s:pA4.'lesssim<Tab>≲ <plug>\lesssim '
exe s:pA4.'lessapprox<Tab> <plug>\lessapprox '
exe s:pA4.'precsim<Tab>≾ <plug>\precsim '
exe s:pA4.'precapprox<Tab> <plug>\precapprox '
exe s:pA4.'in<Tab>∈ <plug>\in '
exe s:pA4.'subset<Tab>`(\ \ ⊂ <plug>\subset '
exe s:pA4.'Subset<Tab>`)\ \ ⋐ <plug>\Subset '
exe s:pA4.'subseteq<Tab>⊆ <plug>\subseteq '
exe s:pA4.'subseteqq<Tab> <plug>\subseteqq '
exe s:pA4.'sqsubset<Tab>⊏ <plug>\sqsubset '
exe s:pA4.'sqsubseteq<Tab>⊑ <plug>\sqsubseteq '
exe s:pA4.'smile<Tab>⌣ <plug>\smile '
exe s:pA4.'smallsmile<Tab>⌣ <plug>\smallsmile '
exe s:pA4.'parallel<Tab>∥ <plug>\parallel '
exe s:pA4.'shortparallel<Tab>∥ <plug>\shortparallel '
exe s:pA4.'dashv<Tab>⊣ <plug>\dashv '
exe s:pA4.'vdash<Tab>⊢ <plug>\vdash '
exe s:pA4.'vDash<Tab>⊨ <plug>\vDash '
exe s:pA4.'models<Tab>⊨ <plug>\models '
exe s:pA4.'therefore<Tab>∴ <plug>\therefore '
exe s:pA4.'backepsilon<Tab>∍ <plug>\backepsilon '
" }}}
" nBinaryRel1 {{{
let s:pA4a = s:pA."&nBinaryRel1."
exe s:pA4a.'nless<Tab>≮ <plug>\nless '
exe s:pA4a.'nleqslant<Tab>≰ <plug>\nleqslant '
exe s:pA4a.'nleq<Tab> <plug>\nleq '
exe s:pA4a.'lneq<Tab> <plug>\lneq '
exe s:pA4a.'nleqq<Tab> <plug>\nleqq '
exe s:pA4a.'lneqq<Tab>≨ <plug>\lneqq '
exe s:pA4a.'lvertneqq<Tab> <plug>\lvertneqq '
exe s:pA4a.'nprec<Tab>⊀ <plug>\nprec '
exe s:pA4a.'npreceq<Tab>⋠ <plug>\npreceq '
exe s:pA4a.'precneqq<Tab> <plug>\precneqq '
exe s:pA4a.'lnsim<Tab>⋦ <plug>\lnsim '
exe s:pA4a.'lnapprox<Tab> <plug>\lnapprox '
exe s:pA4a.'precnsim<Tab>⋨ <plug>\precnsim '
exe s:pA4a.'precnapprox<Tab> <plug>\precnapprox '
exe s:pA4a.'notin<Tab>∉ <plug>\notin '
exe s:pA4a.'nsubseteq<Tab>⊈ <plug>\nsubseteq '
exe s:pA4a.'varsubsetneq<Tab> <plug>\varsubsetneq '
exe s:pA4a.'subsetneq<Tab>⊊ <plug>\subsetneq '
exe s:pA4a.'nsubseteqq<Tab> <plug>\nsubseteqq '
exe s:pA4a.'varsubsetneqq<Tab> <plug>\varsubsetneqq '
exe s:pA4a.'subsetneqq<Tab>⊈ <plug>\subsetneqq '
exe s:pA4a.'nparallel<Tab>∦ <plug>\nparallel '
exe s:pA4a.'nshortparallel<Tab> <plug>\nshortparallel '
exe s:pA4a.'nvdash<Tab>⊬ <plug>\nvdash '
exe s:pA4a.'nvDash<Tab>⊭ <plug>\nvDash '
" }}}
" BinaryRel2 {{{
let s:pA5 = s:pA."&BinaryRel2."
exe s:pA5.'gg<Tab>≫ <plug>\gg '
exe s:pA5.'ggg<Tab>⋙ <plug>\ggg '
exe s:pA5.'gggtr<Tab>⋙ <plug>\gggtr '
exe s:pA5.'geqslant<Tab> <plug>\geqslant '
exe s:pA5.'geq<Tab>≥ <plug>\geq '
exe s:pA5.'geqq<Tab>≧ <plug>\geqq '
exe s:pA5.'eqslantgtr<Tab> <plug>\eqslantgtr '
exe s:pA5.'gtrdot<Tab>⋗ <plug>\gtrdot '
exe s:pA5.'succ<Tab>≻ <plug>\succ '
exe s:pA5.'succeq<Tab>≽ <plug>\succeq '
exe s:pA5.'succcurlyeq<Tab>≽ <plug>\succcurlyeq '
exe s:pA5.'curlyeqsucc<Tab>⋟ <plug>\curlyeqsucc '
exe s:pA5.'gtrsim<Tab>≳ <plug>\gtrsim '
exe s:pA5.'gtrapprox<Tab> <plug>\gtrapprox '
exe s:pA5.'succsim<Tab>≿ <plug>\succsim '
exe s:pA5.'succapprox<Tab> <plug>\succapprox '
exe s:pA5.'ni<Tab>∋ <plug>\ni '
exe s:pA5.'owns<Tab> <plug>\owns '
exe s:pA5.'supset<Tab>⊃ <plug>\supset '
exe s:pA5.'Supset<Tab>⋑ <plug>\Supset '
exe s:pA5.'supseteq<Tab>⊇ <plug>\supseteq '
exe s:pA5.'supseteqq<Tab> <plug>\supseteqq '
exe s:pA5.'sqsupset<Tab>⊐ <plug>\sqsupset '
exe s:pA5.'sqsupseteq<Tab>⊒ <plug>\sqsupseteq '
exe s:pA5.'frown<Tab>⌢ <plug>\frown '
exe s:pA5.'smallfrown<Tab>⌢ <plug>\smallfrown '
exe s:pA5.'mid<Tab> <plug>\mid '
exe s:pA5.'shortmid<Tab> <plug>\shortmid '
exe s:pA5.'between<Tab>≬ <plug>\between '
exe s:pA5.'Vdash<Tab>⊩ <plug>\Vdash '
exe s:pA5.'bowtie<Tab>⋈ <plug>\bowtie '
exe s:pA5.'Join<Tab>⋈ <plug>\Join '
exe s:pA5.'pitchfork<Tab>⋔ <plug>\pitchfork '
" }}}
" {{{ nBinaryRel2
let s:pA5a = s:pA."n&BinaryRel2." "TODO: dorobiæ logarytmy
exe s:pA5a.'ngtr<Tab>≯ <plug>\ngtr '
exe s:pA5a.'ngeqslant<Tab>≱ <plug>\ngeqslant '
exe s:pA5a.'ngeq<Tab> <plug>\ngeq '
exe s:pA5a.'gneq<Tab> <plug>\gneq '
exe s:pA5a.'ngeqq<Tab> <plug>\ngeqq '
exe s:pA5a.'gneqq<Tab>≩ <plug>\gneqq '
exe s:pA5a.'nsucc<Tab>⊁ <plug>\nsucc '
exe s:pA5a.'nsucceq<Tab>⋡ <plug>\nsucceq '
exe s:pA5a.'succneqq<Tab> <plug>\succneqq '
exe s:pA5a.'gnsim<Tab>⋧ <plug>\gnsim '
exe s:pA5a.'gnapprox<Tab> <plug>\gnapprox '
exe s:pA5a.'succnsim<Tab>⋩ <plug>\succnsim '
exe s:pA5a.'succnapprox<Tab> <plug>\succnapprox '
exe s:pA5a.'nsupseteq<Tab>⊉ <plug>\nsupseteq '
exe s:pA5a.'varsupsetneq<Tab> <plug>\varsupsetneq '
exe s:pA5a.'supsetneq<Tab>⊋ <plug>\supsetneq '
exe s:pA5a.'nsupseteqq<Tab> <plug>\nsupseteqq '
exe s:pA5a.'varsupsetneqq<Tab> <plug>\varsupsetneqq '
exe s:pA5a.'supsetneqq<Tab> <plug>\supsetneqq '
exe s:pA5a.'nmid<Tab>∤ <plug>\nmid '
exe s:pA5a.'nshortmid<Tab> <plug>\nshortmid '
exe s:pA5a.'nVdash<Tab>⊮ <plug>\nVdash '
" }}}
" {{{ BinaryRel3
let s:pA6 = s:pA."&BinaryRel3."
exe s:pA6.'doteq<Tab>≐ <plug>\doteq '
exe s:pA6.'circeq<Tab>≗ <plug>\circeq '
exe s:pA6.'eqcirc<Tab>≖ <plug>\eqcirc '
exe s:pA6.'risingdotseq<Tab>≓ <plug>\risingdotseq '
exe s:pA6.'doteqdot<Tab>≑ <plug>\doteqdot '
exe s:pA6.'Doteq<Tab>≑ <plug>\Doteq '
exe s:pA6.'fallingdotseq<Tab>≒ <plug>\fallingdotseq '
exe s:pA6.'triangleq<Tab>≜ <plug>\triangleq '
exe s:pA6.'bumpeq<Tab>≏ <plug>\bumpeq '
exe s:pA6.'Bumpeq<Tab>≎ <plug>\Bumpeq '
exe s:pA6.'equiv<Tab>`=\ \ ≡ <plug>\equiv '
exe s:pA6.'sim<Tab> <plug>\sim '
exe s:pA6.'thicksim<Tab> <plug>\thicksim '
exe s:pA6.'backsim<Tab>∽ <plug>\backsim '
exe s:pA6.'simeq<Tab>≃ <plug>\simeq '
exe s:pA6.'backsimeq<Tab>⋍ <plug>\backsimeq '
exe s:pA6.'cong<Tab>≅ <plug>\cong '
exe s:pA6.'approx<tab>=~\ \ ≈ <plug>\approx '
exe s:pA6.'thickapprox<Tab>≈ <plug>\thickapprox '
exe s:pA6.'approxeq<Tab>≊ <plug>\approxeq '
exe s:pA6.'blacktriangleleft<Tab>◀ <plug>\blacktriangleleft '
exe s:pA6.'vartriangleleft<Tab>⊲ <plug>\vartriangleleft '
exe s:pA6.'trianglelefteq<Tab>⊴ <plug>\trianglelefteq '
exe s:pA6.'blacktriangleright<Tab>▶ <plug>\blacktriangleright '
exe s:pA6.'vartriangleright<Tab>⊳ <plug>\vartriangleright '
exe s:pA6.'trianglerighteq<Tab>⊵ <plug>\trianglerighteq '
exe s:pA6.'perp<Tab>⊥ <plug>\perp '
exe s:pA6.'asymp<Tab>≍ <plug>\asymp '
exe s:pA6.'Vvdash<Tab>⊪ <plug>\Vvdash '
exe s:pA6.'propto<Tab>∝ <plug>\propto '
exe s:pA6.'varpropto<Tab>∝ <plug>\varpropto '
exe s:pA6.'because<Tab>∵ <plug>\because '
" }}}
" {{{ nBinaryRel3
let s:pA6a = s:pA."&nBinaryRel3."
exe s:pA6a.'neq<Tab>≠ <plug>\neq '
exe s:pA6a.'nsim<Tab>≁ <plug>\nsim '
exe s:pA6a.'ncong<Tab>≆ <plug>\ncong '
exe s:pA6a.'ntriangleleft<Tab>⋪ <plug>\ntriangleleft '
exe s:pA6a.'ntrianglelefteq<Tab>⋬ <plug>\ntrianglelefteq '
exe s:pA6a.'ntriangleright<Tab>⋫ <plug>\ntriangleright '
exe s:pA6a.'ntrianglerighteq<Tab>⋭ <plug>\ntrianglerighteq '
" }}}
" {{{ BinaryRel4
let s:pA7 = s:pA."&BinaryRel4."
exe s:pA7.'lessgtr<Tab>≶ <plug>\lessgtr '
exe s:pA7.'gtrless<Tab>≷ <plug>\gtrless '
exe s:pA7.'lesseqgtr<Tab>⋚ <plug>\lesseqgtr '
exe s:pA7.'gtreqless<Tab>⋛ <plug>\gtreqless '
exe s:pA7.'lesseqqgtr<Tab> <plug>\lesseqqgtr '
exe s:pA7.'gtreqqless<Tab> <plug>\gtreqqless '
" }}}
" {{{ BigOp
let s:pA8a = s:pA."&BigOp."
exe s:pA8a.'limits<Tab> <plug>\limits'
exe s:pA8a.'nolimits<Tab> <plug>\nolimits'
exe s:pA8a.'displaylimits<Tab> <plug>\displaylimits'
exe s:pA8a.'-seplimits- :'
exe s:pA8a.'bigcap<Tab>`-\ \ ⋂ <plug>\bigcap'
exe s:pA8a.'bigcup<Tab>`+\ \ <plug>\bigcup'
exe s:pA8a.'bigodot<Tab>⊙ <plug>\bigodot'
exe s:pA8a.'bigoplus<Tab>⊕ <plug>\bigoplus'
exe s:pA8a.'bigotimes<Tab>⊗ <plug>\bigotimes'
exe s:pA8a.'bigsqcup<Tab>⊔ <plug>\bigsqcup'
exe s:pA8a.'biguplus<Tab>⊎ <plug>\biguplus'
exe s:pA8a.'bigvee<Tab> <plug>\bigvee'
exe s:pA8a.'bigwedge<Tab>⋀ <plug>\bigwedge'
exe s:pA8a.'coprod<Tab>∐ <plug>\coprod'
exe s:pA8a.'int<Tab>∫ <plug>\int'
exe s:pA8a.'iint<Tab>∬ <plug>\int'
exe s:pA8a.'iiint<Tab>∭ <plug>\int'
exe s:pA8a.'oint<Tab>∮ <plug>\oint'
exe s:pA8a.'prod<Tab>∏ <plug>\prod'
exe s:pA8a.'sum<Tab>∑ <plug>\sum'
" }}}
" {{{ BinaryOp
let s:pA8 = s:pA."&BinaryOp."
exe s:pA8.'pm<Tab>± <plug>\pm '
exe s:pA8.'mp<Tab>∓ <plug>\mp '
exe s:pA8.'dotplus<Tab>∔ <plug>\dotplus '
exe s:pA8.'cdot<Tab>`.\ \ ⋅ <plug>\cdot '
exe s:pA8.'centerdot<Tab>⋅ <plug>\centerdot '
exe s:pA8.'times<Tab>`*\ \ × <plug>\times '
exe s:pA8.'ltimes<Tab>⋉ <plug>\ltimes '
exe s:pA8.'rtimes<Tab>⋊ <plug>\rtimes '
exe s:pA8.'leftthreetimes<Tab>⋋ <plug>\leftthreetimes '
exe s:pA8.'rightthreetimes<Tab>⋌ <plug>\rightthreetimes '
exe s:pA8.'div<Tab>÷ <plug>\div '
exe s:pA8.'divideontimes<Tab>⋇ <plug>\divideontimes '
exe s:pA8.'bmod<Tab> <plug>\bmod '
exe s:pA8.'ast<Tab> <plug>\ast '
exe s:pA8.'star<Tab>⋆ <plug>\star '
exe s:pA8.'setminus<Tab>`\\\ \ <plug>\setminus '
exe s:pA8.'smallsetminus<Tab> <plug>\smallsetminus '
exe s:pA8.'diamond<Tab>⋄ <plug>\diamond '
exe s:pA8.'wr<Tab>≀ <plug>\wr '
exe s:pA8.'intercal<Tab>⊺ <plug>\intercal '
exe s:pA8.'circ<Tab>`@\ \ ∘ <plug>\circ '
exe s:pA8.'bigcirc<Tab>○ <plug>\bigcirc '
exe s:pA8.'bullet<Tab>∙ <plug>\bullet '
exe s:pA8.'cap<Tab>∩ <plug>\cap '
exe s:pA8.'Cap<Tab>⋒ <plug>\Cap '
exe s:pA8.'cup<Tab> <plug>\cup '
exe s:pA8.'Cup<Tab>⋓ <plug>\Cup '
exe s:pA8.'sqcap<Tab>⊓ <plug>\sqcap '
exe s:pA8.'sqcup<Tab>⊔ <plug>\sqcup'
exe s:pA8.'amalg<Tab> <plug>\amalg '
exe s:pA8.'uplus<Tab>⊎ <plug>\uplus '
exe s:pA8.'triangleleft<Tab>◁ <plug>\triangleleft '
exe s:pA8.'triangleright<Tab>▷ <plug>\triangleright '
exe s:pA8.'bigtriangleup<Tab>△ <plug>\bigtriangleup '
exe s:pA8.'bigtriangledown<Tab>▽ <plug>\bigtriangledown '
exe s:pA8.'vee<Tab> <plug>\vee '
exe s:pA8.'veebar<Tab>⊻ <plug>\veebar '
exe s:pA8.'curlyvee<Tab>⋎ <plug>\curlyvee '
exe s:pA8.'wedge<Tab>`&\ \ ∧ <plug>\wedge '
exe s:pA8.'barwedge<Tab>⊼ <plug>\barwedge '
exe s:pA8.'doublebarwedge<Tab>⌆ <plug>\doublebarwedge '
exe s:pA8.'curlywedge<Tab>⋏ <plug>\curlywedge '
exe s:pA8.'oplus<Tab>⊕ <plug>\oplus '
exe s:pA8.'ominus<Tab>⊖ <plug>\ominus '
exe s:pA8.'otimes<Tab>⊗ <plug>\otimes '
exe s:pA8.'oslash<Tab>⊘ <plug>\oslash '
exe s:pA8.'boxplus<Tab>⊞ <plug>\boxplus '
exe s:pA8.'boxminus<Tab>⊟ <plug>\boxminus '
exe s:pA8.'boxtimes<Tab>⊠ <plug>\boxtimes '
exe s:pA8.'boxdot<Tab>⊡ <plug>\boxdot '
exe s:pA8.'odot<Tab>⊙ <plug>\odot '
exe s:pA8.'circledast<Tab>⊛ <plug>\circledast '
exe s:pA8.'circleddash<Tab>⊝ <plug>\circleddash '
exe s:pA8.'circledcirc<Tab>⊚ <plug>\circledcirc '
exe s:pA8.'dagger<Tab>† <plug>\dagger '
exe s:pA8.'ddagger<Tab>‡ <plug>\ddagger '
exe s:pA8.'lhd<Tab>⊲ <plug>\lhd '
exe s:pA8.'unlhd<Tab>⊴ <plug>\unlhd '
exe s:pA8.'rhd<Tab>⊳ <plug>\rhd '
exe s:pA8.'unrhd<Tab>⊵ <plug>\unrhd '
" }}}
" {{{ Other1
let s:pA9 = s:pA."&Other1."
exe s:pA9.'hat<Tab>â <plug>\hat '
exe s:pA9.'check<Tab>ǎ <plug>\check '
exe s:pA9.'grave<Tab>à <plug>\grave '
exe s:pA9.'acute<Tab>á <plug>\acute '
exe s:pA9.'dot<Tab>ȧ <plug>\dot '
exe s:pA9.'ddot<Tab>ä <plug>\ddot '
exe s:pA9.'tilde<Tab>`,\ \ ã <plug>\tilde '
exe s:pA9.'breve<Tab>ă <plug>\breve '
exe s:pA9.'bar<Tab>ā <plug>\bar '
exe s:pA9.'vec<Tab>a⃗ <plug>\vec '
exe s:pA9.'aleph<Tab>א <plug>\aleph '
exe s:pA9.'hbar<Tab>ℏ <plug>\hbar '
exe s:pA9.'imath<Tab> <plug>\imath '
exe s:pA9.'jmath<Tab> <plug>\jmath '
exe s:pA9.'ell<Tab> <plug>\ell '
exe s:pA9.'wp<Tab>℘ <plug>\wp '
exe s:pA9.'Re<Tab> <plug>\Re '
exe s:pA9.'Im<Tab> <plug>\Im '
exe s:pA9.'partial<Tab>∂ <plug>\partial '
exe s:pA9.'infty<Tab>`8\ \ ∞ <plug>\infty '
exe s:pA9.'prime<Tab> <plug>\prime '
exe s:pA9.'emptyset<Tab>∅ <plug>\emptyset '
exe s:pA9.'nabla<Tab>∇ <plug>\nabla '
exe s:pA9.'surd<Tab>√ <plug>\surd '
exe s:pA9.'top<Tab> <plug>\top '
exe s:pA9.'bot<Tab>⊥ <plug>\bot '
exe s:pA9.'angle<Tab>∠ <plug>\angle '
exe s:pA9.'triangle<Tab>△ <plug>\triangle '
exe s:pA9.'backslash<Tab>\\ <plug>\backslash '
exe s:pA9.'forall<Tab>∀ <plug>\forall '
exe s:pA9.'exists<Tab>∃ <plug>\exists '
exe s:pA9.'neg<Tab>¬ <plug>\neg '
exe s:pA9.'flat<Tab>♭ <plug>\flat '
exe s:pA9.'natural<Tab>♮ <plug>\natural '
exe s:pA9.'sharp<Tab>♯ <plug>\sharp '
exe s:pA9.'clubsuit<Tab>♣ <plug>\clubsuit '
exe s:pA9.'diamondsuit<Tab>♢ <plug>\diamondsuit '
exe s:pA9.'heartsuit<Tab>♡ <plug>\heartsuit '
exe s:pA9.'spadesuit<Tab>♠ <plug>\spadesuit '
exe s:pA9.'S<Tab>§ <plug>\S '
exe s:pA9.'P<Tab>¶ <plug>\P'
" }}}
" {{{ MathCreating
let s:pA10 = s:pA."&MathCreating."
exe s:pA10.'not<Tab> <plug>\not'
exe s:pA10.'mkern<Tab> <plug>\mkern'
exe s:pA10.'mathbin<Tab> <plug>\mathbin'
exe s:pA10.'mathrel<Tab> <plug>\mathrel'
exe s:pA10.'stackrel<Tab> <plug>\stackrel'
exe s:pA10.'mathord<Tab> <plug>\mathord'
" }}}
" {{{ Styles
let s:pA11 = s:pA."&Styles."
exe s:pA11.'displaystyle<Tab> <plug>\displaystyle'
exe s:pA11.'textstyle<Tab> <plug>\textstyle'
exe s:pA11.'scritpstyle<Tab> <plug>\scritpstyle'
exe s:pA11.'scriptscriptstyle<Tab> <plug>\scriptscriptstyle'
" }}}
" {{{ MathDiacritics
let s:pA12 = s:pA."&MathDiacritics."
exe s:pA12.'acute{}<Tab>á <plug><C-r>=IMAP_PutTextWithMovement("\\acute{<++>}<++>")<cr>'
exe s:pA12.'bar{}<Tab>`_\ \ ā <plug><C-r>=IMAP_PutTextWithMovement("\\bar{<++>}<++>")<cr>'
exe s:pA12.'breve{}<Tab>ă <plug><C-r>=IMAP_PutTextWithMovement("\\breve{<++>}<++>")<cr>'
exe s:pA12.'check{}<Tab>ǎ <plug><C-r>=IMAP_PutTextWithMovement("\\check{<++>}<++>")<cr>'
exe s:pA12.'ddot{}<Tab>`:\ \ ä <plug><C-r>=IMAP_PutTextWithMovement("\\ddot{<++>}<++>")<cr>'
exe s:pA12.'dot{}<Tab>`;\ \ ȧ <plug><C-r>=IMAP_PutTextWithMovement("\\dot{<++>}<++>")<cr>'
exe s:pA12.'grave{}<Tab>à <plug><C-r>=IMAP_PutTextWithMovement("\\grave{<++>}<++>")<cr>'
exe s:pA12.'hat{}<Tab>`^\ \ â <plug><C-r>=IMAP_PutTextWithMovement("\\hat{<++>}<++>")<cr>'
exe s:pA12.'tilde{}<tab>`~\ \ ã <plug><C-r>=IMAP_PutTextWithMovement("\\tilde{<++>}<++>")<cr>'
exe s:pA12.'vec{}<Tab>a⃗ <plug><C-r>=IMAP_PutTextWithMovement("\\vec{<++>}<++>")<cr>'
exe s:pA12.'widehat{}<Tab> <plug><C-r>=IMAP_PutTextWithMovement("\\widehat{<++>}<++>")<cr>'
exe s:pA12.'widetilde{}<Tab> <plug><C-r>=IMAP_PutTextWithMovement("\\widetilde{<++>}<++>")<cr>'
exe s:pA12.'imath<Tab> <plug><C-r>=IMAP_PutTextWithMovement("\\imath")<cr>'
exe s:pA12.'jmath<Tab> <plug><C-r>=IMAP_PutTextWithMovement("\\jmath")<cr>'
" }}}
" {{{ OverlineAndCo
let s:pA13 = s:pA."&OverlineAndCo."
exe s:pA13.'overline{} <plug><C-r>=IMAP_PutTextWithMovement("\\overline{}")<cr>'
exe s:pA13.'underline{} <plug><C-r>=IMAP_PutTextWithMovement("\\underline{}")<cr>'
exe s:pA13.'overrightarrow{} <plug><C-r>=IMAP_PutTextWithMovement("\\overrightarrow{}")<cr>'
exe s:pA13.'overleftarrow{} <plug><C-r>=IMAP_PutTextWithMovement("\\overleftarrow{}")<cr>'
exe s:pA13.'overbrace{} <plug><C-r>=IMAP_PutTextWithMovement("\\overbrace{}")<cr>'
exe s:pA13.'underbrace{} <plug><C-r>=IMAP_PutTextWithMovement("\\underbrace{}")<cr>'
" }}}
" {{{ Symbols1
let s:pA14a = s:pA."&Symbols1."
exe s:pA14a.'forall<Tab>∀ <plug>\forall '
exe s:pA14a.'exists<Tab>∃ <plug>\exists '
exe s:pA14a.'nexists<Tab>∄ <plug>\nexists '
exe s:pA14a.'neg<Tab>¬ <plug>\neg '
exe s:pA14a.'top<Tab> <plug>\top '
exe s:pA14a.'bot<Tab>⊥ <plug>\bot '
exe s:pA14a.'emptyset<Tab>∅ <plug>\emptyset '
exe s:pA14a.'varnothing<Tab>⌀ <plug>\varnothing '
exe s:pA14a.'infty<Tab>∞ <plug>\infty '
exe s:pA14a.'aleph<Tab>א <plug>\aleph '
exe s:pA14a.'beth<Tab>ב <plug>\beth '
exe s:pA14a.'gimel<Tab>ג <plug>\gimel '
exe s:pA14a.'daleth<Tab>ד <plug>\daleth '
exe s:pA14a.'hbar<Tab> <plug>\hbar '
exe s:pA14a.'hslash<Tab>ℏ <plug>\hslash '
exe s:pA14a.'diagup<Tab> <plug>\diagup '
exe s:pA14a.'vert<Tab>\| <plug>\vert '
exe s:pA14a.'Vert<Tab>∥ <plug>\Vert '
exe s:pA14a.'backslash<Tab>\\ <plug>\backslash '
exe s:pA14a.'diagdown<Tab> <plug>\diagdown '
exe s:pA14a.'Bbbk<Tab>ᵕ <plug>\Bbbk '
exe s:pA14a.'P<Tab>¶ <plug>\P '
exe s:pA14a.'S<Tab>§ <plug>\S '
" }}}
" {{{ Symbols2
let s:pA14b = s:pA."&Symbols2."
exe s:pA14b.'# <plug>\# '
exe s:pA14b.'% <plug>\% '
exe s:pA14b.'_<Tab> <plug>\_ '
exe s:pA14b.'$ <plug>\$ '
exe s:pA14b.'& <plug>\& '
exe s:pA14b.'imath<Tab> <plug>\imath '
exe s:pA14b.'jmath<Tab> <plug>\jmath '
exe s:pA14b.'ell<Tab> <plug>\ell '
exe s:pA14b.'wp<Tab>℘ <plug>\wp '
exe s:pA14b.'Re<Tab> <plug>\Re '
exe s:pA14b.'Im<Tab> <plug>\Im '
exe s:pA14b.'prime<Tab> <plug>\prime '
exe s:pA14b.'backprime<Tab> <plug>\backprime '
exe s:pA14b.'nabla<Tab>∇ <plug>\nabla '
exe s:pA14b.'surd<Tab>√ <plug>\surd '
exe s:pA14b.'flat<Tab>♭ <plug>\flat '
exe s:pA14b.'sharp<Tab>♯ <plug>\sharp '
exe s:pA14b.'natural<Tab>♮ <plug>\natural '
exe s:pA14b.'eth<Tab>ð <plug>\eth '
exe s:pA14b.'bigstar<Tab>★ <plug>\bigstar '
exe s:pA14b.'circledS<Tab>Ⓢ <plug>\circledS '
exe s:pA14b.'Finv<Tab>Ⅎ <plug>\Finv '
exe s:pA14b.'dag<Tab>† <plug>\dag '
exe s:pA14b.'ddag<Tab>‡ <plug>\ddag '
" }}}
" {{{ Symbols3
let s:pA14c = s:pA."&Symbols3."
exe s:pA14c.'angle<Tab>∠ <plug>\angle '
exe s:pA14c.'measuredangle<Tab>∡ <plug>\measuredangle '
exe s:pA14c.'sphericalangle<Tab>∢ <plug>\sphericalangle '
exe s:pA14c.'spadesuit<Tab>♠ <plug>\spadesuit '
exe s:pA14c.'heartsuit<Tab>♡ <plug>\heartsuit '
exe s:pA14c.'diamondsuit<Tab>♢ <plug>\diamondsuit '
exe s:pA14c.'clubsuit<Tab>♣ <plug>\clubsuit '
exe s:pA14c.'lozenge<Tab>◊ <plug>\lozenge '
exe s:pA14c.'blacklozenge<Tab>◆ <plug>\blacklozenge '
exe s:pA14c.'Diamond<Tab>◇ <plug>\Diamond '
exe s:pA14c.'triangle<Tab>△ <plug>\triangle '
exe s:pA14c.'vartriangle<Tab>△ <plug>\vartriangle '
exe s:pA14c.'blacktriangle<Tab>▲ <plug>\blacktriangle '
exe s:pA14c.'triangledown<Tab>▽ <plug>\triangledown '
exe s:pA14c.'blacktriangledown<Tab>▼ <plug>\blacktriangledown '
exe s:pA14c.'Box<Tab>□ <plug>\Box '
exe s:pA14c.'square<Tab>□ <plug>\square '
exe s:pA14c.'blacksquare<Tab>■ <plug>\blacksquare '
exe s:pA14c.'complement<Tab>∁ <plug>\complement '
exe s:pA14c.'mho<Tab>℧ <plug>\mho '
exe s:pA14c.'Game<Tab>⅁ <plug>\Game '
exe s:pA14c.'partial<Tab>`6\ \ ∂ <plug>\partial '
exe s:pA14c.'smallint<Tab>∫ <plug>\smallint '
" }}}
" {{{ Logic
let s:pA15 = s:pA."&Logic."
exe s:pA15.'lnot<Tab>¬ <plug>\lnot '
exe s:pA15.'lor<Tab> <plug>\lor '
exe s:pA15.'land<Tab>∧ <plug>\land '
" }}}
" {{{ Limits1
let s:pA16 = s:pA."&Limits1."
exe s:pA16.'left<Tab>( <plug>\left'
exe s:pA16.'right<Tab>) <plug>\right'
exe s:pA16.'-sepbigl- :'
exe s:pA16.'bigl<Tab> <plug>\bigl'
exe s:pA16.'Bigl<Tab> <plug>\Bigl'
exe s:pA16.'biggl<Tab> <plug>\biggl'
exe s:pA16.'Biggl<Tab> <plug>\Biggl'
exe s:pA16.'-sepbigr- :'
exe s:pA16.'bigr<Tab> <plug>\bigr'
exe s:pA16.'Bigr<Tab> <plug>\Bigr'
exe s:pA16.'biggr<Tab> <plug>\biggr'
exe s:pA16.'Biggr<Tab> <plug>\Biggr'
exe s:pA16.'-sepbig- :'
exe s:pA16.'big<Tab> <plug>\big'
exe s:pA16.'bigm<Tab> <plug>\bigm'
exe s:pA16.'-sepfloor- :'
exe s:pA16.'lfloor<Tab>⌊ <plug>\lfloor '
exe s:pA16.'lceil<Tab>⌈ <plug>\lceil '
exe s:pA16.'rfloor<Tab>⌋ <plug>\rfloor '
exe s:pA16.'rceil<Tab>⌉ <plug>\rceil '
exe s:pA16.'-sepangle- :'
exe s:pA16.'langle<Tab>〈 <plug>\langle '
exe s:pA16.'rangle<Tab>〉 <plug>\rangle '
" }}}
" {{{ Limits2
let s:pA16a = s:pA."&Limits2."
exe s:pA16a.'ulcorner<Tab>⌜ <plug>\ulcorner '
exe s:pA16a.'urcorner<Tab>⌝ <plug>\urcorner '
exe s:pA16a.'llcorner<Tab>⌞ <plug>\llcorner '
exe s:pA16a.'rlcorner<Tab>⌟ <plug>\rlcorner '
exe s:pA16a.'-sepcorner- :'
exe s:pA16a.'vert<Tab>\| <plug>\vert '
exe s:pA16a.'Vert<Tab>∥ <plug>\Vert '
exe s:pA16a.'lvert<Tab> <plug>\lvert '
exe s:pA16a.'lVert<Tab> <plug>\lVert '
exe s:pA16a.'rvert<Tab> <plug>\rvert '
exe s:pA16a.'rVert<Tab> <plug>\rVert '
exe s:pA16a.'uparrow<Tab>↑ <plug>\uparrow '
exe s:pA16a.'Uparrow<Tab>⇑ <plug>\Uparrow '
exe s:pA16a.'downarrow<Tab>↓ <plug>\downarrow '
exe s:pA16a.'Downarrow<Tab>⇓ <plug>\Downarrow '
exe s:pA16a.'updownarrow<Tab>↕ <plug>\updownarrow '
exe s:pA16a.'Updownarrow<Tab>⇕ <plug>\Updownarrow '
exe s:pA16a.'lgroup<Tab> <plug>\lgroup '
exe s:pA16a.'rgroup<Tab> <plug>\rgroup '
exe s:pA16a.'lmoustache<Tab>∫ <plug>\lmoustache '
exe s:pA16a.'rmoustache<Tab> <plug>\rmoustache '
exe s:pA16a.'arrowvert<Tab> <plug>\arrowvert '
exe s:pA16a.'Arrowvert<Tab> <plug>\Arrowvert '
exe s:pA16a.'bracevert<Tab> <plug>\bracevert '
" }}}
" {{{ Log-likes
let s:pA17 = s:pA."Lo&g-likes."
exe s:pA17.'arccos<Tab> <plug>\arccos '
exe s:pA17.'arcsin<Tab> <plug>\arcsin '
exe s:pA17.'arctan<Tab> <plug>\arctan '
exe s:pA17.'arg<Tab> <plug>\arg '
exe s:pA17.'cos<Tab> <plug>\cos '
exe s:pA17.'cosh<Tab> <plug>\cosh '
exe s:pA17.'cot<Tab> <plug>\cot '
exe s:pA17.'coth<Tab> <plug>\coth '
exe s:pA17.'csc<Tab> <plug>\csc '
exe s:pA17.'deg<Tab> <plug>\deg '
exe s:pA17.'det<Tab> <plug>\det '
exe s:pA17.'dim<Tab> <plug>\dim '
exe s:pA17.'exp<Tab> <plug>\exp '
exe s:pA17.'gcd<Tab> <plug>\gcd '
exe s:pA17.'hom<Tab> <plug>\hom '
exe s:pA17.'inf<Tab> <plug>\inf '
exe s:pA17.'injlim<Tab> <plug>\injlim '
exe s:pA17.'ker<Tab> <plug>\ker '
exe s:pA17.'lg<Tab> <plug>\lg '
exe s:pA17.'lim<Tab> <plug>\lim '
exe s:pA17.'liminf<Tab> <plug>\liminf '
exe s:pA17.'limsup<Tab> <plug>\limsup '
exe s:pA17.'ln<Tab> <plug>\ln '
exe s:pA17.'log<Tab> <plug>\log '
exe s:pA17.'max<Tab> <plug>\max '
exe s:pA17.'min<Tab> <plug>\min '
exe s:pA17.'Pr<Tab> <plug>\Pr '
exe s:pA17.'projlim<Tab> <plug>\projlim '
exe s:pA17.'sec<Tab> <plug>\sec '
exe s:pA17.'sin<Tab> <plug>\sin '
exe s:pA17.'sinh<Tab> <plug>\sinh '
exe s:pA17.'sup<Tab> <plug>\sup '
exe s:pA17.'tan<Tab> <plug>\tan '
exe s:pA17.'tanh<Tab> <plug>\tanh '
exe s:pA17.'varlimsup<Tab> <plug>\varlimsup '
exe s:pA17.'varliminf<Tab> <plug>\varliminf '
exe s:pA17.'varinjlim<Tab> <plug>\varinjlim '
exe s:pA17.'varprojlim<Tab> <plug>\varprojlim '
" }}}
" {{{ MathSpacing
let s:pA18 = s:pA."MathSpacing."
exe s:pA18.', <plug>\, '
exe s:pA18.': <plug>\: '
exe s:pA18.'; <plug>\; '
exe s:pA18.'[space] <plug>\ '
exe s:pA18.'quad<Tab> <plug>\quad '
exe s:pA18.'qquad<Tab> <plug>\qquad '
exe s:pA18.'! <plug>\! '
exe s:pA18.'thinspace<Tab> <plug>\thinspace '
exe s:pA18.'medspace<Tab> <plug>\medspace '
exe s:pA18.'thickspace<Tab> <plug>\thickspace '
exe s:pA18.'negthinspace<Tab> <plug>\negthinspace '
exe s:pA18.'negmedspace<Tab> <plug>\negmedspace '
exe s:pA18.'negthickspace<Tab> <plug>\negthickspace '
" 1}}}
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4:fenc=utf-8

View File

@@ -0,0 +1,730 @@
"=============================================================================
" File: mathmacros.vim
" Author: Mikolaj Machowski
" Created: Tue Apr 23 06:00 PM 2002 PST
"
" Description: macros for everything mathematical in latex.
"=============================================================================
if !(has('gui_running') && g:Tex_MathMenus && g:Tex_Menus)
finish
endif
let s:MathMenuName = g:Tex_MenuPrefix.'&Math.'
function! Tex_MathMenuRemove()
exe 'silent! aunmenu '.s:MathMenuName
endfunction
let s:pA = 'amenu <silent> '.g:Tex_NextMenuLocation.' '.s:MathMenuName
let g:Tex_NextMenuLocation = g:Tex_NextMenuLocation + 1
" brackets and dollars {{{
exe s:pA.'\\&[\ \\] <plug><C-r>=IMAP_PutTextWithMovement("\\[<++>\\]<++>")<cr>'
exe s:pA.'\\&(\ \\) <plug><C-r>=IMAP_PutTextWithMovement("\\(<++>\\)<++>")<cr>'
exe s:pA.'&$\ $ <plug>$$'
exe s:pA.'-sepmath1- :'
" }}}
" MATH arrows {{{
let s:pA1 = s:pA."&Arrows."
exe s:pA1.'Leftarrow <plug>\leftarrow '
exe s:pA1.'leftarrow <plug>\leftarrow'
exe s:pA1.'longleftarrow <plug>\longleftarrow '
exe s:pA1.'Leftarrow <plug>\Leftarrow '
exe s:pA1.'Longleftarrow <plug>\Longleftarrow '
exe s:pA1.'rightarrow <plug>\rightarrow '
exe s:pA1.'longrightarrow <plug>\longrightarrow '
exe s:pA1.'Rightarrow <plug>\Rightarrow '
exe s:pA1.'Longrightarrow <plug>\Longrightarrow '
exe s:pA1.'leftrightarrow <plug>\leftrightarrow '
exe s:pA1.'longleftrightarrow <plug>\longleftrightarrow '
exe s:pA1.'Leftrightarrow <plug>\Leftrightarrow '
exe s:pA1.'Longleftrightarrow <plug>\Longleftrightarrow '
exe s:pA1.'uparrow <plug>\uparrow '
exe s:pA1.'Uparrow <plug>\Uparrow '
exe s:pA1.'downarrow <plug>\downarrow '
exe s:pA1.'Downarrow <plug>\Downarrow '
exe s:pA1.'updownarrow <plug>\updownarrow '
exe s:pA1.'Updownarrow <plug>\Updownarrow '
exe s:pA1.'nearrow <plug>\nearrow '
exe s:pA1.'searrow <plug>\searrow '
exe s:pA1.'swarrow <plug>\swarrow '
exe s:pA1.'nwarrow <plug>\nwarrow '
exe s:pA1.'mapsto <plug>\mapsto '
exe s:pA1.'leadsto <plug>\leadsto '
exe s:pA1.'longmapsto <plug>\longmapsto '
exe s:pA1.'hookleftarrow <plug>\hookleftarrow '
exe s:pA1.'hookrightarrow <plug>\hookrightarrow '
exe s:pA1.'leftharpoonup <plug>\leftharpoonup '
exe s:pA1.'leftharpoondown <plug>\leftharpoondown '
exe s:pA1.'rightharpoonup <plug>\rightharpoonup '
exe s:pA1.'rightharpoondown <plug>\rightharpoondown '
exe s:pA1.'rightleftharpoons <plug>\rightleftharpoons '
exe s:pA1.'overleftarrow <plug>\overleftarrow '
exe s:pA1.'overrightarrow <plug>\overrightarrow '
exe s:pA1.'overleftrightarrow <plug>\overleftrightarrow '
exe s:pA1.'underleftarrow <plug>\underleftarrow '
exe s:pA1.'underrightarrow <plug>\underrightarrow '
exe s:pA1.'underleftrightarrow <plug>\underleftrightarrow '
exe s:pA1.'xleftarrow <plug>\xleftarrow '
exe s:pA1.'xrightarrow <plug>\xrightarrow '
" }}}
" MATH nArrows {{{
let s:pA1a = s:pA."&nArrows."
exe s:pA1a.'nleftarrow <plug>\nleftarrow '
exe s:pA1a.'nLeftarrow <plug>\nLeftarrow '
exe s:pA1a.'nleftrightarrow <plug>\nleftrightarrow '
exe s:pA1a.'nrightarrow <plug>\nrightarrow '
exe s:pA1a.'nRightarrow <plug>\nRightarrow '
" }}}
" MATH Arrows2 {{{
let s:pA1a = s:pA."Arrows2."
exe s:pA1a.'dashleftarrow <plug>\dashleftarrow '
exe s:pA1a.'leftleftarrows <plug>\leftleftarrows '
exe s:pA1a.'leftrightarrows <plug>\leftrightarrows '
exe s:pA1a.'Lleftarrow <plug>\Lleftarrow '
exe s:pA1a.'twoheadleftarrow <plug>\twoheadleftarrow '
exe s:pA1a.'leftarrowtail <plug>\leftarrowtail '
exe s:pA1a.'leftrightharpoons <plug>\leftrightharpoons '
exe s:pA1a.'Lsh <plug>\Lsh '
exe s:pA1a.'looparrowleft <plug>\looparrowleft '
exe s:pA1a.'curvearrowleft <plug>\curvearrowleft '
exe s:pA1a.'circlearrowleft <plug>\circlearrowleft '
exe s:pA1a.'dashrightarrow <plug>\dashrightarrow '
exe s:pA1a.'rightrightarrows <plug>\rightrightarrows '
exe s:pA1a.'rightleftarrows <plug>\rightleftarrows '
exe s:pA1a.'Rrightarrow <plug>\Rrightarrow '
exe s:pA1a.'twoheadrightarrow <plug>\twoheadrightarrow '
exe s:pA1a.'rightarrowtail <plug>\rightarrowtail '
exe s:pA1a.'rightleftharpoons <plug>\rightleftharpoons '
exe s:pA1a.'Rsh <plug>\Rsh '
exe s:pA1a.'looparrowright <plug>\looparrowright '
exe s:pA1a.'curvearrowright <plug>\curvearrowright '
exe s:pA1a.'circlearrowright <plug>\circlearrowright '
exe s:pA1a.'multimap <plug>\multimap '
exe s:pA1a.'upuparrows <plug>\upuparrows '
exe s:pA1a.'downdownarrows <plug>\downdownarrows '
exe s:pA1a.'upharpoonleft <plug>\upharpoonleft '
exe s:pA1a.'upharpoonright <plug>\upharpoonright '
exe s:pA1a.'downharpoonleft <plug>\downharpoonleft '
exe s:pA1a.'downharpoonright <plug>\downharpoonright '
exe s:pA1a.'rightsquigarrow <plug>\rightsquigarrow '
exe s:pA1a.'leftrightsquigarrow <plug>\leftrightsquigarrow '
" }}}
" MATH Fonts {{{
let s:pA2a = s:pA."&MathFonts."
exe s:pA2a.'mathbf{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathbf{<++>}<++>")<cr>'
exe s:pA2a.'mathrm{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathrm{<++>}<++>")<cr>'
exe s:pA2a.'mathsf{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathsf{<++>}<++>")<cr>'
exe s:pA2a.'mathtt{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathtt{<++>}<++>")<cr>'
exe s:pA2a.'mathit{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathit{<++>}<++>")<cr>'
exe s:pA2a.'mathfrak{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathfrak{<++>}<++>")<cr>'
exe s:pA2a.'mathcal{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathcal{<++>}<++>")<cr>'
exe s:pA2a.'mathscr{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathscr{<++>}<++>")<cr>'
exe s:pA2a.'mathbb{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathbb{<++>}<++>")<cr>'
" }}}
" Greek Letters small {{{
let s:pA2 = s:pA."&Greek.&Small."
exe s:pA2.'alpha<Tab>`a <plug>\alpha '
exe s:pA2.'beta<Tab>`b <plug>\beta '
exe s:pA2.'gamma<Tab>`g <plug>\gamma '
exe s:pA2.'delta<Tab>`d <plug>\delta '
exe s:pA2.'epsilon <plug>\epsilon '
exe s:pA2.'varepsilon<Tab>`e <plug>\varepsilon '
exe s:pA2.'zeta<Tab>`z <plug>\zeta '
exe s:pA2.'eta<Tab>`h <plug>\eta '
exe s:pA2.'theta<Tab>`q <plug>\theta '
exe s:pA2.'vartheta <plug>\vartheta '
exe s:pA2.'iota<Tab>`i <plug>\iota '
exe s:pA2.'kappa<Tab>`k <plug>\kappa '
exe s:pA2.'lambda<Tab>`l <plug>\lambda '
exe s:pA2.'mu<Tab>`m <plug>\mu '
exe s:pA2.'nu<Tab>`n <plug>\nu '
exe s:pA2.'xi<Tab>`x <plug>\xi '
exe s:pA2.'pi<Tab>`p <plug>\pi '
exe s:pA2.'varpi <plug>\varpi '
exe s:pA2.'rho<Tab>`r <plug>\rho '
exe s:pA2.'varrho <plug>\varrho '
exe s:pA2.'sigma<Tab>`s <plug>\sigma '
exe s:pA2.'varsigma<Tab>`v <plug>\varsigma '
exe s:pA2.'tau<Tab>`t <plug>\tau '
exe s:pA2.'upsilon<Tab>`u <plug>\upsilon '
exe s:pA2.'phi <plug>\phi '
exe s:pA2.'varphi<Tab>`f <plug>\varphi '
exe s:pA2.'chi<Tab>`c <plug>\chi '
exe s:pA2.'psi<Tab>`y <plug>\psi '
exe s:pA2.'omega<Tab>`w <plug>\omega '
" }}}
" Greek Letters big {{{
let s:pA3 = s:pA.'&Greek.&Big.'
exe s:pA3.'Alpha<Tab>`A <plug>\Alpha '
exe s:pA3.'Beta<Tab>`B <plug>\Beta '
exe s:pA3.'Gamma<Tab>`G <plug>\Gamma '
exe s:pA3.'Delta<Tab>`D <plug>\Delta '
exe s:pA3.'Epsilon<Tab>`E <plug>\Epsilon '
exe s:pA3.'Zeta<Tab>`Z <plug>\mathrm{Z} '
exe s:pA3.'Eta<Tab>`H <plug>\Eta '
exe s:pA3.'Theta <plug>\Theta '
exe s:pA3.'Iota <plug>\mathrm{I} '
exe s:pA3.'Kappa<Tab>`K <plug>\Kappa '
exe s:pA3.'Lambda<Tab>`L <plug>\Lambda '
exe s:pA3.'Mu<Tab>`M <plug>\Mu '
exe s:pA3.'Nu<Tab>`N <plug>\Nu '
exe s:pA3.'Xi<Tab>`X <plug>\Xi '
exe s:pA3.'Pi<Tab>`P <plug>\Pi '
exe s:pA3.'Rho<Tab>`R <plug>\Rho '
exe s:pA3.'Sigma<Tab>`S <plug>\Sigma '
exe s:pA3.'Tau<Tab>`T <plug>\Tau '
exe s:pA3.'Upsilon<Tab>`U <plug>\Upsilon '
exe s:pA3.'Phi <plug>\Phi '
exe s:pA3.'Chi<Tab>`C <plug>\Chi '
exe s:pA3.'Psi<Tab>`Y <plug>\Psi '
exe s:pA3.'Omega<Tab>`W <plug>\Omega '
" }}}
" BinaryRel1 {{{
let s:pA4 = s:pA."&BinaryRel1."
exe s:pA4.'ll <plug>\ll '
exe s:pA4.'lll <plug>\lll '
exe s:pA4.'leqslant <plug>\leqslant '
exe s:pA4.'leq <plug>\leq '
exe s:pA4.'leqq <plug>\leqq '
exe s:pA4.'eqslantless <plug>\eqslantless '
exe s:pA4.'lessdot <plug>\lessdot '
exe s:pA4.'prec <plug>\prec '
exe s:pA4.'preceq <plug>\preceq '
exe s:pA4.'preccurlyeq <plug>\preccurlyeq '
exe s:pA4.'curlyeqprec <plug>\curlyeqprec '
exe s:pA4.'lesssim <plug>\lesssim '
exe s:pA4.'lessapprox <plug>\lessapprox '
exe s:pA4.'precsim <plug>\precsim '
exe s:pA4.'precapprox <plug>\precapprox '
exe s:pA4.'in <plug>\in '
exe s:pA4.'subset<Tab>`( <plug>\subset '
exe s:pA4.'Subset<Tab>`) <plug>\Subset '
exe s:pA4.'subseteq <plug>\subseteq '
exe s:pA4.'subseteqq <plug>\subseteqq '
exe s:pA4.'sqsubset <plug>\sqsubset '
exe s:pA4.'sqsubseteq <plug>\sqsubseteq '
exe s:pA4.'smile <plug>\smile '
exe s:pA4.'smallsmile <plug>\smallsmile '
exe s:pA4.'parallel <plug>\parallel '
exe s:pA4.'shortparallel <plug>\shortparallel '
exe s:pA4.'dashv <plug>\dashv '
exe s:pA4.'vdash <plug>\vdash '
exe s:pA4.'vDash <plug>\vDash '
exe s:pA4.'models <plug>\models '
exe s:pA4.'therefore <plug>\therefore '
exe s:pA4.'backepsilon <plug>\backepsilon '
" }}}
" nBinaryRel1 {{{
let s:pA4a = s:pA."&nBinaryRel1."
exe s:pA4a.'nless <plug>\nless '
exe s:pA4a.'nleqslant <plug>\nleqslant '
exe s:pA4a.'nleq <plug>\nleq '
exe s:pA4a.'lneq <plug>\lneq '
exe s:pA4a.'nleqq <plug>\nleqq '
exe s:pA4a.'lneqq <plug>\lneqq '
exe s:pA4a.'lvertneqq <plug>\lvertneqq '
exe s:pA4a.'nprec <plug>\nprec '
exe s:pA4a.'npreceq <plug>\npreceq '
exe s:pA4a.'precneqq <plug>\precneqq '
exe s:pA4a.'lnsim <plug>\lnsim '
exe s:pA4a.'lnapprox <plug>\lnapprox '
exe s:pA4a.'precnsim <plug>\precnsim '
exe s:pA4a.'precnapprox <plug>\precnapprox '
exe s:pA4a.'notin <plug>\notin '
exe s:pA4a.'nsubseteq <plug>\nsubseteq '
exe s:pA4a.'varsubsetneq <plug>\varsubsetneq '
exe s:pA4a.'subsetneq <plug>\subsetneq '
exe s:pA4a.'nsubseteqq <plug>\nsubseteqq '
exe s:pA4a.'varsubsetneqq <plug>\varsubsetneqq '
exe s:pA4a.'subsetneqq <plug>\subsetneqq '
exe s:pA4a.'nparallel <plug>\nparallel '
exe s:pA4a.'nshortparallel <plug>\nshortparallel '
exe s:pA4a.'nvdash <plug>\nvdash '
exe s:pA4a.'nvDash <plug>\nvDash '
" }}}
" BinaryRel2 {{{
let s:pA5 = s:pA."&BinaryRel2."
exe s:pA5.'gg <plug>\gg '
exe s:pA5.'ggg <plug>\ggg '
exe s:pA5.'gggtr <plug>\gggtr '
exe s:pA5.'geqslant <plug>\geqslant '
exe s:pA5.'geq <plug>\geq '
exe s:pA5.'geqq <plug>\geqq '
exe s:pA5.'eqslantgtr <plug>\eqslantgtr '
exe s:pA5.'gtrdot <plug>\gtrdot '
exe s:pA5.'succ <plug>\succ '
exe s:pA5.'succeq <plug>\succeq '
exe s:pA5.'succcurlyeq <plug>\succcurlyeq '
exe s:pA5.'curlyeqsucc <plug>\curlyeqsucc '
exe s:pA5.'gtrsim <plug>\gtrsim '
exe s:pA5.'gtrapprox <plug>\gtrapprox '
exe s:pA5.'succsim <plug>\succsim '
exe s:pA5.'succapprox <plug>\succapprox '
exe s:pA5.'ni <plug>\ni '
exe s:pA5.'owns <plug>\owns '
exe s:pA5.'supset <plug>\supset '
exe s:pA5.'Supset <plug>\Supset '
exe s:pA5.'supseteq <plug>\supseteq '
exe s:pA5.'supseteqq <plug>\supseteqq '
exe s:pA5.'sqsupset <plug>\sqsupset '
exe s:pA5.'sqsupseteq <plug>\sqsupseteq '
exe s:pA5.'frown <plug>\frown '
exe s:pA5.'smallfrown <plug>\smallfrown '
exe s:pA5.'mid <plug>\mid '
exe s:pA5.'shortmid <plug>\shortmid '
exe s:pA5.'between <plug>\between '
exe s:pA5.'Vdash <plug>\Vdash '
exe s:pA5.'bowtie <plug>\bowtie '
exe s:pA5.'Join <plug>\Join '
exe s:pA5.'pitchfork <plug>\pitchfork '
" }}}
" {{{ nBinaryRel2
let s:pA5a = s:pA."n&BinaryRel2." "TODO: dorobi<62> logarytmy
exe s:pA5a.'ngtr <plug>\ngtr '
exe s:pA5a.'ngeqslant <plug>\ngeqslant '
exe s:pA5a.'ngeq <plug>\ngeq '
exe s:pA5a.'gneq <plug>\gneq '
exe s:pA5a.'ngeqq <plug>\ngeqq '
exe s:pA5a.'gneqq <plug>\gneqq '
exe s:pA5a.'nsucc <plug>\nsucc '
exe s:pA5a.'nsucceq <plug>\nsucceq '
exe s:pA5a.'succneqq <plug>\succneqq '
exe s:pA5a.'gnsim <plug>\gnsim '
exe s:pA5a.'gnapprox <plug>\gnapprox '
exe s:pA5a.'succnsim <plug>\succnsim '
exe s:pA5a.'succnapprox <plug>\succnapprox '
exe s:pA5a.'nsupseteq <plug>\nsupseteq '
exe s:pA5a.'varsupsetneq <plug>\varsupsetneq '
exe s:pA5a.'supsetneq <plug>\supsetneq '
exe s:pA5a.'nsupseteqq <plug>\nsupseteqq '
exe s:pA5a.'varsupsetneqq <plug>\varsupsetneqq '
exe s:pA5a.'supsetneqq <plug>\supsetneqq '
exe s:pA5a.'nmid <plug>\nmid '
exe s:pA5a.'nshortmid <plug>\nshortmid '
exe s:pA5a.'nVdash <plug>\nVdash '
" }}}
" {{{ BinaryRel3
let s:pA6 = s:pA."&BinaryRel3."
exe s:pA6.'doteq <plug>\doteq '
exe s:pA6.'circeq <plug>\circeq '
exe s:pA6.'eqcirc <plug>\eqcirc '
exe s:pA6.'risingdotseq <plug>\risingdotseq '
exe s:pA6.'doteqdot <plug>\doteqdot '
exe s:pA6.'Doteq <plug>\Doteq '
exe s:pA6.'fallingdotseq <plug>\fallingdotseq '
exe s:pA6.'triangleq <plug>\triangleq '
exe s:pA6.'bumpeq <plug>\bumpeq '
exe s:pA6.'Bumpeq <plug>\Bumpeq '
exe s:pA6.'equiv<Tab>`= <plug>\equiv '
exe s:pA6.'sim <plug>\sim '
exe s:pA6.'thicksim <plug>\thicksim '
exe s:pA6.'backsim <plug>\backsim '
exe s:pA6.'simeq <plug>\simeq '
exe s:pA6.'backsimeq <plug>\backsimeq '
exe s:pA6.'cong <plug>\cong '
exe s:pA6.'approx<tab>=~ <plug>\approx '
exe s:pA6.'thickapprox <plug>\thickapprox '
exe s:pA6.'approxeq <plug>\approxeq '
exe s:pA6.'blacktriangleleft <plug>\blacktriangleleft '
exe s:pA6.'vartriangleleft <plug>\vartriangleleft '
exe s:pA6.'trianglelefteq <plug>\trianglelefteq '
exe s:pA6.'blacktriangleright <plug>\blacktriangleright '
exe s:pA6.'vartriangleright <plug>\vartriangleright '
exe s:pA6.'trianglerighteq <plug>\trianglerighteq '
exe s:pA6.'perp <plug>\perp '
exe s:pA6.'asymp <plug>\asymp '
exe s:pA6.'Vvdash <plug>\Vvdash '
exe s:pA6.'propto <plug>\propto '
exe s:pA6.'varpropto <plug>\varpropto '
exe s:pA6.'because <plug>\because '
" }}}
" {{{ nBinaryRel3
let s:pA6a = s:pA."&nBinaryRel3."
exe s:pA6a.'neq <plug>\neq '
exe s:pA6a.'nsim <plug>\nsim '
exe s:pA6a.'ncong <plug>\ncong '
exe s:pA6a.'ntriangleleft <plug>\ntriangleleft '
exe s:pA6a.'ntrianglelefteq <plug>\ntrianglelefteq '
exe s:pA6a.'ntriangleright <plug>\ntriangleright '
exe s:pA6a.'ntrianglerighteq <plug>\ntrianglerighteq '
" }}}
" {{{ BinaryRel4
let s:pA7 = s:pA."&BinaryRel4."
exe s:pA7.'lessgtr <plug>\lessgtr '
exe s:pA7.'gtrless <plug>\gtrless '
exe s:pA7.'lesseqgtr <plug>\lesseqgtr '
exe s:pA7.'gtreqless <plug>\gtreqless '
exe s:pA7.'lesseqqgtr <plug>\lesseqqgtr '
exe s:pA7.'gtreqqless <plug>\gtreqqless '
" }}}
" {{{ BigOp
let s:pA8a = s:pA."&BigOp."
exe s:pA8a.'limits <plug>\limits'
exe s:pA8a.'nolimits <plug>\nolimits'
exe s:pA8a.'displaylimits <plug>\displaylimits'
exe s:pA8a.'-seplimits- :'
exe s:pA8a.'bigcap<Tab>`- <plug>\bigcap'
exe s:pA8a.'bigcup<Tab>`+ <plug>\bigcup'
exe s:pA8a.'bigodot <plug>\bigodot'
exe s:pA8a.'bigoplus <plug>\bigoplus'
exe s:pA8a.'bigotimes <plug>\bigotimes'
exe s:pA8a.'bigsqcup <plug>\bigsqcup'
exe s:pA8a.'biguplus <plug>\biguplus'
exe s:pA8a.'bigvee <plug>\bigvee'
exe s:pA8a.'bigwedge <plug>\bigwedge'
exe s:pA8a.'coprod <plug>\coprod'
exe s:pA8a.'int <plug>\int'
exe s:pA8a.'oint <plug>\oint'
exe s:pA8a.'prod <plug>\prod'
exe s:pA8a.'sum <plug>\sum'
" }}}
" {{{ BinaryOp
let s:pA8 = s:pA."&BinaryOp."
exe s:pA8.'pm <plug>\pm '
exe s:pA8.'mp <plug>\mp '
exe s:pA8.'dotplus <plug>\dotplus '
exe s:pA8.'cdot<Tab>`. <plug>\cdot '
exe s:pA8.'centerdot <plug>\centerdot '
exe s:pA8.'times<Tab>`* <plug>\times '
exe s:pA8.'ltimes <plug>\ltimes '
exe s:pA8.'rtimes <plug>\rtimes '
exe s:pA8.'leftthreetimes <plug>\leftthreetimes '
exe s:pA8.'rightthreetimes <plug>\rightthreetimes '
exe s:pA8.'div <plug>\div '
exe s:pA8.'divideontimes <plug>\divideontimes '
exe s:pA8.'bmod <plug>\bmod '
exe s:pA8.'ast <plug>\ast '
exe s:pA8.'star <plug>\star '
exe s:pA8.'setminus<Tab>`\\ <plug>\setminus '
exe s:pA8.'smallsetminus <plug>\smallsetminus '
exe s:pA8.'diamond <plug>\diamond '
exe s:pA8.'wr <plug>\wr '
exe s:pA8.'intercal <plug>\intercal '
exe s:pA8.'circ<Tab>`@ <plug>\circ '
exe s:pA8.'bigcirc <plug>\bigcirc '
exe s:pA8.'bullet <plug>\bullet '
exe s:pA8.'cap <plug>\cap '
exe s:pA8.'Cap <plug>\Cap '
exe s:pA8.'cup <plug>\cup '
exe s:pA8.'Cup <plug>\Cup '
exe s:pA8.'sqcap <plug>\sqcap '
exe s:pA8.'sqcup <plug>\sqcup'
exe s:pA8.'amalg <plug>\amalg '
exe s:pA8.'uplus <plug>\uplus '
exe s:pA8.'triangleleft <plug>\triangleleft '
exe s:pA8.'triangleright <plug>\triangleright '
exe s:pA8.'bigtriangleup <plug>\bigtriangleup '
exe s:pA8.'bigtriangledown <plug>\bigtriangledown '
exe s:pA8.'vee <plug>\vee '
exe s:pA8.'veebar <plug>\veebar '
exe s:pA8.'curlyvee <plug>\curlyvee '
exe s:pA8.'wedge<Tab>`& <plug>\wedge '
exe s:pA8.'barwedge <plug>\barwedge '
exe s:pA8.'doublebarwedge <plug>\doublebarwedge '
exe s:pA8.'curlywedge <plug>\curlywedge '
exe s:pA8.'oplus <plug>\oplus '
exe s:pA8.'ominus <plug>\ominus '
exe s:pA8.'otimes <plug>\otimes '
exe s:pA8.'oslash <plug>\oslash '
exe s:pA8.'boxplus <plug>\boxplus '
exe s:pA8.'boxminus <plug>\boxminus '
exe s:pA8.'boxtimes <plug>\boxtimes '
exe s:pA8.'boxdot <plug>\boxdot '
exe s:pA8.'odot <plug>\odot '
exe s:pA8.'circledast <plug>\circledast '
exe s:pA8.'circleddash <plug>\circleddash '
exe s:pA8.'circledcirc <plug>\circledcirc '
exe s:pA8.'dagger <plug>\dagger '
exe s:pA8.'ddagger <plug>\ddagger '
exe s:pA8.'lhd <plug>\lhd '
exe s:pA8.'unlhd <plug>\unlhd '
exe s:pA8.'rhd <plug>\rhd '
exe s:pA8.'unrhd <plug>\unrhd '
" }}}
" {{{ Other1
let s:pA9 = s:pA."&Other1."
exe s:pA9.'hat <plug>\hat '
exe s:pA9.'check <plug>\check '
exe s:pA9.'grave <plug>\grave '
exe s:pA9.'acute <plug>\acute '
exe s:pA9.'dot <plug>\dot '
exe s:pA9.'ddot <plug>\ddot '
exe s:pA9.'tilde<Tab>`, <plug>\tilde '
exe s:pA9.'breve <plug>\breve '
exe s:pA9.'bar <plug>\bar '
exe s:pA9.'vec <plug>\vec '
exe s:pA9.'aleph <plug>\aleph '
exe s:pA9.'hbar <plug>\hbar '
exe s:pA9.'imath <plug>\imath '
exe s:pA9.'jmath <plug>\jmath '
exe s:pA9.'ell <plug>\ell '
exe s:pA9.'wp <plug>\wp '
exe s:pA9.'Re <plug>\Re '
exe s:pA9.'Im <plug>\Im '
exe s:pA9.'partial <plug>\partial '
exe s:pA9.'infty<Tab>`8 <plug>\infty '
exe s:pA9.'prime <plug>\prime '
exe s:pA9.'emptyset <plug>\emptyset '
exe s:pA9.'nabla <plug>\nabla '
exe s:pA9.'surd <plug>\surd '
exe s:pA9.'top <plug>\top '
exe s:pA9.'bot <plug>\bot '
exe s:pA9.'angle <plug>\angle '
exe s:pA9.'triangle <plug>\triangle '
exe s:pA9.'backslash <plug>\backslash '
exe s:pA9.'forall <plug>\forall '
exe s:pA9.'exists <plug>\exists '
exe s:pA9.'neg <plug>\neg '
exe s:pA9.'flat <plug>\flat '
exe s:pA9.'natural <plug>\natural '
exe s:pA9.'sharp <plug>\sharp '
exe s:pA9.'clubsuit <plug>\clubsuit '
exe s:pA9.'diamondsuit <plug>\diamondsuit '
exe s:pA9.'heartsuit <plug>\heartsuit '
exe s:pA9.'spadesuit <plug>\spadesuit '
exe s:pA9.'S <plug>\S '
exe s:pA9.'P <plug>\P'
" }}}
" {{{ MathCreating
let s:pA10 = s:pA."&MathCreating."
exe s:pA10.'not <plug>\not'
exe s:pA10.'mkern <plug>\mkern'
exe s:pA10.'mathbin <plug>\mathbin'
exe s:pA10.'mathrel <plug>\mathrel'
exe s:pA10.'stackrel <plug>\stackrel'
exe s:pA10.'mathord <plug>\mathord'
" }}}
" {{{ Styles
let s:pA11 = s:pA."&Styles."
exe s:pA11.'displaystyle <plug>\displaystyle'
exe s:pA11.'textstyle <plug>\textstyle'
exe s:pA11.'scritpstyle <plug>\scritpstyle'
exe s:pA11.'scriptscriptstyle <plug>\scriptscriptstyle'
" }}}
" {{{ MathDiacritics
let s:pA12 = s:pA."&MathDiacritics."
exe s:pA12.'acute{} <plug><C-r>=IMAP_PutTextWithMovement("\\acute{<++>}<++>")<cr>'
exe s:pA12.'bar{}<Tab>`_ <plug><C-r>=IMAP_PutTextWithMovement("\\bar{<++>}<++>")<cr>'
exe s:pA12.'breve{} <plug><C-r>=IMAP_PutTextWithMovement("\\breve{<++>}<++>")<cr>'
exe s:pA12.'check{} <plug><C-r>=IMAP_PutTextWithMovement("\\check{<++>}<++>")<cr>'
exe s:pA12.'ddot{}<Tab>`: <plug><C-r>=IMAP_PutTextWithMovement("\\ddot{<++>}<++>")<cr>'
exe s:pA12.'dot{}<Tab>`; <plug><C-r>=IMAP_PutTextWithMovement("\\dot{<++>}<++>")<cr>'
exe s:pA12.'grave{} <plug><C-r>=IMAP_PutTextWithMovement("\\grave{<++>}<++>")<cr>'
exe s:pA12.'hat{}<Tab>`^ <plug><C-r>=IMAP_PutTextWithMovement("\\hat{<++>}<++>")<cr>'
exe s:pA12.'tilde{}<tab>`~ <plug><C-r>=IMAP_PutTextWithMovement("\\tilde{<++>}<++>")<cr>'
exe s:pA12.'vec{} <plug><C-r>=IMAP_PutTextWithMovement("\\vec{<++>}<++>")<cr>'
exe s:pA12.'widehat{} <plug><C-r>=IMAP_PutTextWithMovement("\\widehat{<++>}<++>")<cr>'
exe s:pA12.'widetilde{} <plug><C-r>=IMAP_PutTextWithMovement("\\widetilde{<++>}<++>")<cr>'
exe s:pA12.'imath <plug><C-r>=IMAP_PutTextWithMovement("\\imath")<cr>'
exe s:pA12.'jmath <plug><C-r>=IMAP_PutTextWithMovement("\\jmath")<cr>'
" }}}
" {{{ OverlineAndCo
let s:pA13 = s:pA."&OverlineAndCo."
exe s:pA13.'overline{} <plug><C-r>=IMAP_PutTextWithMovement("\\overline{}")<cr>'
exe s:pA13.'underline{} <plug><C-r>=IMAP_PutTextWithMovement("\\underline{}")<cr>'
exe s:pA13.'overrightarrow{} <plug><C-r>=IMAP_PutTextWithMovement("\\overrightarrow{}")<cr>'
exe s:pA13.'overleftarrow{} <plug><C-r>=IMAP_PutTextWithMovement("\\overleftarrow{}")<cr>'
exe s:pA13.'overbrace{} <plug><C-r>=IMAP_PutTextWithMovement("\\overbrace{}")<cr>'
exe s:pA13.'underbrace{} <plug><C-r>=IMAP_PutTextWithMovement("\\underbrace{}")<cr>'
" }}}
" {{{ Symbols1
let s:pA14a = s:pA."&Symbols1."
exe s:pA14a.'forall <plug>\forall '
exe s:pA14a.'exists <plug>\exists '
exe s:pA14a.'nexists <plug>\nexists '
exe s:pA14a.'neg <plug>\neg '
exe s:pA14a.'top <plug>\top '
exe s:pA14a.'bot <plug>\bot '
exe s:pA14a.'emptyset <plug>\emptyset '
exe s:pA14a.'varnothing <plug>\varnothing '
exe s:pA14a.'infty <plug>\infty '
exe s:pA14a.'aleph <plug>\aleph '
exe s:pA14a.'beth <plug>\beth '
exe s:pA14a.'gimel <plug>\gimel '
exe s:pA14a.'daleth <plug>\daleth '
exe s:pA14a.'hbar <plug>\hbar '
exe s:pA14a.'hslash <plug>\hslash '
exe s:pA14a.'diagup <plug>\diagup '
exe s:pA14a.'vert <plug>\vert '
exe s:pA14a.'Vert <plug>\Vert '
exe s:pA14a.'backslash <plug>\backslash '
exe s:pA14a.'diagdown <plug>\diagdown '
exe s:pA14a.'Bbbk <plug>\Bbbk '
exe s:pA14a.'P <plug>\P '
exe s:pA14a.'S <plug>\S '
" }}}
" {{{ Symbols2
let s:pA14b = s:pA."&Symbols2."
exe s:pA14b.'# <plug>\# '
exe s:pA14b.'% <plug>\% '
exe s:pA14b.'_ <plug>\_ '
exe s:pA14b.'$ <plug>\$ '
exe s:pA14b.'& <plug>\& '
exe s:pA14b.'imath <plug>\imath '
exe s:pA14b.'jmath <plug>\jmath '
exe s:pA14b.'ell <plug>\ell '
exe s:pA14b.'wp <plug>\wp '
exe s:pA14b.'Re <plug>\Re '
exe s:pA14b.'Im <plug>\Im '
exe s:pA14b.'prime <plug>\prime '
exe s:pA14b.'backprime <plug>\backprime '
exe s:pA14b.'nabla <plug>\nabla '
exe s:pA14b.'surd <plug>\surd '
exe s:pA14b.'flat <plug>\flat '
exe s:pA14b.'sharp <plug>\sharp '
exe s:pA14b.'natural <plug>\natural '
exe s:pA14b.'eth <plug>\eth '
exe s:pA14b.'bigstar <plug>\bigstar '
exe s:pA14b.'circledS <plug>\circledS '
exe s:pA14b.'Finv <plug>\Finv '
exe s:pA14b.'dag <plug>\dag '
exe s:pA14b.'ddag <plug>\ddag '
" }}}
" {{{ Symbols3
let s:pA14c = s:pA."&Symbols3."
exe s:pA14c.'angle <plug>\angle '
exe s:pA14c.'measuredangle <plug>\measuredangle '
exe s:pA14c.'sphericalangle <plug>\sphericalangle '
exe s:pA14c.'spadesuit <plug>\spadesuit '
exe s:pA14c.'heartsuit <plug>\heartsuit '
exe s:pA14c.'diamondsuit <plug>\diamondsuit '
exe s:pA14c.'clubsuit <plug>\clubsuit '
exe s:pA14c.'lozenge <plug>\lozenge '
exe s:pA14c.'blacklozenge <plug>\blacklozenge '
exe s:pA14c.'Diamond <plug>\Diamond '
exe s:pA14c.'triangle <plug>\triangle '
exe s:pA14c.'vartriangle <plug>\vartriangle '
exe s:pA14c.'blacktriangle <plug>\blacktriangle '
exe s:pA14c.'triangledown <plug>\triangledown '
exe s:pA14c.'blacktriangledown <plug>\blacktriangledown '
exe s:pA14c.'Box <plug>\Box '
exe s:pA14c.'square <plug>\square '
exe s:pA14c.'blacksquare <plug>\blacksquare '
exe s:pA14c.'complement <plug>\complement '
exe s:pA14c.'mho <plug>\mho '
exe s:pA14c.'Game <plug>\Game '
exe s:pA14c.'partial<Tab>`6 <plug>\partial '
exe s:pA14c.'smallint <plug>\smallint '
" }}}
" {{{ Logic
let s:pA15 = s:pA."&Logic."
exe s:pA15.'lnot <plug>\lnot '
exe s:pA15.'lor <plug>\lor '
exe s:pA15.'land <plug>\land '
" }}}
" {{{ Limits1
let s:pA16 = s:pA."&Limits1."
exe s:pA16.'left <plug>\left'
exe s:pA16.'right <plug>\right'
exe s:pA16.'-sepbigl- :'
exe s:pA16.'bigl <plug>\bigl'
exe s:pA16.'Bigl <plug>\Bigl'
exe s:pA16.'biggl <plug>\biggl'
exe s:pA16.'Biggl <plug>\Biggl'
exe s:pA16.'-sepbigr- :'
exe s:pA16.'bigr <plug>\bigr'
exe s:pA16.'Bigr <plug>\Bigr'
exe s:pA16.'biggr <plug>\biggr'
exe s:pA16.'Biggr <plug>\Biggr'
exe s:pA16.'-sepbig- :'
exe s:pA16.'big <plug>\big'
exe s:pA16.'bigm <plug>\bigm'
exe s:pA16.'-sepfloor- :'
exe s:pA16.'lfloor <plug>\lfloor '
exe s:pA16.'lceil <plug>\lceil '
exe s:pA16.'rfloor <plug>\rfloor '
exe s:pA16.'rceil <plug>\rceil '
exe s:pA16.'-sepangle- :'
exe s:pA16.'langle <plug>\langle '
exe s:pA16.'rangle <plug>\rangle '
" }}}
" {{{ Limits2
let s:pA16a = s:pA."&Limits2."
exe s:pA16a.'ulcorner <plug>\ulcorner '
exe s:pA16a.'urcorner <plug>\urcorner '
exe s:pA16a.'llcorner <plug>\llcorner '
exe s:pA16a.'rlcorner <plug>\rlcorner '
exe s:pA16a.'-sepcorner- :'
exe s:pA16a.'vert <plug>\vert '
exe s:pA16a.'Vert <plug>\Vert '
exe s:pA16a.'lvert <plug>\lvert '
exe s:pA16a.'lVert <plug>\lVert '
exe s:pA16a.'rvert <plug>\rvert '
exe s:pA16a.'rVert <plug>\rVert '
exe s:pA16a.'uparrow <plug>\uparrow '
exe s:pA16a.'Uparrow <plug>\Uparrow '
exe s:pA16a.'downarrow <plug>\downarrow '
exe s:pA16a.'Downarrow <plug>\Downarrow '
exe s:pA16a.'updownarrow <plug>\updownarrow '
exe s:pA16a.'Updownarrow <plug>\Updownarrow '
exe s:pA16a.'lgroup <plug>\lgroup '
exe s:pA16a.'rgroup <plug>\rgroup '
exe s:pA16a.'lmoustache <plug>\lmoustache '
exe s:pA16a.'rmoustache <plug>\rmoustache '
exe s:pA16a.'arrowvert <plug>\arrowvert '
exe s:pA16a.'Arrowvert <plug>\Arrowvert '
exe s:pA16a.'bracevert <plug>\bracevert '
" }}}
" {{{ Log-likes
let s:pA17 = s:pA."Lo&g-likes."
exe s:pA17.'arccos <plug>\arccos '
exe s:pA17.'arcsin <plug>\arcsin '
exe s:pA17.'arctan <plug>\arctan '
exe s:pA17.'arg <plug>\arg '
exe s:pA17.'cos <plug>\cos '
exe s:pA17.'cosh <plug>\cosh '
exe s:pA17.'cot <plug>\cot '
exe s:pA17.'coth <plug>\coth '
exe s:pA17.'csc <plug>\csc '
exe s:pA17.'deg <plug>\deg '
exe s:pA17.'det <plug>\det '
exe s:pA17.'dim <plug>\dim '
exe s:pA17.'exp <plug>\exp '
exe s:pA17.'gcd <plug>\gcd '
exe s:pA17.'hom <plug>\hom '
exe s:pA17.'inf <plug>\inf '
exe s:pA17.'injlim <plug>\injlim '
exe s:pA17.'ker <plug>\ker '
exe s:pA17.'lg <plug>\lg '
exe s:pA17.'lim <plug>\lim '
exe s:pA17.'liminf <plug>\liminf '
exe s:pA17.'limsup <plug>\limsup '
exe s:pA17.'ln <plug>\ln '
exe s:pA17.'log <plug>\log '
exe s:pA17.'max <plug>\max '
exe s:pA17.'min <plug>\min '
exe s:pA17.'Pr <plug>\Pr '
exe s:pA17.'projlim <plug>\projlim '
exe s:pA17.'sec <plug>\sec '
exe s:pA17.'sin <plug>\sin '
exe s:pA17.'sinh <plug>\sinh '
exe s:pA17.'sup <plug>\sup '
exe s:pA17.'tan <plug>\tan '
exe s:pA17.'tanh <plug>\tanh '
exe s:pA17.'varlimsup <plug>\varlimsup '
exe s:pA17.'varliminf <plug>\varliminf '
exe s:pA17.'varinjlim <plug>\varinjlim '
exe s:pA17.'varprojlim <plug>\varprojlim '
" }}}
" {{{ MathSpacing
let s:pA18 = s:pA."MathSpacing."
exe s:pA18.', <plug>\, '
exe s:pA18.': <plug>\: '
exe s:pA18.'; <plug>\; '
exe s:pA18.'[space] <plug>\ '
exe s:pA18.'quad <plug>\quad '
exe s:pA18.'qquad <plug>\qquad '
exe s:pA18.'! <plug>\! '
exe s:pA18.'thinspace <plug>\thinspace '
exe s:pA18.'medspace <plug>\medspace '
exe s:pA18.'thickspace <plug>\thickspace '
exe s:pA18.'negthinspace <plug>\negthinspace '
exe s:pA18.'negmedspace <plug>\negmedspace '
exe s:pA18.'negthickspace <plug>\negthickspace '
" 1}}}
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4

View File

@@ -0,0 +1,16 @@
" ============================================================================
" File: multicompile.vim
" Author: Srinath Avadhanula
" Created: Sat Jul 05 03:00 PM 2003
" Description: compile a .tex file multiple times to get cross references
" right.
" License: Vim Charityware License
" Part of vim-latexSuite: http://vim-latex.sourceforge.net
" ============================================================================
" The contents of this file have been moved to compiler.vim, the file which
" contains all functions relevant to compiling and viewing.
" This file is kept empty on purpose so that it will over-write previous
" versions of multicompile.vim, therby preventing conflicts.
" vim:fdm=marker:nowrap:noet:ff=unix:ts=4:sw=4

View File

@@ -0,0 +1,689 @@
"=============================================================================
" File: packages.vim
" Author: Mikolaj Machowski
" Created: Tue Apr 23 06:00 PM 2002 PST
"
" Description: handling packages from within vim
"=============================================================================
" avoid reinclusion.
if !g:Tex_PackagesMenu || exists('s:doneOnce')
finish
endif
let s:doneOnce = 1
let s:path = fnameescape(expand("<sfile>:p:h"))
if Tex_GetVarValue('Tex_EnvEndWithCR')
let s:end_with_cr = "\<CR>"
else
let s:end_with_cr = ""
end
let s:menu_div = 20
com! -nargs=0 TPackageUpdate :silent! call Tex_pack_updateall(1)
com! -nargs=0 TPackageUpdateAll :silent! call Tex_pack_updateall(1)
" Custom command-line completion of Tcommands is very useful but this feature
" is available only in Vim 6.2 and above. Check number of version and choose
" proper command and function.
if v:version >= 602
com! -complete=custom,Tex_CompletePackageName -nargs=* TPackage let s:retVal = Tex_pack_one(<f-args>) <bar> normal! i<C-r>=s:retVal<CR>
" Tex_CompletePackageName: for completing names in TPackage command {{{
" Description: get list of package names with globpath(), remove full path
" and return list of names separated with newlines.
"
function! Tex_CompletePackageName(A,P,L)
" Get name of packages from all runtimepath directories
let packnames = Tex_FindInRtp('', 'packages')
let packnames = substitute(packnames, '^,', '', 'e')
" Separate names with \n not ,
let packnames = substitute(packnames,',','\n','g')
return packnames
endfunction
" }}}
else
com! -nargs=* TPackage let s:retVal = Tex_pack_one(<f-args>) <bar> normal! i<C-r>=s:retVal<CR>
endif
imap <silent> <plug> <Nop>
nmap <silent> <plug> i
let g:Tex_package_supported = ''
let g:Tex_package_detected = ''
" Remember the defaults because we want g:Tex_PromptedEnvironments to contain
" in addition to the default, \newenvironments, and the \newenvironments might
" change...
let g:Tex_PromptedEnvironmentsDefault = g:Tex_PromptedEnvironments
let g:Tex_PromptedCommandsDefault = g:Tex_PromptedCommands
" Tex_pack_check: creates the package menu and adds to 'dict' setting. {{{
"
function! Tex_pack_check(package)
" Use Tex_FindInRtp() function to get first name from packages list in all
" rtp directories conforming with latex-suite directories hierarchy
" Store names in variables to process functions only once.
let packname = Tex_FindInRtp(a:package, 'packages')
if packname != ''
exe 'runtime! ftplugin/latex-suite/packages/' . a:package
if has("gui_running")
call Tex_pack(a:package)
endif
if g:Tex_package_supported !~ a:package
let g:Tex_package_supported = g:Tex_package_supported.','.a:package
endif
endif
" Return full list of dictionaries (separated with ,) for package in &rtp
call Tex_Debug("Tex_pack_check: searching for ".a:package." in dictionaries/ in &rtp", "pack")
let dictname = Tex_FindInRtp(a:package, 'dictionaries', ':p')
if dictname != ''
exe 'setlocal dict^=' . dictname
call Tex_Debug('Tex_pack_check: setlocal dict^=' . dictname, 'pack')
if g:Tex_package_supported !~ a:package
let g:Tex_package_supported = g:Tex_package_supported.','.a:package
endif
endif
if g:Tex_package_detected !~ '\<'.a:package.'\>'
let g:Tex_package_detected = g:Tex_package_detected.','.a:package
endif
let g:Tex_package_detected = substitute(g:Tex_package_detected, '^,', '', '')
let g:Tex_package_supported = substitute(g:Tex_package_supported, '^,', '', '')
endfunction
" }}}
" Tex_pack_uncheck: removes package from menu and 'dict' settings. {{{
function! Tex_pack_uncheck(package)
if has("gui_running") && Tex_FindInRtp(a:package, 'packages') != ''
exe 'silent! aunmenu '.g:Tex_PackagesMenuLocation.'-sep'.a:package.'-'
exe 'silent! aunmenu '.g:Tex_PackagesMenuLocation.a:package.'\ Options'
exe 'silent! aunmenu '.g:Tex_PackagesMenuLocation.a:package.'\ Commands'
endif
if Tex_FindInRtp(a:package, 'dictionaries') != ''
exe 'setlocal dict-='.Tex_FindInRtp(a:package, 'dictionaries')
endif
endfunction
" }}}
" Tex_pack_updateall: updates the TeX-Packages menu {{{
" Description:
" This function first calls Tex_pack_all to scan for \usepackage's etc if
" necessary. After that, it 'supports' and 'unsupports' packages as needed
" in such a way as to not repeat work.
function! Tex_pack_updateall(force)
call Tex_Debug('+Tex_pack_updateall', 'pack')
" Find out which file we need to scan.
let fname = Tex_GetMainFileName(':p')
" If this is the same as last time, don't repeat.
if !a:force && exists('s:lastScannedFile') &&
\ s:lastScannedFile == fname
return
endif
" Remember which file we scanned for next time.
let s:lastScannedFile = fname
" Remember which packages we detected last time.
if exists('g:Tex_package_detected')
let oldpackages = g:Tex_package_detected
else
let oldpackages = ''
endif
" This sets up a global variable of all detected packages.
let g:Tex_package_detected = ''
" reset the environments and commands.
let g:Tex_PromptedEnvironments = g:Tex_PromptedEnvironmentsDefault
let g:Tex_PromptedCommands = g:Tex_PromptedCommandsDefault
if expand('%:p') != fname
call Tex_Debug(':Tex_pack_updateall: sview '.fnameescape(fname), 'pack')
exe 'sview '.fnameescape(fname)
else
call Tex_Debug(':Tex_pack_updateall: split', 'pack')
split
endif
call Tex_ScanForPackages()
q
call Tex_Debug(':Tex_pack_updateall: detected ['.g:Tex_package_detected.'] in first run', 'pack')
" Now for each package find out if this is a custom package and if so,
" scan that as well. We will use the ':find' command in vim to let vim
" search through the file paths for us.
"
" NOTE: This while loop will also take into account packages included
" within packages to any level of recursion as long as
" g:Tex_package_detected is always padded with new package names
" from the end.
"
" First set the &path setting to the user's TEXINPUTS setting.
let _path = &path
let _suffixesadd = &suffixesadd
let &path = '.,'.g:Tex_TEXINPUTS
let &suffixesadd = '.sty,.tex'
let scannedPackages = ''
let i = 1
let packname = Tex_Strntok(g:Tex_package_detected, ',', i)
while packname != ''
call Tex_Debug(':Tex_pack_updateall: scanning package '.packname, 'pack')
" Scan this package only if we have not scanned it before in this
" run.
if scannedPackages =~ '\<'.packname.'\>'
let i = i + 1
call Tex_Debug(':Tex_pack_updateall: '.packname.' already scanned', 'pack')
let packname = Tex_Strntok(g:Tex_package_detected, ',', i)
continue
endif
" Split this window in two. The packages/files being found will open
" in this new window and we also need not bother with files being
" modified etc.
split
let thisbufnum = bufnr('%')
call Tex_Debug(':Tex_pack_updateall: findfile("'.fnameescape(packname).'.sty")', 'pack')
let package_file = findfile( fnameescape(packname) .'.sty' )
if package_file != ""
call Tex_Debug(':Tex_pack_updateall: found "'. package_file .'"', 'pack')
exec 'view ' . package_file
else
call Tex_Debug(':Tex_pack_updateall: did not find "'. fnameescape(packname) .'.sty' .'" in "' . &path . '"', 'pack')
end
call Tex_Debug(':Tex_pack_updateall: present file = '.bufname('%'), 'pack')
" If this file was not found, assume that it means its not a
" custom package and mark it "scanned".
" A package is not found if we stay in the same buffer as before and
" its not the one where we want to go.
if bufnr('%') == thisbufnum && bufnr('%') != bufnr(packname.'.sty')
let scannedPackages = scannedPackages.','.packname
q
call Tex_Debug(':Tex_pack_updateall: '.packname.' not found anywhere', 'pack')
let i = i + 1
let packname = Tex_Strntok(g:Tex_package_detected, ',', i)
continue
endif
" otherwise we are presently editing a custom package, scan it for
" more \usepackage lines from the first line to the last.
let packpath = expand('%:p')
let &complete = &complete.'s'.packpath
call Tex_Debug(':Tex_pack_updateall: found custom package '.packpath, 'pack')
call Tex_ScanForPackages(line('$'), line('$'))
call Tex_Debug(':Tex_pack_updateall: After scanning, g:Tex_package_detected = '.g:Tex_package_detected, 'pack')
let scannedPackages = scannedPackages.','.packname
" Do not use bwipe, but that leads to excessive buffer number
" consumption. Besides, its intuitive for a custom package to remain
" on the buffer list.
q
let i = i + 1
let packname = Tex_Strntok(g:Tex_package_detected, ',', i)
endwhile
let &path = _path
let &suffixesadd = _suffixesadd
" Now only support packages we didn't last time.
" First remove packages which were used last time but are no longer used.
let i = 1
let oldPackName = Tex_Strntok(oldpackages, ',', i)
while oldPackName != ''
if g:Tex_package_detected !~ oldPackName
call Tex_pack_uncheck(oldPackName)
endif
let i = i + 1
let oldPackName = Tex_Strntok(oldpackages, ',', i)
endwhile
" Then support packages which are used this time but weren't used last
" time.
let i = 1
let newPackName = Tex_Strntok(g:Tex_package_detected, ',', i)
while newPackName != ''
if oldpackages !~ newPackName
call Tex_pack_one(newPackName)
endif
let i = i + 1
let newPackName = Tex_Strntok(g:Tex_package_detected, ',', i)
endwhile
" Throw an event that we are done scanning packages. Some packages might
" use this to change behavior based on which options have been used etc.
call Tex_Debug(":Tex_pack_updateall: throwing LatexSuiteScannedPackages event", "pack")
silent! do LatexSuite User LatexSuiteScannedPackages
call Tex_Debug("-Tex_pack_updateall", "pack")
endfunction
" }}}
" Tex_pack_one: supports each package in the argument list.{{{
" Description:
" If no arguments are supplied, then the user is asked to choose from the
" packages found in the packages/ directory
function! Tex_pack_one(...)
if a:0 == 0 || (a:0 > 0 && a:1 == '')
let packlist = Tex_FindInRtp('', 'packages')
let packname = Tex_ChooseFromPrompt(
\ "Choose a package: \n" .
\ Tex_CreatePrompt(packlist, '3', ',') .
\ "\nEnter number or filename :",
\ packlist, ',')
if packname != ''
return Tex_pack_one(packname)
else
return ''
endif
else
" Support the packages supplied. This function can be called with
" multiple arguments in which case, support each of them in turn.
let retVal = ''
let omega = 1
while omega <= a:0
let packname = a:{omega}
if Tex_FindInRtp(packname, 'packages') != ''
call Tex_pack_check(packname)
if exists('g:TeX_package_option_'.packname)
\ && g:TeX_package_option_{packname} != ''
let retVal = retVal.'\usepackage[<++>]{'.packname.'}<++>'
else
let retVal = retVal.'\usepackage{'.packname.'}'."\<CR>"
endif
else
let retVal = retVal.'\usepackage{'.packname.'}'."\<CR>"
endif
let omega = omega + 1
endwhile
return IMAP_PutTextWithMovement(substitute(retVal, "\<CR>$", '', ''), '<+', '+>')
endif
endfunction
" }}}
" Tex_ScanForPackages: scans the current file for \usepackage{} lines {{{
" and if supported, loads the options and commands found in the
" corresponding package file. Also scans for \newenvironment and
" \newcommand lines and adds names to g:Tex_Prompted variables, they can be
" easy available through <F5> and <F7> shortcuts
function! Tex_ScanForPackages(...)
call Tex_Debug("+Tex_ScanForPackages", "pack")
let pos = Tex_GetPos()
" For package files without \begin and \end{document}, we might be told to
" search from beginning to end.
if a:0 < 2
0
let beginline = search('\\begin{document}', 'W')
let endline = search('\\end{document}', 'W')
0
else
let beginline = a:1
let endline = a:2
endif
call Tex_Debug(":Tex_ScanForPackages: Begining scans in [".bufname('%')."], beginline = ".beginline, "pack")
" Scan the file. First open up all the folds, because the command
" /somepattern
" issued in a closed fold _always_ goes to the first match.
let erm = v:errmsg
silent! normal! ggVGzO
let v:errmsg = erm
call Tex_Debug(":Tex_ScanForPackages: beginning scan for \\usepackage lines", "pack")
" The wrap trick enables us to match \usepackage on the first line as
" well.
let wrap = 'w'
while search('^\s*\\usepackage\_.\{-}{\_.\+}', wrap)
let wrap = 'W'
if line('.') > beginline
break
endif
let saveUnnamed = @"
let saveA = @a
" If there are options, then find those.
if getline('.') =~ '\\usepackage\[.\{-}\]'
let options = matchstr(getline('.'), '\\usepackage\[\zs.\{-}\ze\]')
elseif getline('.') =~ '\\usepackage\['
" Entering here means that the user has split the \usepackage
" across newlines. Therefore, use yank.
exec "normal! /{\<CR>\"ayi}"
let options = @a
else
let options = ''
endif
" The following statement puts the stuff between the { }'s of a
" \usepackage{stuff,foo} into @a. Do not use matchstr() and the like
" because we can have things split across lines and such.
exec "normal! /{\<CR>\"ay/}\<CR>"
" now remove all whitespace from @a. We need to remove \n and \r
" because we can encounter stuff like
" \usepackage{pack1,
" newpackonanotherline}
let @a = substitute(@a, "[ \t\n\r]", '', 'g')
" Now we have something like pack1,pack2,pack3 with possibly commas
" and stuff before the first package and after the last package name.
" Remove those.
let @a = substitute(@a, '\(^\W*\|\W*$\)', '', 'g')
" This gets us a string like 'pack1,pack2,pack3'
" TODO: This will contain duplicates if the user has duplicates.
" Should we bother taking care of this?
let g:Tex_package_detected = g:Tex_package_detected.','.@a
" For each package found, form a global variable of the form
" g:Tex_{packagename}_options
" which contains a list of the options.
let j = 1
while Tex_Strntok(@a, ',', j) != ''
let g:Tex_{Tex_Strntok(@a, ',', j)}_options = options
let j = j + 1
endwhile
" Finally convert @a into something like '"pack1","pack2"'
let @a = substitute(@a, '^\|$', '"', 'g')
let @a = substitute(@a, ',', '","', 'g')
call Tex_Debug(":Tex_ScanForPackages: found package(s) [".@a."] on line ".line('.'), "pack")
" restore @a
call setreg("a", saveA, "c")
call setreg("\"", saveUnnamed, "c")
endwhile
call Tex_Debug(":Tex_ScanForPackages: End scan \\usepackage, detected packages = ".g:Tex_package_detected, "pack")
" TODO: This needs to be changed. In the future, we might have
" functionality to remember the fold-state before opening up all the folds
" and then re-creating them. Use mkview.vim.
let erm = v:errmsg
silent! normal! ggVGzC
let v:errmsg = erm
" Because creating list of detected packages gives string
" ',pack1,pack2,pack3' remove leading ,
let g:Tex_package_detected = substitute(g:Tex_package_detected, '^,', '', '')
call Tex_Debug(":Tex_ScanForPackages: Beginning scan for \\newcommand's", "pack")
" Scans whole file (up to \end{document}) for \newcommand and adds this
" commands to g:Tex_PromptedCommands variable, it is easily available
" through <F7>
0
while search('^\s*\\newcommand\*\?{.\{-}}', 'W')
if line('.') > endline
break
endif
let newcommand = matchstr(getline('.'), '\\newcommand\*\?{\\\zs.\{-}\ze}')
let g:Tex_PromptedCommands = g:Tex_PromptedCommands . ',' . newcommand
endwhile
" Scans whole file (up to \end{document}) for \newenvironment and adds this
" environments to g:Tex_PromptedEnvironments variable, it is easily available
" through <F5>
0
call Tex_Debug(":Tex_ScanForPackages: Beginning scan for \\newenvironment's", 'pack')
while search('^\s*\\newenvironment\*\?{.\{-}}', 'W')
call Tex_Debug('found newenvironment on '.line('.'), 'pack')
if line('.') > endline
break
endif
let newenvironment = matchstr(getline('.'), '\\newenvironment\*\?{\zs.\{-}\ze}')
let g:Tex_PromptedEnvironments = g:Tex_PromptedEnvironments . ',' . newenvironment
endwhile
call Tex_SetPos(pos)
" first make a random search so that we push at least one item onto the
" search history. Since vim puts only one item in the history per function
" call, this way we make sure that one and only item is put into the
" search history.
normal! /^<CR>
" now delete it...
call histdel('/', -1)
call Tex_Debug("-Tex_ScanForPackages", "pack")
endfunction
" }}}
" Tex_pack_supp_menu: sets up a menu for package files {{{
" found in the packages directory groups the packages thus found into groups
" of 20...
function! Tex_pack_supp_menu()
let suplist = Tex_FindInRtp('', 'packages')
call Tex_MakeSubmenu(suplist, g:Tex_PackagesMenuLocation.'Supported.',
\ '<plug><C-r>=Tex_pack_one("', '")<CR>')
endfunction
" }}}
" Tex_pack: loads the options (and commands) for the given package {{{
function! Tex_pack(pack)
if exists('g:TeX_package_'.a:pack)
let optionList = g:TeX_package_option_{a:pack}.','
let commandList = g:TeX_package_{a:pack}.','
" Don't create separator if in package file are only Vim commands.
" Rare but possible.
if !(commandList == ',' && optionList == ',')
exec 'amenu '.g:Tex_PackagesMenuLocation.'-sep'.a:pack.'- <Nop>'
endif
if optionList != ''
let mainMenuName = g:Tex_PackagesMenuLocation.a:pack.'\ Options.'
call s:GroupPackageMenuItems(optionList, mainMenuName,
\ '<plug><C-r>=IMAP_PutTextWithMovement("', ',")<CR>')
endif
if commandList != ''
let mainMenuName = g:Tex_PackagesMenuLocation.a:pack.'\ Commands.'
call s:GroupPackageMenuItems(commandList, mainMenuName,
\ '<plug><C-r>=Tex_ProcessPackageCommand("', '")<CR>',
\ '<SID>FilterPackageMenuLHS')
endif
endif
endfunction
" }}}
" ==============================================================================
" Menu Functions
" Creating menu items for the all the package files found in the packages/
" directory as well as creating menus for each supported package found in the
" preamble.
" ==============================================================================
" Tex_MakeSubmenu: makes a submenu given a list of items {{{
" Description:
" This function takes a comma seperated list of menu items and creates a
" 'grouped' menu. i.e, it groups the items into s:menu_div items each and
" puts them in submenus of the given mainMenu.
" Each menu item is linked to the HandlerFunc.
" If an additional argument is supplied, then it is used to filter each of
" the menu items to generate better names for the menu display.
"
function! Tex_MakeSubmenu(menuList, mainMenuName,
\ handlerFuncLHS, handlerFuncRHS, ...)
let extractFunction = (a:0 > 0 ? a:1 : '' )
let menuList = substitute(a:menuList, '[^,]$', ',', '')
let doneMenuSubmenu = 0
while menuList != ''
" Extract upto s:menu_div menus at once.
let menuBunch = matchstr(menuList, '\v(.{-},){,'.s:menu_div.'}')
" The remaining menus go into the list.
let menuList = strpart(menuList, strlen(menuBunch))
let submenu = ''
" If there is something remaining, then we got s:menu_div items.
" therefore put these menu items into a submenu.
if strlen(menuList) || doneMenuSubmenu
exec 'let firstMenu = '.extractFunction."(matchstr(menuBunch, '\\v^.{-}\\ze,'))"
exec 'let lastMenu = '.extractFunction."(matchstr(menuBunch, '\\v[^,]{-}\\ze,$'))"
let submenu = firstMenu.'\ \-\ '.lastMenu.'.'
let doneMenuSubmenu = 1
endif
" Now for each menu create a menu under the submenu
let i = 1
let menuName = Tex_Strntok(menuBunch, ',', i)
while menuName != ''
exec 'let menuItem = '.extractFunction.'(menuName)'
execute 'amenu '.a:mainMenuName.submenu.menuItem
\ ' '.a:handlerFuncLHS.menuName.a:handlerFuncRHS
let i = i + 1
let menuName = Tex_Strntok(menuBunch, ',', i)
endwhile
endwhile
endfunction
" }}}
" GroupPackageMenuItems: uses the sbr: to split menus into groups {{{
" Description:
" This function first splits up the menuList into groups based on the
" special sbr: tag and then calls Tex_MakeSubmenu
"
function! <SID>GroupPackageMenuItems(menuList, menuName,
\ handlerFuncLHS, handlerFuncRHS,...)
if a:0 > 0
let extractFunction = a:1
else
let extractFunction = ''
endif
let menuList = a:menuList
while matchstr(menuList, 'sbr:') != ''
let groupName = matchstr(menuList, '\v^sbr:\zs.{-}\ze,')
let menuList = strpart(menuList, strlen('sbr:'.groupName.','))
if matchstr(menuList, 'sbr:') != ''
let menuGroup = matchstr(menuList, '\v^.{-},\zesbr:')
else
let menuGroup = menuList
endif
call Tex_MakeSubmenu(menuGroup, a:menuName.groupName.'.',
\ a:handlerFuncLHS, a:handlerFuncRHS, extractFunction)
let menuList = strpart(menuList, strlen(menuGroup))
endwhile
call Tex_MakeSubmenu(menuList, a:menuName,
\ a:handlerFuncLHS, a:handlerFuncRHS, extractFunction)
endfunction " }}}
" Definition of what to do for various package commands {{{
let s:CommandSpec_brs = '\<+replace+><++>'
let s:CommandSpec_bra = '\<+replace+>{<++>}<++>'
let s:CommandSpec_brd = '\<+replace+>{<++>}{<++>}<++>'
let s:CommandSpec_nor = '\<+replace+>'
let s:CommandSpec_noo = '\<+replace+>[<++>]'
let s:CommandSpec_nob = '\<+replace+>[<++>]{<++>}{<++>}<++>'
let s:CommandSpec_env = '\begin{<+replace+>}'."\<CR><++>\<CR>".'\end{<+replace+>}'.s:end_with_cr.'<++>'
let s:CommandSpec_ens = '\begin{<+replace+>}<+extra+>'."\<CR><++>\<CR>".'\end{<+replace+>}'.s:end_with_cr.'<++>'
let s:CommandSpec_eno = '\begin[<++>]{<+replace+>}'."\<CR><++>\<CR>".'\end{<+replace+>}'.s:end_with_cr.'<++>'
let s:CommandSpec_spe = '<+replace+>'
let s:CommandSpec_ = '\<+replace+>'
let s:MenuLHS_bra = '\\&<+replace+>{}'
let s:MenuLHS_brs = '\\&<+replace+>{}'
let s:MenuLHS_brd = '\\&<+replace+>{}{}'
let s:MenuLHS_env = '&<+replace+>\ (E)'
let s:MenuLHS_ens = '&<+replace+>\ (E)'
let s:MenuLHS_eno = '&<+replace+>\ (E)'
let s:MenuLHS_nor = '\\&<+replace+>'
let s:MenuLHS_noo = '\\&<+replace+>[]'
let s:MenuLHS_nob = '\\&<+replace+>[]{}{}'
let s:MenuLHS_spe = '&<+replace+>'
let s:MenuLHS_sep = '-sep<+replace+>-'
let s:MenuLHS_ = '\\&<+replace+>'
" }}}
" Tex_ProcessPackageCommand: processes a command from the package menu {{{
" Description:
function! Tex_ProcessPackageCommand(command)
if a:command =~ ':'
let commandType = matchstr(a:command, '^\w\+\ze:')
let commandName = matchstr(a:command, '^\w\+:\zs[^:]\+\ze:\?')
let extrapart = strpart(a:command, strlen(commandType.':'.commandName.':'))
else
let commandType = ''
let commandName = a:command
let extrapart = ''
endif
let command = s:CommandSpec_{commandType}
let command = substitute(command, '<+replace+>', commandName, 'g')
let command = substitute(command, '<+extra+>', extrapart, 'g')
return IMAP_PutTextWithMovement(command)
endfunction
" }}}
" FilterPackageMenuLHS: filters the command description to provide a better menu item {{{
" Description:
function! <SID>FilterPackageMenuLHS(command)
let commandType = matchstr(a:command, '^\w\+\ze:')
if commandType != ''
let commandName = strpart(a:command, strlen(commandType.':'))
else
let commandName = a:command
endif
return substitute(s:MenuLHS_{commandType}, '<+replace+>', commandName, 'g')
endfunction " }}}
if g:Tex_Menus
exe 'amenu '.g:Tex_PackagesMenuLocation.'&UpdatePackage :call Tex_pack(expand("<cword>"))<cr>'
exe 'amenu '.g:Tex_PackagesMenuLocation.'&UpdateAll :call Tex_pack_updateall(1)<cr>'
call Tex_pack_supp_menu()
endif
augroup LatexSuite
au LatexSuite User LatexSuiteFileType
\ call Tex_Debug('packages.vim: Catching LatexSuiteFileType event', 'pack') |
\ let s:save_clipboard = &clipboard |
\ set clipboard= |
\ call Tex_pack_updateall(0) |
\ let &clipboard=s:save_clipboard
augroup END
" vim:fdm=marker:ts=4:sw=4:noet:ff=unix

View File

@@ -0,0 +1,315 @@
if exists("SIunits_package_file")
finish
endif
let SIunits_package_file = 1
let g:TeX_package_SIunits =
\'nor:addprefix,'.
\'nor:addunit,'.
\'nor:ampere,'.
\'nor:amperemetresecond,'.
\'nor:amperepermetre,'.
\'nor:amperepermetrenp,'.
\'nor:amperepersquaremetre,'.
\'nor:amperepersquaremetrenp,'.
\'nor:angstrom,'.
\'nor:arad,'.
\'nor:arcminute,'.
\'nor:arcsecond,'.
\'nor:are,'.
\'nor:atomicmass,'.
\'nor:atto,'.
\'nor:attod,'.
\'nor:barn,'.
\'nor:bbar,'.
\'nor:becquerel,'.
\'nor:becquerelbase,'.
\'nor:bel,'.
\'nor:candela,'.
\'nor:candelapersquaremetre,'.
\'nor:candelapersquaremetrenp,'.
\'nor:celsius,'.
\'nor:Celsius,'.
\'nor:celsiusbase,'.
\'nor:centi,'.
\'nor:centid,'.
\'nor:coulomb,'.
\'nor:coulombbase,'.
\'nor:coulombpercubicmetre,'.
\'nor:coulombpercubicmetrenp,'.
\'nor:coulombperkilogram,'.
\'nor:coulombperkilogramnp,'.
\'nor:coulombpermol,'.
\'nor:coulombpermolnp,'.
\'nor:coulombpersquaremetre,'.
\'nor:coulombpersquaremetrenp,'.
\'nor:cubed,'.
\'nor:cubic,'.
\'nor:cubicmetre,'.
\'nor:cubicmetreperkilogram,'.
\'nor:cubicmetrepersecond,'.
\'nor:curie,'.
\'nor:dday,'.
\'nor:deca,'.
\'nor:decad,'.
\'nor:deci,'.
\'nor:decid,'.
\'nor:degree,'.
\'nor:degreecelsius,'.
\'nor:deka,'.
\'nor:dekad,'.
\'nor:derbecquerel,'.
\'nor:dercelsius,'.
\'nor:dercoulomb,'.
\'nor:derfarad,'.
\'nor:dergray,'.
\'nor:derhenry,'.
\'nor:derhertz,'.
\'nor:derjoule,'.
\'nor:derkatal,'.
\'nor:derlumen,'.
\'nor:derlux,'.
\'nor:dernewton,'.
\'nor:derohm,'.
\'nor:derpascal,'.
\'nor:derradian,'.
\'nor:dersiemens,'.
\'nor:dersievert,'.
\'nor:dersteradian,'.
\'nor:dertesla,'.
\'nor:dervolt,'.
\'nor:derwatt,'.
\'nor:derweber,'.
\'nor:electronvolt,'.
\'nor:exa,'.
\'nor:exad,'.
\'nor:farad,'.
\'nor:faradbase,'.
\'nor:faradpermetre,'.
\'nor:faradpermetrenp,'.
\'nor:femto,'.
\'nor:femtod,'.
\'nor:fourth,'.
\'nor:gal,'.
\'nor:giga,'.
\'nor:gigad,'.
\'nor:gram,'.
\'nor:graybase,'.
\'nor:graypersecond,'.
\'nor:graypersecondnp,'.
\'nor:hectare,'.
\'nor:hecto,'.
\'nor:hectod,'.
\'nor:henry,'.
\'nor:henrybase,'.
\'nor:henrypermetre,'.
\'nor:henrypermetrenp,'.
\'nor:hertz,'.
\'nor:hertzbase,'.
\'nor:hour,'.
\'nor:joule,'.
\'nor:joulebase,'.
\'nor:joulepercubicmetre,'.
\'nor:joulepercubicmetrenp,'.
\'nor:jouleperkelvin,'.
\'nor:jouleperkelvinnp,'.
\'nor:jouleperkilogram,'.
\'nor:jouleperkilogramkelvin,'.
\'nor:jouleperkilogramkelvinnp,'.
\'nor:jouleperkilogramnp,'.
\'nor:joulepermole,'.
\'nor:joulepermolekelvin,'.
\'nor:joulepermolekelvinnp,'.
\'nor:joulepermolenp,'.
\'nor:joulepersquaremetre,'.
\'nor:joulepersquaremetrenp,'.
\'nor:joulepertesla,'.
\'nor:jouleperteslanp,'.
\'nor:katal,'.
\'nor:katalbase,'.
\'nor:katalpercubicmetre,'.
\'nor:katalpercubicmetrenp,'.
\'nor:kelvin,'.
\'nor:kilo,'.
\'nor:kilod,'.
\'nor:kilogram,'.
\'nor:kilogrammetrepersecond,'.
\'nor:kilogrammetrepersecondnp,'.
\'nor:kilogrammetrepersquaresecond,'.
\'nor:kilogrammetrepersquaresecondnp,'.
\'nor:kilogrampercubicmetre,'.
\'nor:kilogrampercubicmetrecoulomb,'.
\'nor:kilogrampercubicmetrecoulombnp,'.
\'nor:kilogrampercubicmetrenp,'.
\'nor:kilogramperkilomole,'.
\'nor:kilogramperkilomolenp,'.
\'nor:kilogrampermetre,'.
\'nor:kilogrampermetrenp,'.
\'nor:kilogrampersecond,'.
\'nor:kilogrampersecondcubicmetre,'.
\'nor:kilogrampersecondcubicmetrenp,'.
\'nor:kilogrampersecondnp,'.
\'nor:kilogrampersquaremetre,'.
\'nor:kilogrampersquaremetrenp,'.
\'nor:kilogrampersquaremetresecond,'.
\'nor:kilogrampersquaremetresecondnp,'.
\'nor:kilogramsquaremetre,'.
\'nor:kilogramsquaremetrenp,'.
\'nor:kilogramsquaremetrepersecond,'.
\'nor:kilogramsquaremetrepersecondnp,'.
\'nor:kilowatthour,'.
\'nor:liter,'.
\'nor:litre,'.
\'nor:lumen,'.
\'nor:lumenbase,'.
\'nor:lux,'.
\'nor:luxbase,'.
\'nor:mega,'.
\'nor:megad,'.
\'nor:meter,'.
\'nor:metre,'.
\'nor:metrepersecond,'.
\'nor:metrepersecondnp,'.
\'nor:metrepersquaresecond,'.
\'nor:metrepersquaresecondnp,'.
\'nor:micro,'.
\'nor:microd,'.
\'nor:milli,'.
\'nor:millid,'.
\'nor:minute,'.
\'nor:mole,'.
\'nor:molepercubicmetre,'.
\'nor:molepercubicmetrenp,'.
\'nor:nano,'.
\'nor:nanod,'.
\'nor:neper,'.
\'nor:newton,'.
\'nor:newtonbase,'.
\'nor:newtonmetre,'.
\'nor:newtonpercubicmetre,'.
\'nor:newtonpercubicmetrenp,'.
\'nor:newtonperkilogram,'.
\'nor:newtonperkilogramnp,'.
\'nor:newtonpermetre,'.
\'nor:newtonpermetrenp,'.
\'nor:newtonpersquaremetre,'.
\'nor:newtonpersquaremetrenp,'.
\'nor:NoAMS,'.
\'nor:no@qsk,'.
\'nor:ohm,'.
\'nor:ohmbase,'.
\'nor:ohmmetre,'.
\'nor:one,'.
\'nor:paminute,'.
\'nor:pascal,'.
\'nor:pascalbase,'.
\'nor:pascalsecond,'.
\'nor:pasecond,'.
\'nor:per,'.
\'nor:period@active,'.
\'nor:persquaremetresecond,'.
\'nor:persquaremetresecondnp,'.
\'nor:peta,'.
\'nor:petad,'.
\'nor:pico,'.
\'nor:picod,'.
\'nor:power,'.
\'nor:@qsk,'.
\'nor:quantityskip,'.
\'nor:rad,'.
\'nor:radian,'.
\'nor:radianbase,'.
\'nor:radianpersecond,'.
\'nor:radianpersecondnp,'.
\'nor:radianpersquaresecond,'.
\'nor:radianpersquaresecondnp,'.
\'nor:reciprocal,'.
\'nor:rem,'.
\'nor:roentgen,'.
\'nor:rp,'.
\'nor:rpcubed,'.
\'nor:rpcubic,'.
\'nor:rpcubicmetreperkilogram,'.
\'nor:rpcubicmetrepersecond,'.
\'nor:rperminute,'.
\'nor:rpersecond,'.
\'nor:rpfourth,'.
\'nor:rpsquare,'.
\'nor:rpsquared,'.
\'nor:rpsquaremetreperkilogram,'.
\'nor:second,'.
\'nor:siemens,'.
\'nor:siemensbase,'.
\'nor:sievert,'.
\'nor:sievertbase,'.
\'nor:square,'.
\'nor:squared,'.
\'nor:squaremetre,'.
\'nor:squaremetrepercubicmetre,'.
\'nor:squaremetrepercubicmetrenp,'.
\'nor:squaremetrepercubicsecond,'.
\'nor:squaremetrepercubicsecondnp,'.
\'nor:squaremetreperkilogram,'.
\'nor:squaremetrepernewtonsecond,'.
\'nor:squaremetrepernewtonsecondnp,'.
\'nor:squaremetrepersecond,'.
\'nor:squaremetrepersecondnp,'.
\'nor:squaremetrepersquaresecond,'.
\'nor:squaremetrepersquaresecondnp,'.
\'nor:steradian,'.
\'nor:steradianbase,'.
\'nor:tera,'.
\'nor:terad,'.
\'nor:tesla,'.
\'nor:teslabase,'.
\'nor:ton,'.
\'nor:tonne,'.
\'nor:unit,'.
\'nor:unitskip,'.
\'nor:usk,'.
\'nor:volt,'.
\'nor:voltbase,'.
\'nor:voltpermetre,'.
\'nor:voltpermetrenp,'.
\'nor:watt,'.
\'nor:wattbase,'.
\'nor:wattpercubicmetre,'.
\'nor:wattpercubicmetrenp,'.
\'nor:wattperkilogram,'.
\'nor:wattperkilogramnp,'.
\'nor:wattpermetrekelvin,'.
\'nor:wattpermetrekelvinnp,'.
\'nor:wattpersquaremetre,'.
\'nor:wattpersquaremetrenp,'.
\'nor:wattpersquaremetresteradian,'.
\'nor:wattpersquaremetresteradiannp,'.
\'nor:weber,'.
\'nor:weberbase,'.
\'nor:yocto,'.
\'nor:yoctod,'.
\'nor:yotta,'.
\'nor:yottad,'.
\'nor:zepto,'.
\'nor:zeptod,'.
\'nor:zetta,'.
\'nor:zettad'
let g:TeX_package_option_SIunits =
\'amssymb,'.
\'binary,'.
\'cdot,'.
\'derived,'.
\'derivedinbase,'.
\'Gray,'.
\'mediumqspace,'.
\'mediumspace,'.
\'noams,'.
\'pstricks,'.
\'squaren,'.
\'textstyle,'.
\'thickqspace,'.
\'thickspace,'.
\'thinqspace,'.
\'thinspace'
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,28 @@
if exists("accents_package_file")
finish
endif
let accents_package_file = 1
let g:TeX_package_option_accents =
\ 'nonscript,'
\.'single'
let g:TeX_package_accents =
\ 'bra:grave,'
\.'bra:acute,'
\.'bra:check,'
\.'bra:breve,'
\.'bra:bar,'
\.'bra:ring,'
\.'bra:hat,'
\.'bra:dot,'
\.'bra:tilde,'
\.'bra:undertilde,'
\.'bra:ddot,'
\.'bra:dddot,'
\.'bra:ddddot,'
\.'bra:vec,'
\.'brd:accentset,'
\.'brd:underaccent'
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,10 @@
if exists("acromake_package_file")
finish
endif
let acromake_package_file = 1
let g:TeX_package_option_acromake = ''
let g:TeX_package_acromake = 'brs:acromake{<++>}{<++>}{<++>}'
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,10 @@
if exists("afterpage_package_file")
finish
endif
let afterpage_package_file = 1
let g:TeX_package_option_afterpage = ''
let g:TeX_package_afterpage = 'bra:afterpage'
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,12 @@
if exists("alltt_package_file")
finish
endif
let alltt_package_file = 1
let g:TeX_package_option_alltt = ''
let g:TeX_package_alltt = 'env:alltt'
syn region texZone start="\\begin{alltt}" end="\\end{alltt}\|%stopzone\>" fold
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,106 @@
if exists("amsmath_package_file")
finish
endif
let amsmath_package_file = 1
let g:TeX_package_option_amsmath =
\ 'centertags,'
\.'tbtags,'
\.'sumlimits,'
\.'nosumlimits,'
\.'intlimits,'
\.'nointlimits,'
\.'namelimits,'
\.'nonamelimits,'
\.'leqno,'
\.'reqno,'
\.'fleqno'
let g:TeX_package_amsmath =
\ 'sbr:Environments,'
\.'env:equation,'
\.'env:equation*,'
\.'env:align,'
\.'env:align*,'
\.'env:gather,'
\.'env:gather*,'
\.'env:flalign,'
\.'env:flalign*,'
\.'env:multline,'
\.'env:multline*,'
\.'ens:alignat:{<+arg1+>}{<+arg2+>},'
\.'env:alignat,'
\.'ens:alignat*:{<+arg1+>}{<+arg2+>},,'
\.'env:alignat*,'
\.'env:subequations,'
\.'env:subarray,'
\.'env:split,'
\.'env:cases,'
\.'sbr:Matrices,'
\.'env:matrix,'
\.'env:pmatrix,'
\.'env:bmatrix,'
\.'env:Bmatrix,'
\.'env:vmatrix,'
\.'env:Vmatrix,'
\.'env:smallmatrix,'
\.'bra:hdotsfor,'
\.'sbr:Dots,'
\.'dotsc,'
\.'dotsb,'
\.'dotsm,'
\.'dotsi,'
\.'dotso,'
\.'sbr:ItalicGreek,'
\.'nor:varGamma,'
\.'nor:varDelta,'
\.'nor:varTheta,'
\.'nor:varLambda,'
\.'nor:varXi,'
\.'nor:varPi,'
\.'nor:varSigma,'
\.'nor:varUpsilon,'
\.'nor:varPhi,'
\.'nor:varPsi,'
\.'nor:varOmega,'
\.'sbr:Mod,'
\.'nor:mod,'
\.'nor:bmod,'
\.'nor:pmod,'
\.'nor:pod,'
\.'sbr:CreatingSymbols,'
\.'brd:overset,'
\.'brd:underset,'
\.'brd:sideset,'
\.'sbr:Fractions,'
\.'brd:frac,'
\.'brd:dfrac,'
\.'brd:tfrac,'
\.'brd:cfrac,'
\.'brd:binom,'
\.'brd:dbinom,'
\.'brd:tbinom,'
\.'brs:genfrac{<+ldelim+>}{<+rdelim+>}{<+thick+>}{<+style+>}{<+numer+>}{<+denom+>},'
\.'sbr:Commands,'
\.'nob:smash,'
\.'bra:substack,'
\.'bra:tag,'
\.'bra:tag*,'
\.'nor:notag,'
\.'bra:raisetag,'
\.'bra:shoveleft,'
\.'bra:shoveright,'
\.'bra:intertext,'
\.'bra:text,'
\.'nor:displaybreak,'
\.'noo:displaybreak,'
\.'noo:allowdisplaybreaks,'
\.'nor:nobreakdash,'
\.'brs:numberwithin{<+env+>}{<+parent+>},'
\.'bra:leftroot,'
\.'bra:uproot,'
\.'bra:boxed,'
\.'brs:DeclareMathSymbol{<++>}{<++>}{<++>}{<++>},'
\.'bra:eqref'
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,21 @@
if exists("amsthm_package_file")
finish
endif
let amsthm_package_file = 1
let TeX_package_option_amsthm = ''
let TeX_package_amsthm =
\ 'env:proof,'
\.'nor:swapnumbers,'
\.'brd:newtheorem,'
\.'brd:newtheorem*,'
\.'nor:theoremstyle{plain},'
\.'nor:theoremstyle{definition},'
\.'nor:theoremstyle{remark},'
\.'nor:newtheoremstyle,'
\.'nor:qedsymbol,'
\.'nor:qed,'
\.'nor:qedhere'
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,12 @@
if exists("amsxtra_package_file")
finish
endif
let amsxtra_package_file = 1
let g:TeX_package_option_amsxtra = ''
let g:TeX_package_amsxtra =
\ 'nor:sphat,'
\.'nor:sptilde'
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,10 @@
if exists("arabic_package_file")
finish
endif
let arabic_package_file = 1
let g:TeX_package_option_arabic = ''
let g:TeX_package_arabic = 'bra:arabicnumeral'
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,17 @@
if exists("array_package_file")
finish
endif
let array_package_file = 1
let g:TeX_package_option_array = ''
let g:TeX_package_array =
\ 'brs:newcolumntype{<+type+>}[<+no+>]{<+preamble+>},'
\.'arraycolsep,'
\.'tabcolsep,'
\.'arrayrulewidth,'
\.'doublerulesep,'
\.'arraystretch,'
\.'extrarowheight'
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,103 @@
if exists("babel_package_file")
finish
endif
let babel_package_file = 1
" This package sets some language specific options.
" Since it needs to find out which options the user used with the babel
" package, it needs to wait till latex-suite is done scanning packages. It
" then catches the LatexSuiteScannedPackages event which
" Tex_pack_updateall() throws at which time g:Tex_pack_detected and
" g:Tex_babel_options contain the necessary information.
let g:TeX_package_option_babel =
\ 'afrikaans,'
\.'bahasa,'
\.'basque,'
\.'breton,'
\.'bulgarian,'
\.'catalan,'
\.'croatian,'
\.'chech,'
\.'danish,'
\.'dutch,'
\.'english,USenglish,american,UKenglish,british,canadian,'
\.'esperanto,'
\.'estonian,'
\.'finnish,'
\.'french,francais,canadien,acadian,'
\.'galician,'
\.'austrian,german,germanb,ngerman,naustrian,'
\.'greek,polutonikogreek,'
\.'hebrew,'
\.'magyar,hungarian,'
\.'icelandic,'
\.'irish,'
\.'italian,'
\.'latin,'
\.'lowersorbian,'
\.'samin,'
\.'norsk,nynorsk,'
\.'polish,'
\.'portuges,portuguese,brazilian,brazil,'
\.'romanian,'
\.'russian,'
\.'scottish,'
\.'spanish,'
\.'slovak,'
\.'slovene,'
\.'swedish,'
\.'serbian,'
\.'turkish,'
\.'ukrainian,'
\.'uppersorbian,'
\.'welsh'
let g:TeX_package_babel =
\ 'bra:selectlanguage,'
\.'env:otherlanguage,'
\.'env:otherlanguage*,'
\.'env:hyphenrules,'
\.'brd:foreignlanguage,'
\.'spe:iflanguage{<+name+>}{<+true+>}{<+false+>},'
\.'languagename,'
\.'bra:useshorthands,'
\.'brd:defineshorthand,'
\.'brd:aliasshorthand,'
\.'bra:languageshorthans,'
\.'bra:shorthandon,'
\.'bra:shorthandoff,'
\.'brd:languageattribute'
" vim:ft=vim:ff=unix:
if exists('s:doneOnce')
finish
endif
let s:doneOnce = 1
augroup LatexSuite
au LatexSuite User LatexSuiteScannedPackages
\ call Tex_Debug('babel: catching LatexSuiteScannedPackages event') |
\ call s:SetQuotes()
augroup END
let s:path = expand('<sfile>:p:h')
" SetQuotes: sets quotes for various languages {{{
" Description:
function! <SID>SetQuotes()
if g:Tex_package_detected =~ '\<babel\>'
if g:Tex_babel_options =~ '\<german\>'
exec 'so '.s:path.'/german'
elseif g:Tex_babel_options =~ '\<ngerman\>'
exec 'so '.s:path.'/ngerman'
elseif g:Tex_babel_options =~ '\<english\|USenglish\|american\|UKenglish\|british\|canadian\>'
if g:Tex_inputenc_options =~ '\<utf8\>'
let b:Tex_SmartQuoteOpen = '“'
let b:Tex_SmartQuoteClose = '”'
endif
endif
endif
endfunction " }}}
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,27 @@
if exists("bar_package_file")
finish
endif
let bar_package_file = 1
let g:TeX_package_option_bar = ''
let g:TeX_package_bar =
\ 'env:barenv,'
\.'brs:bar{<+height+>}{<+index+>}[<+desc+>],'
\.'hlineon,'
\.'brs:legend{<+index+>}{<+text+>},'
\.'bra:setdepth,'
\.'bra:sethspace,'
\.'brs:setlinestyle{<+solid-dotted+>},'
\.'brs:setnumberpos{<+empty-axis-down-inside-outside-up+>},'
\.'bra:setprecision,'
\.'bra:setstretch,'
\.'bra:setstyle,'
\.'bra:setwidth,'
\.'brs:setxaxis{<+w1+>}{<+w2+>}{<+step+>},'
\.'brs:setyaxis[<+n+>]{<+w1+>}{<+w2+>}{<+step+>},'
\.'brs:setxname[<+lrbt+>]{<+etiquette+>},'
\.'brs:setyname[<+lrbt+>]{<+etiquette+>},'
\.'brs:setxvaluetyp{<+day-month+>}'
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,159 @@
" Biblatex package support v 0.1 2010-02-17
" This file has been written by
" Andreas Wagner <Andreas dot Wagner at em dot uni-frankfurt dot de>
" based on the documentation of
" biblatex 0.8e, July 4 2009.
" It can be used, modified and distributed according to the vim license.
if exists("biblatex_package_file")
finish
endif
let biblatex_package_file = 1
let g:TeX_package_option_biblatex =
\ 'style=,'
\.'citestyle=,'
\.'bibstyle=,'
\.'natbib=,'
\.'sorting=,'
\.'sortlos=,'
\.'sortcites=,'
\.'maxnames=,'
\.'minnames=,'
\.'maxitems=,'
\.'minitems=,'
\.'autocite=,'
\.'autopunct=,'
\.'babel=,'
\.'block=,'
\.'hyperref=,'
\.'backref=,'
\.'indexing=,'
\.'loadfiles=,'
\.'refsection=,'
\.'refsegment=,'
\.'citereset=,'
\.'abbreviate=,'
\.'date=,'
\.'urldate=,'
\.'defernums=,'
\.'punctfont=,'
\.'arxiv=,'
\.'backend=,'
\.'mincrossrefs=,'
\.'bibencoding=,'
\.'useauthor=,'
\.'useeditor=,'
\.'usetranslator=,'
\.'useprefix=,'
\.'skipbib=,'
\.'skiplos=,'
\.'skiplab=,'
\.'dataonly=,'
\.'pagetracker=,'
\.'citetracker=,'
\.'ibidtracker=,'
\.'idemtracker=,'
\.'opcittracker=,'
\.'loccittracker=,'
\.'firstinits=,'
\.'terseinits=,'
\.'labelalpha=,'
\.'labelnumber=,'
\.'labelyear=,'
\.'singletitle=,'
\.'uniquename=,'
\.'openbib'
let g:TeX_package_biblatex =
\ 'sbr:preamble,'
\.'bra:ExecuteBibliographyOptions{<+key=value+>},'
\.'bra:Bibliography{<+file+>},'
\.'sbr:localization,'
\.'brd:DefineBibliographyStrings{<+lang+>}{<+definitions+>},'
\.'brd:DefineBibliographyExtras{<+lang+>}{<+code+>},'
\.'brd:UndefineBibliographyExtras{<+lang+>}{<+code+>},'
\.'brd:DefineHyphenationExceptions{<+lang+>}{<+text+>},'
\.'bra:NewBibliographyString{<+key+>},'
\.'sbr:main_commands,'
\.'brs:cite[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:Cite[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:cite*[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:parencite[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:Parencite[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:parencite*[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:footcite[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:Footcite[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:textcite[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:Textcite[<+prenote+>][<+postnote+>]{<+key+>},'
\.'bra:supercite{<+key+>},'
\.'brs:autocite[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:Autocite[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:autocite*[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:Autocite*[<+prenote+>][<+postnote+>]{<+key+>},'
\.'sbr:multicites,'
\.'brs:cites(<+prenote+>)(<+postnote+>)[<+prenote+>][<+postnote+>]{<+key+>}[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:Cites(<+prenote+>)(<+postnote+>)[<+prenote+>][<+postnote+>]{<+key+>}[<+prenote+>][<+postnote+>]{<+key+>}[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:parencites(<+prenote+>)(<+postnote+>)[<+prenote+>][<+postnote+>]{<+key+>}[<+prenote+>][<+postnote+>]{<+key+>}[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:Parencites(<+prenote+>)(<+postnote+>)[<+prenote+>][<+postnote+>]{<+key+>}[<+prenote+>][<+postnote+>]{<+key+>}[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:footcites(<+prenote+>)(<+postnote+>)[<+prenote+>][<+postnote+>]{<+key+>}[<+prenote+>][<+postnote+>]{<+key+>}[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:Footcites(<+prenote+>)(<+postnote+>)[<+prenote+>][<+postnote+>]{<+key+>}[<+prenote+>][<+postnote+>]{<+key+>}[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:textcites(<+prenote+>)(<+postnote+>)[<+prenote+>][<+postnote+>]{<+key+>}[<+prenote+>][<+postnote+>]{<+key+>}[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:Textcites(<+prenote+>)(<+postnote+>)[<+prenote+>][<+postnote+>]{<+key+>}[<+prenote+>][<+postnote+>]{<+key+>}[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:supercites(<+prenote+>)(<+postnote+>){<+key+>}{<+key+>},'
\.'brs:autocites(<+prenote+>)(<+postnote+>)[<+prenote+>][<+postnote+>]{<+key+>}[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:Autocites(<+prenote+>)(<+postnote+>)[<+prenote+>][<+postnote+>]{<+key+>}[<+prenote+>][<+postnote+>]{<+key+>}[<+prenote+>][<+postnote+>]{<+key+>},'
\.'sbr:text_commands,'
\.'brs:citeauthor[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:Citeauthor[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:citetitle[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:citetitle*[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:citeyear[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:citeurl[<+prenote+>][<+postnote+>]{<+key+>},'
\.'sbr:special_commands,'
\.'bra:nocite{<+key+>},'
\.'nor:citereset,'
\.'nor:citereset*,'
\.'nor:mancite,'
\.'brs:fullcite[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:footfullcite[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:volcite[<+prenote+>]{<+volume+>}[<+page+>]{<+key+>},'
\.'brs:Volcite[<+prenote+>]{<+volume+>}[<+page+>]{<+key+>},'
\.'brs:pvolcite[<+prenote+>]{<+volume+>}[<+page+>]{<+key+>},'
\.'brs:Pvolcite[<+prenote+>]{<+volume+>}[<+page+>]{<+key+>},'
\.'brs:fvolcite[<+prenote+>]{<+volume+>}[<+page+>]{<+key+>},'
\.'brs:Fvolcite[<+prenote+>]{<+volume+>}[<+page+>]{<+key+>},'
\.'brs:tvolcite[<+prenote+>]{<+volume+>}[<+page+>]{<+key+>},'
\.'brs:Tvolcite[<+prenote+>]{<+volume+>}[<+page+>]{<+key+>},'
\.'brs:avolcite[<+prenote+>]{<+volume+>}[<+page+>]{<+key+>},'
\.'brs:Avolcite[<+prenote+>]{<+volume+>}[<+page+>]{<+key+>},'
\.'brs:notecite[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:Notecite[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:pnotecite[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:Pnotecite[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:fnotecite[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:Fnotecite[<+prenote+>][<+postnote+>]{<+key+>},'
\.'brs:citename[<+prenote+>][<+postnote+>]{<+key+>}[<+format+>]{<+list+>},'
\.'brs:citelist[<+prenote+>][<+postnote+>]{<+key+>}[<+format+>]{<+list+>},'
\.'brs:citefield[<+prenote+>][<+postnote+>]{<+key+>}[<+format+>]{<+field+>},'
\.'sbr:sorting,'
\.'eno:refsection[<+bibfiles+>],'
\.'noo:newrefsection[<+bibfiles+>],'
\.'eno:refsegment[<+bibfiles+>],'
\.'noo:newsegment[<+bibfiles+>],'
\.'bra:DeclareBibliographyCategory{<+category+>},'
\.'brd:addtocategory{<+category+>}{<+key+>},'
\.'brd:defbibheading{<+name+>}{<+code+>},'
\.'brd:defbibnote{<+name+>}{<+text+>},'
\.'bra:segment,'
\.'bra:type,'
\.'bra:keyword,'
\.'bra:category,'
\.'sbr:endmatter,'
\.'noo:printbibliography[<+key=value+>],'
\.'noo:printshorthands[<+key=value+>],'
\.'noo:bibbysection[<+key=value+>],'
\.'noo:bibbysegment[<+key=value+>],'
\.'noo:bibbycategory[<+key=value+>]'

View File

@@ -0,0 +1,10 @@
if exists("bm_package_file")
finish
endif
let bm_package_file = 1
let g:TeX_package_option_bm = ''
let g:TeX_package_bm = 'bra:bm'
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,12 @@
if exists("bophook_package_file")
finish
endif
let bophook_package_file = 1
let g:TeX_package_option_bophook = ''
let g:TeX_package_bophook =
\ 'bra:AtBeginPage,'
\.'bra:PageLayout'
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,10 @@
if exists("boxedminipage_package_file")
finish
endif
let boxedminipage_package_file = 1
let g:TeX_package_option_boxedminipage = ''
let g:TeX_package_boxedminipage = 'ens:boxedminipage:[<+pos+>]{<+size+>}'
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,43 @@
if exists("caption2_package_file")
finish
endif
let caption2_package_file = 1
let g:TeX_package_option_caption2 =
\ 'scriptsize,'
\.'footnotesize,'
\.'small,'
\.'normalsize,'
\.'large,'
\.'Large,'
\.'up,'
\.'it,'
\.'sl,'
\.'sc,'
\.'md,'
\.'bf,'
\.'rm,'
\.'sf,'
\.'tt,'
\.'ruled,'
\.'boxed,'
\.'centerlast,'
\.'anne,'
\.'center,'
\.'flushleft,'
\.'flushright,'
\.'oneline,'
\.'nooneline,'
\.'hang,'
\.'isu,'
\.'indent,'
\.'longtable'
let g:TeX_package_caption2 =
\ 'bra:captionsize,'
\.'bra:captionfont,'
\.'bra:captionlabelfont,'
\.'bra:setcaptionmargin,'
\.'bra:setcaptionwidth'
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,12 @@
if exists("cases_package_file")
finish
endif
let cases_package_file = 1
let g:TeX_package_option_cases = ''
let g:TeX_package_cases =
\ 'ens:numcases:{<+label+>},'
\.'ens:subnumcases:{<+label+>}'
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,20 @@
if exists("ccaption_package_file")
finish
endif
let ccaption_package_file = 1
let g:TeX_package_option_ccaption = ''
let g:TeX_package_ccaption =
\ 'bra:contcaption,'
\.'bra:legend,'
\.'bra:namedlegend,'
\.'abovelegendskip,'
\.'belowlegendskip,'
\.'brd:newfixedcaption,'
\.'brd:renewfixedcaption,'
\.'brd:providefixedcaption,'
\.'brs:newfloatenv[<+counter+>]{<+name+>}{<+ext+>}{<+etiq+>},'
\.'brd:listfloats'
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,35 @@
if exists("changebar_package_file")
finish
endif
let changebar_package_file = 1
let g:TeX_package_option_changebar =
\ 'DVItoLN03,'
\.'dvitoln03,'
\.'DVItoPS,'
\.'dvitops,'
\.'DVIps,'
\.'dvips,'
\.'emTeX,'
\.'emtex,'
\.'textures,'
\.'Textures,'
\.'outerbars,'
\.'innerbars,'
\.'leftbars,'
\.'rightbars,'
\.'traceon,'
\.'traceoff'
let g:TeX_package_changebar =
\ 'ens:changebar:[<+thickness+>],'
\.'noo:cbstart,'
\.'cbend,'
\.'cbdelete,'
\.'changebarwidth,'
\.'deletebarwidth,'
\.'changebarsep,'
\.'spe:changebargrey,'
\.'nochangebars'
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,24 @@
if exists("chapterbib_package_file")
finish
endif
let chapterbib_package_file = 1
let g:TeX_package_option_chapterbib =
\ 'sectionbib,'
\.'rootbib,'
\.'gather,'
\.'duplicate'
let g:TeX_package_chapterbib =
\ 'env:cbunit,'
\.'brd:sectionbib,'
\.'bra:cbinput,'
\.'sep:redefine,'
\.'bra:citeform,'
\.'bra:citepunct,'
\.'bra:citeleft,'
\.'bra:citeright,'
\.'bra:citemid,'
\.'bra:citedash'
" vim:ft=vim:ff=unix:

View File

@@ -0,0 +1,32 @@
if exists("cite_package_file")
finish
endif
let cite_package_file = 1
let g:TeX_package_option_cite =
\ 'verbose,'
\.'nospace,'
\.'space,'
\.'nosort,'
\.'sort,'
\.'noadjust'
let g:TeX_package_cite =
\ 'bra:cite,'
\.'bra:citen,'
\.'bra:citenum,'
\.'bra:citeonline,'
\.'bra:nocite,'
\.'sep:redefine,'
\.'bra:citeform,'
\.'bra:citepunct,'
\.'bra:citeleft,'
\.'bra:citeright,'
\.'bra:citemid,'
\.'bra:citedash'
syn region texRefZone matchgroup=texStatement start="\\citen\([tp]\*\=\)\={" keepend end="}\|%stopzone\>" contains=texComment,texDelimiter
syn region texRefZone matchgroup=texStatement start="\\citenum\([tp]\*\=\)\={" keepend end="}\|%stopzone\>" contains=texComment,texDelimiter
syn region texRefZone matchgroup=texStatement start="\\citeonline\([tp]\*\=\)\={" keepend end="}\|%stopzone\>" contains=texComment,texDelimiter
" vim:ft=vim:ff=unix:

Some files were not shown because too many files have changed in this diff Show More