1
0
Fork 0
mirror of https://github.com/kastdeur/dotfiles.git synced 2024-12-30 12:43:32 +01:00

Added vim plugin + autoindent\n use vi if vim is typed and not available

This commit is contained in:
Eric Teunis de Boone 2016-10-05 00:32:06 +02:00
parent ef8bf8ac54
commit 061f80b9b9
144 changed files with 30057 additions and 0 deletions

View file

@ -20,6 +20,8 @@ alias l='ls -CF'
# Use vim if possible instead of vi
if [[ $(command -v vim) ]]; then
alias vi='vim'
else
alias vim='vi'
fi
# Reload bashrc

40
vim/vim-latex/.gitignore vendored Executable file
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

29
vim/vim-latex/Makefile Executable file
View file

@ -0,0 +1,29 @@
PREFIX=/usr/local
VIMDIR=$(PREFIX)/share/vim
BINDIR=$(PREFIX)/bin
VERSION=1.8.23
DATE=$(shell date +%Y%m%d)
COMMIT_COUNT=$(shell git log --oneline | wc -l)
ABBREV_HASH=$(shell git log --oneline | head -n 1 | cut -d\ -f 1)
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)'
upload: snapshot
scp '$(SNAPSHOTNAME).tar.gz' frs.sourceforge.net:/home/frs/project/v/vi/vim-latex/snapshots
.PHONY: install upload

133
vim/vim-latex/Makefile.in Executable file
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

298
vim/vim-latex/compiler/tex.vim Executable file
View file

@ -0,0 +1,298 @@
" 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.
" }}}
" 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 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'), ' ')
exe 'setlocal efm+=%-G%.%#'.warningPat.'%.%#'
let i = i + 1
endwhile
endfunction
" }}}
" SetLatexEfm: sets the 'efm' for the latex compiler {{{
" Description:
function! <SID>SetLatexEfm()
let pm = ( g:Tex_ShowallLines == 1 ? '+' : '-' )
setlocal efm=
" remove default error formats that cause issues with revtex, where they
" match version messages
" Reference: http://bugs.debian.org/582100
setlocal efm-=%f:%l:%m
setlocal efm-=%f:%l:%c:%m
if !g:Tex_ShowallLines
call s:IgnoreWarnings()
endif
setlocal efm+=%E!\ LaTeX\ %trror:\ %m
setlocal efm+=%E!\ %m
setlocal efm+=%E%f:%l:\ %m
setlocal efm+=%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#
setlocal efm+=%+W%.%#\ at\ lines\ %l--%*\\d
setlocal efm+=%+WLaTeX\ %.%#Warning:\ %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%#'
exec 'setlocal efm+=%'.pm.'O(%*[^()])%r'
exec 'setlocal efm+=%'.pm.'P(%f%r'
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'
if g:Tex_IgnoreUnmatched && !g:Tex_ShowallLines
setlocal efm+=%-P%*[^()]
endif
exec 'setlocal efm+=%'.pm.'Q)%r'
exec 'setlocal efm+=%'.pm.'Q%*[^()])%r'
exec 'setlocal efm+=%'.pm.'Q[%\\d%*[^()])%r'
if g:Tex_IgnoreUnmatched && !g:Tex_ShowallLines
setlocal efm+=%-Q%*[^()]
endif
if g:Tex_IgnoreUnmatched && !g:Tex_ShowallLines
setlocal efm+=%-G%.%#
endif
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()
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

62
vim/vim-latex/doc/Makefile Executable file
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

29
vim/vim-latex/doc/Makefile.in Executable file
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

110
vim/vim-latex/doc/README Executable file
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>

17
vim/vim-latex/doc/README.new Executable file
View file

@ -0,0 +1,17 @@
====================================
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.
On Fedora, you can run as root:
yum install libxslt docbook-style-xsl docbook-dtds
to install the required packages.

12
vim/vim-latex/doc/catalog.xml Executable file
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>

761
vim/vim-latex/doc/db2vim/db2vim Executable file
View file

@ -0,0 +1,761 @@
#!/usr/bin/python
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
################################################################################
# encodeTo52(num) {{{
def encodeTo52(num):
ret = ''
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)
# }}}
# makeTocHash(rootElement) {{{
def makeTocHash(rootElement, width, prefix='', level=0):
retText = ""
sectionsTable = []
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'):
childText = makeTocHash(section, width - 5,
prefix = prefix+str(lastLabelUsed) + '_',
level = level + 1)
# }}}
# makeAnchorHash(rootElement) {{{
def makeAnchorHash(rootElement):
anchors = rootElement.getElementsByTagName('anchor') + rootElement.getElementsByTagName('note')
numAnchors = 0
for anchor in anchors:
if not anchor.getAttribute('id'):
continue
NUM_ANCHORS[0] += 1
if ANCHOR_HASH.has_key(anchor.getAttribute('id')) or TOC_HASH.has_key(anchor.getAttribute('id')):
print >> STDERR, "Warning: anchor [%s] multiply defined" % anchor.getAttribute('id')
ANCHOR_HASH[anchor.getAttribute('id')] = TOC_PREFIX + 'a_' + encodeTo52(NUM_ANCHORS[0] + 52)
# }}}
# makeURLHash(rootElement) {{{
def makeURLHash(rootElement):
urls = rootElement.getElementsByTagName('ulink')
numURLs = 0
for url in urls:
if not url.getAttribute('url') or URL_HASH.has_key(url.getAttribute('url')):
continue
numURLs += 1
URL_HASH[url.getAttribute('url')] = TOC_PREFIX + 'u_' + str(numURLs)
# }}}
# makeTOC(node, width, prefix='', level=0, maxleve=1): {{{
def makeTOC(node, width, maxlevel=1):
retText = ""
sectionsTable = []
lastLabelUsed = 0
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.
################################################################################
# IsInlineTag(self): {{{
def IsInlineTag(self):
if self.nodeType == self.TEXT_NODE:
return 1
elif inlineTags.get(self.tagName, 0):
return 1
else:
return 0
# }}}
# getChildrenByTagName(self, name): {{{
# Description: extension to the xml.dom.minidom.Element class.
# returns all direct descendants of this Element.
def getChildrenByTagName(self, name):
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
# }}}
# handleElement(rootElement, width=TEXT_WIDTH): {{{
def handleElement(rootElement, width=TEXT_WIDTH):
"""
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 handlerMaps.has_key(child.tagName):
# 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 handlerMaps.has_key(child.data):
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 handlerMaps.has_key(child.tagName):
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
################################################################################
# handleArticleInfo(articleinfo, width): {{{
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)
foldwarn = r'''
================================================================================
Viewing this file
This file can be viewed with all the sections and subsections folded to ease
navigation. By default, vim does not fold help documents. To create the folds,
press za now. The folds are created via a foldexpr which can be seen in the
last section of this file.
See |usr_28.txt| for an introduction to folding and |fold-commands| for key
sequences and commands to work with folds.
'''
return retText + '\n' + RightJustify('*' + FILENAME + '-toc*', width) + '\n' + toc + foldwarn
# }}}
# handleOption(option, width): {{{
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"
# }}}
# handleOptionDefault(default, width): {{{
def handleOptionDefault(default, width):
type = string.join(GetTextFromElementNode(default, "type"), "\n")
extra = string.join(GetTextFromElementNode(default, "extra"), "\n")
return type + "\t(" + extra + ")"
# }}}
# handleTableRoot(root, width): {{{
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'
# calculateColumnWidths(rows, width): {{{
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
# }}}
# calculateColumnWidthsDoublePass(rows, width): {{{
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
# }}}
# }}}
# handleCode(code, width): {{{
def handleCode(code, width):
retText = GetText(code.childNodes)
return " &codebegin;\n" + VertCatString(" ", 4, retText) + "&codeend;"
# }}}
# handleList(list, width, marker=0): {{{
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
# }}}
# handleNote(note, width): {{{
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"
# }}}
# handleParagraph(paragraph, width): {{{
def handleParagraph(paragraph, width):
partext = handleElement(paragraph, width)
partext = re.sub(r'\n+$', '', partext)
partext = re.sub(r'^\n+', '', partext)
return partext + "\n\n"
# }}}
# handleFormalParagraph(paragraph, width): {{{
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"
# }}}
# handleBlockQuote(block, width): {{{
def handleBlockQuote(block, width):
text = handleElement(block, width - BLOCK_QUOTE)
text = VertCatString(" "*BLOCK_QUOTE, \
BLOCK_QUOTE, text)
return text + "\n"
# }}}
# handleLink(link, width): {{{
def handleLink(link, width):
linkend = link.getAttribute('linkend')
if not ANCHOR_HASH.has_key(linkend):
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 + '|]'
# }}}
# handleAnchor(anchor, width): {{{
def handleAnchor(anchor, width):
anchorText = '*'+anchor.getAttribute('id')+'* '
anchorText += '*'+ANCHOR_HASH[anchor.getAttribute('id')]+'*'
return RightJustify(anchorText, width) \
+ "\n"
# }}}
# handleSection(section, width): {{{
def handleSection(section, width):
title = section.getChildrenByTagName('title')[0]
name = handleElement(title, width)
sectionid = section.getAttribute('id')
tagsformatted = ''
if TOC_HASH.has_key(sectionid):
tagsformatted = '*%s* ' % TOC_HASH[sectionid]
if ANCHOR_HASH.has_key(sectionid):
tagsformatted += '*%s* ' % ANCHOR_HASH[sectionid]
if sectionid and TOC_HASH.has_key(sectionid) 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"
# }}}
# handleUlink(ulink, width) {{{
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
# }}}
# handleIndexTerm(indexterm, width) {{{
def handleIndexTerm(indexterm, width) :
return ''
# }}}
# handleEmphasis(emphasis, width) {{{
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
# }}}
# replaceComment(matchobj) {{{
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
# }}}
# main function {{{
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 option.has_key('--help'):
usage();
sys.exit(0);
TOC_PREFIX = option.get('--prefix', 'ls_')
DEBUG = option.has_key('-d')
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/
The following modelines should nicely fold up this help manual.
vim:ft=help:fdm=expr:nowrap
vim:foldexpr=getline(v\:lnum-1)=~'-\\{80}'?'>2'\:getline(v\:lnum-1)=~'=\\{80}'?'>1'\:getline(v\:lnum)=~'=\\{80}'?'0'\:getline(v\:lnum)=~'-\\{80}'?'1'\:'='
vim:foldtext=substitute(v\:folddashes.substitute(getline(v\:foldstart),'\\s*\\*.*',"",""),'^--','\ \ \ \ \ \ ','')
================================================================================'''
STRICT = option.has_key('-s')
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:fdm=marker

View file

@ -0,0 +1,25 @@
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,224 @@
#!/usr/bin/env python
"""Contains functions to do word-wrapping on text paragraphs."""
import string
import re, random
import operator
# JustifyLine(line, width): {{{
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)
# }}}
# FillParagraphs(text, width=80, justify=0): {{{
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)
# }}}
# IndentParagraphs(text, width=80, indent=0, justify=0): {{{
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
# }}}
# OffsetText(text, indent): {{{
def OffsetText(text, indent):
return re.sub("^|\n", "\g<0>" + " "*indent, text)
# }}}
# RightJustify(lines, width): {{{
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
# }}}
# CenterText(lines, width): {{{
def CenterText(lines, width):
text = ''
for line in lines.split("\n"):
text += " "*(width/2 - len(line)/2) + line + '\n'
return text
# }}}
# TextWidth(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')))
# }}}
# FormatTable(tableText, ROW_SPACE=2, COL_SPACE = 3, \ {{{
# COL_WIDTH=30, TABLE_WIDTH=80, justify=0):
def FormatTable(tableText, ROW_SPACE=2, COL_SPACE = 3, \
COL_WIDTH=1000, justify=0, widths=None):
"""
FormatTable(tableText [, ROW_SPACE=2, COL_SPACE = 3, COL_WIDTH=30, justify=0])
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)
# }}}
# VertCatString(string1, width1, string2): {{{
def VertCatString(string1, width1, string2):
"""
VertCatString(string1, width1=None, string2)
returns string
Concatenates string1 and string2 vertically. The lines are assumed to
be "\n" seperated.
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:fdm=marker

116
vim/vim-latex/doc/imaps.txt Executable file
View file

@ -0,0 +1,116 @@
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
================================================================================
Viewing this file
This file can be viewed with all the sections and subsections folded to ease
navigation. By default, vim does not fold help documents. To create the folds,
press za now. The folds are created via a foldexpr which can be seen in the
last section of this file.
See |usr_28.txt| for an introduction to folding and |fold-commands| for key
sequences and commands to work with folds.
================================================================================
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.
================================================================================
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/
The following modelines should nicely fold up this help manual.
vim:ft=help:fdm=expr:nowrap
vim:foldexpr=getline(v\:lnum-1)=~'-\\{80}'?'>2'\:getline(v\:lnum-1)=~'=\\{80}'?'>1'\:getline(v\:lnum)=~'=\\{80}'?'0'\:getline(v\:lnum)=~'-\\{80}'?'1'\:'='
vim:foldtext=substitute(v\:folddashes.substitute(getline(v\:foldstart),'\\s*\\*.*',"",""),'^--','--\ \ \ \ ','')
================================================================================

View file

@ -0,0 +1,52 @@
<?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">
<!-- $Id: latex-suite-chunk.xsl 1036 2008-05-31 16:10:30Z tmaas $ -->
<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,448 @@
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
================================================================================
Viewing this file
This file can be viewed with all the sections and subsections folded to ease
navigation. By default, vim does not fold help documents. To create the folds,
press za now. The folds are created via a foldexpr which can be seen in the
last section of this file.
See |usr_28.txt| for an introduction to folding and |fold-commands| for key
sequences and commands to work with folds.
================================================================================
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. Remember to make sure your 'grepprg' setting of
Vim works.
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 eqnarray. Escape to normal mode and press
<F5>. (Remember: <F5> is very useful!) This time, the line will change to: >
\begin{eqnarray}
\label{}<++>
\end{eqnarray}<++>
<with the cursor between the {}. Enter a 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!
================================================================================
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 between {}'s. (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. You can use == as a
shortcut for &=&. Latex-Suite provides a large number of such 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.
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{eqnarray}
\label{eqn:simple}
1 + 1 = 2
\end{eqnarray}
================================================================================
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{eqnarray}
11 \label{eqn:euler}
12 e^{j\pi} + 1 &=& 0
13 \end{eqnarray}
14 This is the famous euler equation. I
15 will type another equation, just as
16 true:
17 \begin{eqnarray}
18 \label{eqn:simple}
19 1 + 1 &=& 2
20 \end{eqnarray}
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: eqnarray (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: eqnarray (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 two new windows and it should look like below: >
9 \begin{document}
10 +-- 4 lines: eqnarray (eqn:euler) : \label{eqn:euler}-----------------------
14 This is the famous euler equation. I
15 will type another equation, just as
16 true:
17 +-- 4 lines: eqnarray (eqn:simple) : \label{eqn:simple}---------------------
21 This is my contribution to mathematics.
22 This is a reference to (\ref{}<++>)<++>
23 \end{document}
~
~
~
test.tex [+] 22,29 Bot
test.tex|11| \label{eqn:euler}
test.tex|18| \label{eqn:simple}
~
~
~
[Error List] 1,1 All
7 \usepackage[sumlimits,]{amsmath}
8
9 \begin{document}
10 \begin{eqnarray}
11 \label{eqn:euler}
12 e^{j\pi} + 1 &=& 0
13 \end{eqnarray}
14 This is the famous euler equation. I
15 will type another equation, just as
16 true:
test.tex [Preview][+] 11,2-5 46%
The cursor will relocate to the middle window which shows all \labels found in
all the .tex file in the current directory. You can scroll up and down in the
middle window till you reach the reference you want to insert. Notice how when
you scroll in the middle window, the bottom "Preview" window scrolls
automatically to show you the location of the current selection. This helps you
identify the reference with greater ease because often times, \labels are not
descriptive enough or there might be too many of them. To insert the reference,
just position the cursor on the relevant line in the middle window and press
<enter>. The line which you were editing will change to: >
This is a reference to (\ref{eqn:euler})
<and the bottom windows close 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. Th 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/
The following modelines should nicely fold up this help manual.
vim:ft=help:fdm=expr:nowrap
vim:foldexpr=getline(v\:lnum-1)=~'-\\{80}'?'>2'\:getline(v\:lnum-1)=~'=\\{80}'?'>1'\:getline(v\:lnum)=~'=\\{80}'?'0'\:getline(v\:lnum)=~'-\\{80}'?'1'\:'='
vim:foldtext=substitute(v\:folddashes.substitute(getline(v\:foldstart),'\\s*\\*.*',"",""),'^--','\ \ \ \ \ \ ','')
================================================================================

View file

@ -0,0 +1,471 @@
<?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. Remember to make sure your
<literal>'grepprg'</literal> setting of &vim; works.
</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>eqnarray</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{eqnarray}
\label{}&ph;
\end{eqnarray}&ph;</programlisting>
with the cursor between the <literal>{}</literal>. Enter a label. 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>
</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 &amp;=&amp; 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 between
<literal>{}</literal>'s. (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. You can use <literal>==</literal> as a shortcut for
<literal>&amp;=&amp;</literal>. Latex-Suite provides a large number
of such 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>
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{eqnarray}
\label{eqn:simple}
1 + 1 = 2
\end{eqnarray}</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{eqnarray}
11 \label{eqn:euler}
12 e^{j\pi} + 1 &amp;=&amp; 0
13 \end{eqnarray}
14 This is the famous euler equation. I
15 will type another equation, just as
16 true:
17 \begin{eqnarray}
18 \label{eqn:simple}
19 1 + 1 &amp;=&amp; 2
20 \end{eqnarray}
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: eqnarray (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: eqnarray (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 two new windows and it should look like below:
<programlisting>
9 \begin{document}
10 +-- 4 lines: eqnarray (eqn:euler) : \label{eqn:euler}-----------------------
14 This is the famous euler equation. I
15 will type another equation, just as
16 true:
17 +-- 4 lines: eqnarray (eqn:simple) : \label{eqn:simple}---------------------
21 This is my contribution to mathematics.
22 This is a reference to (\ref{}&lt;++&gt;)&lt;++&gt;
23 \end{document}
~
~
~
test.tex [+] 22,29 Bot
test.tex|11| \label{eqn:euler}
test.tex|18| \label{eqn:simple}
~
~
~
[Error List] 1,1 All
7 \usepackage[sumlimits,]{amsmath}
8
9 \begin{document}
10 \begin{eqnarray}
11 \label{eqn:euler}
12 e^{j\pi} + 1 &amp;=&amp; 0
13 \end{eqnarray}
14 This is the famous euler equation. I
15 will type another equation, just as
16 true:
test.tex [Preview][+] 11,2-5 46%
</programlisting>
</para>
<imageobject>
<imagedata fileref="" format=""></imagedata>
</imageobject>
<para>
The cursor will relocate to the middle window which shows all
<literal>\label</literal>s found in all the <literal>.tex</literal> file
in the current directory.
You can scroll up and down in the middle window till you reach the
reference you want to insert. Notice how when you scroll in the
middle window, the bottom "Preview" window scrolls automatically to
show you the location of the current selection. This helps you
identify the reference with greater ease because often times,
<literal>\labels</literal> are not descriptive enough or there might be too
many of them. To insert the reference, just position the cursor on
the relevant line in the middle window 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 windows close 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
-->

182
vim/vim-latex/doc/latex-suite.css Executable file
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" */
}

3462
vim/vim-latex/doc/latex-suite.txt Executable file

File diff suppressed because it is too large Load diff

4666
vim/vim-latex/doc/latex-suite.xml Executable file

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>

2430
vim/vim-latex/doc/latexhelp.txt Executable file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,15 @@
" 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.
"
" 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
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4:nowrap

View file

@ -0,0 +1,265 @@
"=============================================================================
" 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
" }}}
function! s:Input(prompt, ask) " {{{
if a:ask == 1
let retval = input(a:prompt)
if retval == ''
return "<++>"
endif
else
return "<++>"
endif
endfunction
" }}}
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4

View file

@ -0,0 +1,221 @@
# Author: Srinath Avadhanula
# This file is distributed as part of the vim-latex project
# http://vim-latex.sf.net
import re
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},
}
"""
if macros:
for k, v in macros.iteritems():
txt = txt.replace(k, '{'+v+'}')
m = re.match(r'\s*@(\w+){\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 = mniter.next()
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 self.iteritems():
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):
fields = open(file).read().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):
def cmpfun(b1, b2):
for f in self.sortfields:
c = cmp(b1[f], b2[f])
if c:
return c
return 0
self.bibentries.sort(cmp=cmpfun)
if __name__ == "__main__":
import sys
bf = BibFile(sys.argv[1])
print bf

View file

@ -0,0 +1,144 @@
" ==============================================================================
" 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()
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>')
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,874 @@
"=============================================================================
" File: compiler.vim
" Author: Srinath Avadhanula
" Created: Tue Apr 23 05:00 PM 2002 PST
"
" Description: functions for compiling/viewing/searching latex documents
"=============================================================================
" 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 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
elseif a:type == 'View' && has('macunix')
" 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
else
let s: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 '.s: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 s: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') != '')
let _makeprg = &l:makeprg
call Tex_Debug("Tex_CompileLatex: using the makefile in the current directory", "comp")
let &l:makeprg = 'make $*'
if exists('s:target')
call Tex_Debug('Tex_CompileLatex: execing [make! '.s:target.']', 'comp')
exec 'make! '.s:target
else
call Tex_Debug('Tex_CompileLatex: execing [make!]', 'comp')
exec 'make!'
endif
let &l:makeprg = _makeprg
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 '.s: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 s: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 '.s: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 s: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('macunix') && Tex_GetVarValue('Tex_TreatMacViewerAsUNIX') != 1)
if strlen(s:viewer)
let appOpt = '-a '
else
let appOpt = ''
endif
let execString = 'open '.appOpt.s:viewer.' $*.'.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 )
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 '.s:origdir
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 s:origdir = fnameescape(getcwd())
let mainfname = Tex_GetMainFileName(':t')
let mainfnameRoot = fnamemodify(Tex_GetMainFileName(), ':t:r')
let mainfnameFull = Tex_GetMainFileName(':p:r')
" 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)
if (has('win32') && (viewer =~? '^ *yap\( \|$\)'))
let execString = 'silent! !start '. viewer.' -s '.line('.').expand('%').' '.mainfnameRoot
elseif (has('macunix') && (viewer =~ '^ *\(Skim\|PDFView\|TeXniscope\)\( \|$\)'))
" We're on a Mac using a traditional Mac viewer
if viewer =~ '^ *Skim'
let execString = 'silent! !/Applications/Skim.app/Contents/SharedSupport/displayline '.
\ line('.').' "'.mainfnameFull.'.'.s:target.'" "'.expand("%:p").'"'
elseif viewer =~ '^ *PDFView'
let execString = 'silent! !/Applications/PDFView.app/Contents/MacOS/gotoline.sh '.
\ line('.').' "'.mainfnameFull.'.'.s:target.'" "'.expand("%:p").'"'
elseif viewer =~ '^ *TeXniscope'
let execString = 'silent! !/Applications/TeXniscope.app/Contents/Resources/forward-search.sh '.
\ line('.').' "'.expand("%:p").'" "'.mainfnameFull.'.'.s:target.'"'
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\)\( \|$\)'
if Tex_GetVarValue('Tex_UseEditorSettingInDVIViewer') == 1 &&
\ exists('v:servername') &&
\ viewer =~ '^ *xdvik\?\( \|$\)'
let execString = 'silent! !'.viewer.' -name xdvi -sourceposition "'.line('.').' '.expand("%").'"'.
\ ' -editor "gvim --servername '.v:servername.' --remote-silent +\%l \%f" '.
\ mainfnameRoot.'.dvi'
elseif viewer =~ '^ *kdvi'
let execString = 'silent! !'.viewer.' --unique file:'.mainfnameRoot.'.dvi\#src:'.line('.').expand("%")
elseif viewer =~ '^ *xdvik\?\( \|$\)'
let execString = 'silent! !'.viewer.' -name xdvi -sourceposition "'.line('.').' '.expand("%").'" '.mainfnameRoot.'.dvi'
elseif viewer =~ '^ *okular'
let execString = 'silent! !'.viewer.' --unique '.mainfnameRoot.'.'.s:target.'\#src:'.line('.').expand("%:p")
endif
else
" We must be using a generic UNIX viewer
" syntax is: viewer TARGET_FILE LINE_NUMBER SOURCE_FILE
let execString = 'silent! !'.viewer.' "'.mainfnameRoot.'.'.s:target.'" '.line('.').' "'.expand('%').'"'
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 '.s: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
exec 'drop '.tmpfile
" 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 s: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 run bibtex and if the .bbl file
" changes, we will rerun latex.
if runCount == 0 && Tex_IsPresentInFile('\\bibdata', 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.
exec 'silent! cfile '.mainFileName_root.'.log'
exe 'cd '.s: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>
vnoremap <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
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4

View file

@ -0,0 +1,255 @@
"=============================================================================
" 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("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 '.Tex_EscapeSpaces(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, ',')
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 for insertion:')
endif
if filereadable(s:macrodirpath.filename)
" If file exists in local directory open it.
exec 'split '.Tex_EscapeSpaces(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 '.Tex_EscapeSpaces(s:macrodirpath.filename.'-local')
elseif ch == 2
new
exe '0read '.Tex_FindInRtp(filename, 'macros')
" 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')
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 filelist = Tex_FindInRtp('', 'macros')
let filename =
\ Tex_ChooseFromPrompt("Choose a macro file:\n" .
\ Tex_CreatePrompt(filelist, 2, ',') .
\ "\nEnter number or name of file :",
\ filelist, ',')
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)
let @a = _a
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,677 @@
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
eqnarray
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 "vnoremap <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 "vnoremap <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 "vnoremap ".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,400 @@
"=============================================================================
" File: folding.vim
" Author: Srinath Avadhanula
" modifications/additions by Zhang Linbo
" Created: Tue Apr 23 05:00 PM 2002 PST
"
" Description: functions to interact with Syntaxfolds.vim
"=============================================================================
nnoremap <unique> <Plug>Tex_RefreshFolds :call MakeTexFolds(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 && g:Tex_AutoFolding
call MakeTexFolds(0)
endif
let s:ml = '<Leader>'
call Tex_MakeMap(s:ml."rf", "<Plug>Tex_RefreshFolds", 'n', '<silent> <buffer>')
endfunction " }}}
" Tex_FoldSections: creates section folds {{{
" Author: Zhang Linbo
" 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 . '^\s*\\' . label . '\W\|^\s*%%fake' . label
let prefix = '\W\|'
endfor
let s = pattern
endif
let endpat = s . '\|' . a:endpat
if i > 0
call Tex_FoldSections(strpart(a:lst,i+1), endpat)
endif
let endpat = '^\s*\\appendix\W\|' . endpat
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)
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 \bf{text} and
" will _not_ start a fold.
" In other words, the pattern is safe, but not exact.
call AddSyntaxFoldItem('^\s*\\'.s.'{[^{}]*$','^[^}]*}',0,0)
else
call AddSyntaxFoldItem('^\s*\\begin{'.s,'\(^\|\s\)\s*\\end{'.s,0,0)
endif
endif
endwhile
let pass = pass + 1
endwhile
" }}}
" Sections {{{
if g:Tex_FoldedSections != ''
call Tex_FoldSections(g:Tex_FoldedSections,
\ '^\s*\\frontmatter\|^\s*\\mainmatter\|^\s*\\backmatter\|'
\. '^\s*\\begin{thebibliography\|>>>\|^\s*\\endinput\|'
\. '^\s*\\begin{slide\|^\s*\\end{document')
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)
normal! zv
endfunction
" }}}
" TexFoldTextFunction: create fold text for folds {{{
function! TexFoldTextFunction()
let leadingSpace = matchstr(' ', ' \{,'.indent(v:foldstart).'}')
if getline(v:foldstart) =~ '^\s*\\begin{'
let header = matchstr(getline(v:foldstart),
\ '^\s*\\begin{\zs\([:alpha:]*\)[^}]*\ze}')
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', '')
end
let i = i + 1
endwhile
let ftxto = foldtext()
" if no caption found, then use the second line.
if caption == ''
let caption = getline(v:foldstart + 1)
end
let retText = matchstr(ftxto, '^[^:]*').': '.header.
\ ' ('.label.'): '.caption
return leadingSpace.retText
elseif getline(v:foldstart) =~ '^%' && getline(v:foldstart) !~ '^%%fake'
let ftxto = foldtext()
return leadingSpace.substitute(ftxto, ':', ': % ', '')
elseif getline(v:foldstart) =~ '^\s*\\document\(class\|style\).*{'
let ftxto = leadingSpace.foldtext()
return substitute(ftxto, ':', ': Preamble: ', '')
else
return leadingSpace.foldtext()
end
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æ 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,194 @@
#!/usr/bin/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
import StringIO
# getFileContents {{{
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'^\\(@?)(include|input){(.*?)}', re.M)
contents = re.sub(pat, getFileContents, contents)
return ('%%==== FILENAME: %s' % fname) + '\n' + contents
# }}}
# stripComments {{{
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
# }}}
# addFileNameAndNumber {{{
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
# }}}
# getSectionLabels_Root {{{
def getSectionLabels_Root(lineinfo, section_prefix, label_prefix):
prev_txt = ''
inside_env = 0
prev_env = ''
outstr = StringIO.StringIO('')
pres_depth = len(section_prefix)
#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'\\label{(%s.*?)}' % label_prefix, line)
if m:
# add the current line (except the \label command) to the text
# which will be displayed below this label
prev_txt += re.search(r'(^.*?)\\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.
print >>outstr, '>%s%s\t\t<%s>' % (' '*(2*pres_depth+2),
m.group(1), fname)
print >>outstr, ':%s%s' % (' '*(2*pres_depth+4), 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|eqnarray|align|figure)', line):
prev_txt = ''
prev_env = re.search(r'\\begin{(.*?)}', line).group(1)
inside_env = 1
elif re.search(r'\\label', line):
prev_txt = ''
elif re.search(r'\\end{(equation|eqnarray|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()
# }}}
# getSectionLabels {{{
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
# }}}
# main {{{
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)
# vim: fdm=marker

View file

@ -0,0 +1,676 @@
"=============================================================================
" 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"))
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 '.Tex_EscapeSpaces(fname), 'pack')
exe 'sview '.Tex_EscapeSpaces(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
call Tex_Debug(':Tex_pack_updateall: silent! find '.Tex_EscapeSpaces(packname).'.sty', 'pack')
let thisbufnum = bufnr('%')
exec 'silent! find '.Tex_EscapeSpaces(packname).'.sty'
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
let @a = saveA
let @" = saveUnnamed
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+>}<++>'
let s:CommandSpec_ens = '\begin{<+replace+>}<+extra+>'."\<CR><++>\<CR>".'\end{<+replace+>}<++>'
let s:CommandSpec_eno = '\begin[<++>]{<+replace+>}'."\<CR><++>\<CR>".'\end{<+replace+>}'
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,98 @@
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'
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:

View file

@ -0,0 +1,43 @@
if exists("color_package_file")
finish
endif
let color_package_file = 1
let g:TeX_package_option_color =
\ 'monochrome,'
\.'debugshow,'
\.'dvips,'
\.'xdvi,'
\.'dvipdf,'
\.'pdftex,'
\.'dvipsone,'
\.'dviwindo,'
\.'emtex,'
\.'dviwin,'
\.'oztex,'
\.'textures,'
\.'pctexps,'
\.'pctexwin,'
\.'pctexhp,'
\.'pctex32,'
\.'truetex,'
\.'tcidvi,'
\.'dvipsnames,'
\.'nodvipsnames,'
\.'usenames'
let g:TeX_package_color =
\ 'brs:definecolor{<++>}{<++>}{<++>},'
\.'brs:DefineNamedColor{<++>}{<++>}{<++>}{<++>},'
\.'bra:color,'
\.'nob:color,'
\.'brd:textcolor,'
\.'brs:textcolor[<++>]{<++>}{<++>},'
\.'brd:colorbox,'
\.'brs:colorbox[<++>]{<++>}{<++>},'
\.'brs:fcolorbox{<++>}{<++>}{<++>},'
\.'brs:fcolorbox[<++>]{<++>}{<++>}{<++>},'
\.'brd:pagecolor,'
\.'nob:pagecolor'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,12 @@
if exists("comma_package_file")
finish
endif
let comma_package_file = 1
let g:TeX_package_option_comma = ''
let g:TeX_package_comma =
\ 'bra:commaform,'
\.'bra:commaformtoken'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,104 @@
" Csquotes 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
" csquotes 4.4a, July 4 2009
" It can be used, modified and distributed according to the vim license.
if exists("csquotes_package_file")
finish
endif
let csquotes_package_file = 1
let g:TeX_package_option_csquotes =
\ 'strict=,'
\.'babel=,'
\.'maxlevel=,'
\.'style=,'
\.'danish=,'
\.'english=,'
\.'french=,'
\.'german=,'
\.'italian=,'
\.'norwegian=,'
\.'portuguese=,'
\.'spanish=,'
\.'swedish='
let g:TeX_package_csquotes =
\ 'sbr:basic,'
\.'bra:enquote{<+text+>},'
\.'bra:enquote*{<+text+>},'
\.'brs:textquote[<+cite+>][<+punct+>]{<+text+>},'
\.'brs:textquote*[<+cite+>][<+punct+>]{<+text+>},'
\.'brs:blockquote[<+cite+>][<+punct+>]{<+text+>},'
\.'sbr:foreign_text,'
\.'brd:foreignquote{<+lang+>}{<+text+>},'
\.'brd:foreignquote*{<+lang+>}{<+text+>},'
\.'brd:hyphenquote{<+lang+>}{<+text+>},'
\.'brd:hyphenquote*{<+lang+>}{<+text+>},'
\.'brs:foreigntextquote{<+lang+>}[<+cite+>][<+punct+>]{<+text+>},'
\.'brs:foreigntextquote*{<+lang+>}[<+cite+>][<+punct+>]{<+text+>},'
\.'brs:hyphentextquote{<+lang+>}[<+cite+>][<+punct+>]{<+text+>},'
\.'brs:hyphentextquote*{<+lang+>}[<+cite+>][<+punct+>]{<+text+>},'
\.'brs:foreignblockquote{<+lang+>}[<+cite+>][<+punct+>]{<+text+>},'
\.'brs:hyphenblockquote{<+lang+>}[<+cite+>][<+punct+>]{<+text+>},'
\.'sbr:active_quotes,'
\.'bra:MakeOuterQuote{<+character+>},'
\.'bra:MakeInnerQuote{<+character+>},'
\.'brd:MakeAutoQuote{<+opening_character+>}{<+closing_character+>},'
\.'brd:MakeAutoQuote*{<+opening_character+>}{<+closing_character+>},'
\.'brs:MakeForeignQuote{<+lang+>}{<+opening_character+>}{<+closing_character+>},'
\.'brs:MakeForeignQuote*{<+lang+>}{<+opening_character+>}{<+closing_character+>},'
\.'brs:MakeHyphenQuote{<+lang+>}{<+opening_character+>}{<+closing_character+>},'
\.'brs:MakeHyphenQuote*{<+lang+>}{<+opening_character+>}{<+closing_character+>},'
\.'brs:MakeBlockQuote{<+opening_character+>}{<+delimiter+>}{<+closing_character+>},'
\.'brs:MakeForeignBlockQuote{<+lang+>}{<+opening_character+>}{<+delimiter+>}{<+closing_character+>},'
\.'brs:MakeHyphenBlockQuote{<+lang+>}{<+opening_character+>}{<+delimiter+>}{<+closing_character+>},'
\.'nor:EnableQuote,'
\.'nor:DisableQuotes,'
\.'nor:VerbatimQuotes,'
\.'nor:DeleteQuotes,'
\.'sbr:automatic_citation,'
\.'brs:textcquote[<+prenote+>][<+postnote+>]{<+key+>}[<+punct+>]{<+text+>},'
\.'brs:textcquote*[<+prenote+>][<+postnote+>]{<+key+>}[<+punct+>]{<+text+>},'
\.'brs:foreigntextcquote{<+lang+>}[<+prenote+>][<+postnote+>]{<+key+>}[<+punct+>]{<+text+>},'
\.'brs:foreigntextcquote*{<+lang+>}[<+prenote+>][<+postnote+>]{<+key+>}[<+punct+>]{<+text+>},'
\.'brs:hyphentextcquote{<+lang+>}[<+prenote+>][<+postnote+>]{<+key+>}[<+punct+>]{<+text+>},'
\.'brs:hyphentextcquote*{<+x+>}[<+prenote+>][<+postnote+>]{<+key+>}[<+punct+>]{<+text+>},'
\.'brs:blockcquote[<+prenote+>][<+postnote+>]{<+key+>}[<+punct+>]{<+text+>},'
\.'brs:foreignblockcquote{<+lang+>}[<+prenote+>][<+postnote+>]{<+key+>}[<+punct+>]{<+text+>},'
\.'brs:hyphenblockcquote{<+lang+>}[<+prenote+>][<+postnote+>]{<+key+>}[<+punct+>]{<+text+>},'
\.'sbr:display_quotes,'
\.'ens:displayquote:[<+cite+>][<+punct+>],'
\.'ens:foreigndisplayquote:{<+lang+>}[<+cite+>][<+punct+>],'
\.'ens:hyphendisplayquote:{<+lang+>}[<+cite+>][<+punct+>],'
\.'ens:displaycquote:[<+prenote+>][<+postnote+>]{<+key+>}[<+punct+>],'
\.'ens:foreigndisplaycquote:{<+lang+>}[<+prenote+>][<+postnote+>]{<+key+>}[<+punct+>],'
\.'ens:hyphendisplaycquote:{<+lang+>}[<+prenote+>][<+postnote+>]{<+key+>}[<+punct+>],'
\.'sbr:config,'
\.'nob:setquotestyle,'
\.'nor:setquotestyle*,'
\.'brs:DeclareQuoteStyle[<+variant+>]{<+style+>}[<+outer_init+>][<+inner_init+>]{<+opening_outer_mark+>}[<+middle_outer_mark+>]{<+closing_outer_mark+>}[<+kern+>]{<+opening_inner_mark+>}[<+middle_inner_mark+>]{<+closing_inner_mark+>},'
\.'brs:DeclareQuoteAlias[<+variant+>]{<+style+>}{<+alias+>},'
\.'bra:DeclareQuoteOption{<+style+>},'
\.'bra:ExecuteQuoteOptions{<+key=value+>},'
\.'brs:DeclarePlainStyle{<+opening_outer_mark+>}{<+closing_outer_mark+>}{<+opening_inner_mark+>}{<+closing_inner_mark+>},'
\.'bra:SetBlockThreshold{<+integer+>},'
\.'bra:SetBlockEnvironment{<+environment+>},'
\.'bra:SetCiteCommand{<+command+>},'
\.'sbr:helper_expressions,'
\.'brd:ifblockquote,'
\.'brd:ifquotepunct,'
\.'brd:ifquoteterm,'
\.'brd:ifquotecolon,'
\.'brd:ifquotecomma,'
\.'brd:ifquoteexcmlam,'
\.'brd:ifquotequestion,'
\.'brd:ifquotesemicolon,'
\.'brs:ifstringblank{<+string+>}{<+true+>}{<+false+>}'
let g:TeX_SmartQuoteOpen = "\\enquote\{"
let g:TeX_SmartQuoteClose = "\}"

View file

@ -0,0 +1,36 @@
if exists("deleq_package_file")
finish
endif
let deleq_package_file = 1
let g:TeX_package_option_deleq = ''
let g:TeX_package_deleq =
\.'env:deqn,'
\.'env:ddeqn,'
\.'env:deqarr,'
\.'env:ddeqar,'
\.'env:deqrarr,'
\.'nor:nydeqno,'
\.'nor:heqno,'
\.'bra:reqno,'
\.'bra:rndeqno,'
\.'bra:rdeqno,'
\.'nob:eqreqno,'
\.'nob:deqreqno,'
\.'nob:ddeqreqno,'
\.'bra:arrlabel,'
\.'nor:where,'
\.'bra:remtext,'
\.'nor:nydeleqno,'
\.'nor:deleqno,'
\.'nor:jotbaseline'
if !exists("tex_no_math")
syn region texMathZoneA start="\\begin\s*{\s*deqn\*\s*}" end="\\end\s*{\s*deqn\*\s*}" keepend fold contains=@texMathZoneGroup
syn region texMathZoneB start="\\begin\s*{\s*ddeqn\*\s*}" end="\\end\s*{\s*ddeqn\*\s*}" keepend fold contains=@texMathZoneGroup
syn region texMathZoneC start="\\begin\s*{\s*deqarr\s*}" end="\\end\s*{\s*deqarr\s*}" keepend fold contains=@texMathZoneGroup
syn region texMathZoneD start="\\begin\s*{\s*ddeqar\s*}" end="\\end\s*{\s*ddeqar\s*}" keepend fold contains=@texMathZoneGroup
syn region texMathZoneE start="\\begin\s*{\s*deqrarr\*\s*}" end="\\end\s*{\s*deqrarr\*\s*}" keepend fold contains=@texMathZoneGroup
endif
" vim:ft=vim:ff=unix:noet:ts=4:

View file

@ -0,0 +1,29 @@
if exists("drftcite_package_file")
finish
endif
let drftcite_package_file = 1
let g:TeX_package_option_drftcite =
\ 'verbose,'
\.'nospace,'
\.'space,'
\.'breakcites,'
\.'manualsort,'
\.'tt,'
\.'shownumbers,'
\.'nocitecount'
let g:TeX_package_drftcite =
\ 'bra:cite,'
\.'bra:citen,'
\.'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
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,12 @@
if exists("dropping_package_file")
finish
endif
let dropping_package_file = 1
let g:TeX_package_option_dropping = ''
let g:TeX_package_dropping =
\ 'brs:bigdrop{<+indent+>}{<+big+>}{<+font+>}{<+text+>},'
\.'brs:dropping[<+indent+>]{<+big+>}{<+text+>}'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,10 @@
if exists("enumerate_package_file")
finish
endif
let enumerate_package_file = 1
let g:TeX_package_option_enumerate = ''
let g:TeX_package_enumerate = 'ens:enumerate:[<+prefix+>]'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,19 @@
if exists("eqlist_package_file")
finish
endif
let eqlist_package_file = 1
let g:TeX_package_option_eqlist = ''
let g:TeX_package_eqlist =
\ 'env:eqlist,'
\.'env:eqlist*,'
\.'env:Eqlist,'
\.'env:Eqlist*,'
\.'sep:modificators,'
\.'eqlistinit,'
\.'eqliststarinit,'
\.'eqlistinitpar,'
\.'eqlistlabel'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,12 @@
if exists("eqparbox_package_file")
finish
endif
let eqparbox_package_file = 1
let g:TeX_package_option_eqparbox = ''
let g:TeX_package_eqparbox =
\ 'brs:eqparbox[<+pos+>][<+height+>][<+inner-pos+>]{<+tag+>}{<+text+>},'
\.'bra:eqboxwidth'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,10 @@
if exists("everyshi_package_file")
finish
endif
let everyshi_package_file = 1
let g:TeX_package_option_everyshi = ''
let g:TeX_package_everyshi = 'bra:EveryShipOut'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,55 @@
if exists("exmpl_package_file")
finish
endif
let exmpl_package_file = 1
" Author: Mikolaj Machowski
" Date: 10.04.2002
" Example plugin for packages in latexSuite
"
" This variable creates Options submenu in package menu. Even when no options are
" given for this package it HAS to exist in form
" let TeX_package_option_exmpl = ""
" Options and commands are delimited with comma ,
let g:TeX_package_option_exmpl = "OpcjaA=,OpcjaB,OpcjaC"
" Most command should have some definition before. Package menu system can
" recognize type of command and behave in good manner:
" env: (environment) creates simple environment template
" \begin{command}
" x <- cursor here
" \end{command}
"
" bra: (brackets) useful when inserting brackets commands
" \command{x}<<>> <- cursor at x, and placeholders as in other menu entries
"
" nor: (normal) nor: and pla: are `highlighted' in menu with `''
" \command<Space>
"
" pla: (plain)
" command<Space>
"
" spe: (special)
" command <-literal insertion of command, in future here should go
" commands with special characters
"
" sep: (separator) creates separator. Good for aesthetics and usability :)
"
" Command can be also given with no prefix:. The result is
" \command (as in nor: but without <Space>)
let g:TeX_package_exmpl = "env:AEnvFirst,env:aEnvSec,env:BThi,"
\ . "sep:a,env:zzzz,"
\ . "bra:aBraFirst,bra:bBraSec,bra:cBraThi,"
\ . "sep:b,"
\ . "nor:aNorPri,nor:bNorSec,nor:cNorTer,"
\ . "sep:c,"
\ . "pla:aPla1,pla:bPla2,pla:cPla3,"
\ . "sep:d,"
\ . "spe:aSpe1,spe:bSpe2,spe:cSpe3,"
\ . "sep:e,"
\ . "aNo1,bNo2,cNo3"
" vim:ft=vim

View file

@ -0,0 +1,42 @@
" Fixme 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
" fixme November 28 2007
" It can be used, modified and distributed according to the vim license.
if exists("fixme_package_file")
finish
endif
let fixme_package_file = 1
let g:TeX_package_option_fixme =
\ 'draft,'
\.'final,'
\.'silent,'
\.'nosilent,'
\.'inline,'
\.'margin,'
\.'marginclue,'
\.'footnote,'
\.'index,'
\.'noinline,'
\.'nomargin,'
\.'nomarginclue,'
\.'nofootnote,'
\.'noindex'
let g:TeX_package_fixme =
\ 'sbr:simple,'
\.'nob:fixme[<+layout+>]{<+note+>},'
\.'nob:fxnote[<+layout+>]{<+note+>},'
\.'nob:fxwarning[<+layout+>]{<+note+>},'
\.'nob:fxerror[<+layout+>]{<+note+>},'
\.'sbr:environments,'
\.'eno:afixme[<+summary+>],'
\.'eno:anfxnote[<+summary+>],'
\.'eno:anfxwarning[<+summary+>],'
\.'eno:anfxerror[<+summary+>],'
\.'sbr:other,'
\.'nor:listoffixmes'

View file

@ -0,0 +1,10 @@
if exists("flafter_package_file")
finish
endif
let flafter_package_file = 1
let g:TeX_package_option_flafter = ''
let g:TeX_package_flafter = 'noo:suppressfloats,noo:suppress'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,16 @@
if exists("float_package_file")
finish
endif
let float_package_file = 1
let g:TeX_package_option_float = ''
let g:TeX_package_float =
\ 'bra:floatstyle,'
\.'brs:newfloat{<++>}{<++>}{<++>}[<++>],'
\.'brd:floatname,'
\.'brd:listof,'
\.'bra:restylefloat,'
\.'brd:floatplacement'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,12 @@
if exists("floatflt_package_file")
finish
endif
let floatflt_package_file = 1
let g:TeX_package_option_floatflt = 'rflt,lflt,vflt'
let g:TeX_package_floatflt =
\ 'ens:floatingfigure:[<+loc+>]{<+spec+>},'
\.'ens:floatingtable:[<+loc+>]{<+spec+>}'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,10 @@
if exists("fn2end_package_file")
finish
endif
let fn2end_package_file = 1
let g:TeX_package_option_fn2end = ''
let g:TeX_package_fn2end = 'makeendnotes,theendnotes'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,21 @@
if exists("footmisc_package_file")
finish
endif
let footmisc_package_file = 1
let g:TeX_package_option_footmisc =
\ 'bottom,'
\.'flushmargin,'
\.'marginal,'
\.'multiple,'
\.'norule,'
\.'para,'
\.'perpage,'
\.'splitrule,'
\.'stable,'
\.'symbol,'
\.'symbol+'
let g:TeX_package_footmisc = ''
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,93 @@
if exists("geometry_package_file")
finish
endif
let geometry_package_file = 1
let g:TeX_package_option_geometry =
\ 'sbr:Boolean,'
\.'verbose,'
\.'landscape,'
\.'portrait,'
\.'twoside,'
\.'includemp,'
\.'reversemp,'
\.'reversemarginpar,'
\.'nohead,'
\.'nofoot,'
\.'noheadfoot,'
\.'dvips,'
\.'pdftex,'
\.'vtex,'
\.'truedimen,'
\.'reset,'
\.'sbr:BooleanDimensions,'
\.'a0paper,'
\.'a1paper,'
\.'a2paper,'
\.'a3paper,'
\.'a4paper,'
\.'a5paper,'
\.'a6paper,'
\.'b0paper,'
\.'b1paper,'
\.'b2paper,'
\.'b3paper,'
\.'b4paper,'
\.'b5paper,'
\.'b6paper,'
\.'letterpaper,'
\.'executivepaper,'
\.'legalpaper,'
\.'sbr:SingleValueOption,'
\.'paper=,'
\.'papername=,'
\.'paperwidth=,'
\.'paperheight=,'
\.'width=,'
\.'totalwidth=,'
\.'height=,'
\.'totalheight=,'
\.'left=,'
\.'lmargin=,'
\.'right=,'
\.'rmargin=,'
\.'top=,'
\.'tmargin=,'
\.'bottom=,'
\.'bmargin=,'
\.'hscale=,'
\.'vscale=,'
\.'textwidth=,'
\.'textheight=,'
\.'marginparwidth=,'
\.'marginpar=,'
\.'marginparsep=,'
\.'headheight=,'
\.'head=,'
\.'headsep=,'
\.'footskip=,'
\.'hoffset=,'
\.'voffset=,'
\.'twosideshift=,'
\.'mag=,'
\.'columnsep=,'
\.'footnotesep=,'
\.'sbr:TwoValueOptions,'
\.'papersize={<++>},'
\.'total={<++>},'
\.'body={<++>},'
\.'text={<++>},'
\.'scale={<++>},'
\.'hmargin={<++>},'
\.'vmargin={<++>},'
\.'margin={<++>},'
\.'offset={<++>},'
\.'sbr:ThreeValueOptions,'
\.'hdivide={<++>},'
\.'vdivide={<++>},'
\.'divide={<++>}'
let g:TeX_package_geometry =
\ 'bra:geometry'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,12 @@
if exists("german_package_file")
finish
endif
let german_package_file = 1
let g:TeX_package_german = ''
let g:TeX_package_option_german = ''
" For now just define the smart quotes.
let b:Tex_SmartQuoteOpen = '"`'
let b:Tex_SmartQuoteClose = "\"'"
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,69 @@
if exists("graphicx_package_file")
finish
endif
let graphicx_package_file = 1
let g:TeX_package_option_graphicx =
\ 'sbr:Drivers,'
\.'xdvi,'
\.'dvipdf,'
\.'dvipdfm,'
\.'pdftex,'
\.'dvipsone,'
\.'dviwindo,'
\.'emtex,'
\.'dviwin,'
\.'oztex,'
\.'textures,'
\.'pctexps,'
\.'pctexwin,'
\.'pctexhp,'
\.'pctex32,'
\.'truetex,'
\.'tcidvi,'
\.'vtex,'
\.'sbr:Rest,'
\.'debugshow,'
\.'draft,'
\.'final,'
\.'hiderotate,'
\.'hiresbb,'
\.'hidescale,'
\.'unknownkeysallowed,'
\.'unknownkeyserror'
let g:TeX_package_graphicx =
\ 'sbr:Includegraphics,'
\.'brs:includegraphics[<++>]{<++>},'
\.'spe:height=,'
\.'spe:width=,'
\.'spe:keepaspectratio=,'
\.'spe:totalheight=,'
\.'spe:angle=,'
\.'spe:scale=,'
\.'spe:origin=,'
\.'spe:clip,'
\.'spe:bb=,'
\.'spe:viewport=,'
\.'spe:trim=,'
\.'spe:draft,'
\.'spe:hiresbb,'
\.'spe:type=,'
\.'spe:ext=,'
\.'spe:read=,'
\.'spe:command=,'
\.'sbr:Rotatebox,'
\.'brs:rotatebox[<++>]{<++>}{<++>},'
\.'spe:origin=,'
\.'spe:x=,'
\.'spe:y=,'
\.'spe:units=,'
\.'sbr:Rest,'
\.'brs:scalebox{<++>}[<++>]{<++>},'
\.'brs:resizebox{<++>}{<++>}{<++>},'
\.'brs:resizebox*{<++>}{<++>}{<++>},'
\.'bra:DeclareGraphicsExtensions,'
\.'brs:DeclareGraphicsRule{<++>}{<++>}{<++>}{<++>},'
\.'bra:graphicspath'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,10 @@
if exists("graphpap_package_file")
finish
endif
let graphpap_package_file = 1
let g:TeX_package_option_graphpap = ''
let g:TeX_package_graphpap = 'brs:graphpaper[<+step+>](<+x1,y1+>)(<+x2,y2+>)'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,18 @@
if exists("harpoon_package_file")
finish
endif
let harpoon_package_file = 1
let g:TeX_package_option_harpoon = ''
let g:TeX_package_harpoon =
\ 'bra:overleftharp,'
\.'bra:overrightharp,'
\.'bra:overleftharpdown,'
\.'bra:overrightharpdown,'
\.'bra:underleftharp,'
\.'bra:underrightharp,'
\.'bra:underleftharpdown,'
\.'bra:underrightharpdown'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,21 @@
if exists("hhline_package_file")
finish
endif
let hhline_package_file = 1
let g:TeX_package_option_hhline = ''
let g:TeX_package_hhline =
\ 'bra:hhline,'
\.'sep:a,'
\.'spe:=,'
\.'spe:-,'
\.'spe:~,'
\."spe:\\\|,"
\.'spe::,'
\.'spe:#,'
\.'spe:t,'
\.'spe:b,'
\.'spe:*'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,13 @@
if exists("histogram_package_file")
finish
endif
let histogram_package_file = 1
let g:TeX_package_option_histogram = ''
let g:TeX_package_histogram =
\ 'histogram,'
\.'noverticallines,'
\.'verticallines'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,167 @@
if exists("hyperref_package_file")
finish
endif
let hyperref_package_file = 1
let g:TeX_package_option_hyperref =
\ '4=,'
\.'a4paper,'
\.'a5paper,'
\.'anchorcolor=,'
\.'b5paper,'
\.'backref=,'
\.'baseurl={<++>},'
\.'bookmarks=,'
\.'bookmarksnumbered=,'
\.'bookmarksopen=,'
\.'bookmarksopenlevel=,'
\.'bookmarkstype=,'
\.'breaklinks=,'
\.'citebordercolor=,'
\.'citecolor=,'
\.'colorlinks=,'
\.'debug=,'
\.'draft,'
\.'dvipdf,'
\.'dvipdfm,'
\.'dvips,'
\.'dvipsone,'
\.'dviwindo,'
\.'executivepaper,'
\.'extension=,'
\.'filebordercolor=,'
\.'filecolor=,'
\.'frenchlinks=,'
\.'hyperfigures=,'
\.'hyperindex=,'
\.'hypertex,'
\.'hypertexnames=,'
\.'implicit=,'
\.'latex2html,'
\.'legalpaper,'
\.'letterpaper,'
\.'linkbordercolor=,'
\.'linkcolor=,'
\.'linktocpage=,'
\.'menubordercolor=,'
\.'menucolor=,'
\.'naturalnames,'
\.'nesting=,'
\.'pageanchor=,'
\.'pagebackref=,'
\.'pagebordercolor=,'
\.'pagecolor=,'
\.'pdfauthor={<++>},'
\.'pdfborder=,'
\.'pdfcenterwindow=,'
\.'pdfcreator={<++>},'
\.'pdffitwindow,'
\.'pdfhighlight=,'
\.'pdfkeywords={<++>},'
\.'pdfmenubar=,'
\.'pdfnewwindow=,'
\.'pdfpagelabels=,'
\.'pdfpagelayout=,'
\.'pdfpagemode=,'
\.'pdfpagescrop=,'
\.'pdfpagetransition=,'
\.'pdfproducer={<++>},'
\.'pdfstartpage={<++>},'
\.'pdfstartview={<++>},'
\.'pdfsubject={<++>},'
\.'pdftex,'
\.'pdftitle={<++>},'
\.'pdftoolbar=,'
\.'pdfusetitle=,'
\.'pdfview,'
\.'pdfwindowui=,'
\.'plainpages=,'
\.'ps2pdf,'
\.'raiselinks=,'
\.'runbordercolor,'
\.'tex4ht,'
\.'textures,'
\.'unicode=,'
\.'urlbordercolor=,'
\.'urlcolor=,'
\.'verbose=,'
\.'vtex'
let g:TeX_package_hyperref =
\ 'sbr:Preamble,'
\.'bra:hypersetup,'
\.'wwwbrowser,'
\.'sbr:Links,'
\.'bra:hyperbaseurl,'
\.'brs:href{<+URL+>}{<+text+>},'
\.'bra:hyperimage,'
\.'brs:hyperdef{<+category+>}{<+name+>}{<+text+>},'
\.'brs:hyperref{<+URL+>}{<+category+>}{<+name+>}{<+text+>},'
\.'brs:hyperlink{<+name+>}{<+text+>},'
\.'brs:hypertarget{<+name+>}{<+text+>},'
\.'bra:url,'
\.'bra:htmladdnormallink,'
\.'brs:Acrobatmenu{<+option+>}{<+tekst+>},'
\.'brs:pdfbookmark[<++>]{<++>}{<++>},'
\.'bra:thispdfpagelabel,'
\.'sbr:Forms,'
\.'env:Form,'
\.'sep:Forms1,'
\.'brs:TextField[<+parameters+>]{<+label+>},'
\.'brs:CheckBox[<+parameters+>]{<+label+>},'
\.'brs:ChoiceMenu[<+parameters+>]{<+label+>}{<+choices+>},'
\.'brs:PushButton[<+parameters+>]{<+label+>},'
\.'brs:Submit[<+parameters+>]{<+label+>},'
\.'brs:Reset[<+parameters+>]{<+label+>},'
\.'sep:Forms2,'
\.'brs:LayoutTextField{<+label+>}{<+field+>},'
\.'brs:LayoutChoiceField{<+label+>}{<+field+>},'
\.'brs:LayoutCheckboxField{<+label+>}{<+field+>},'
\.'sep:Forms3,'
\.'brs:MakeRadioField{<+width+>}{<+height+>},'
\.'brs:MakeCheckField{<+width+>}{<+height+>},'
\.'brs:MakeTextField{<+width+>}{<+height+>},'
\.'brs:MakeChoiceField{<+width+>}{<+height+>},'
\.'brs:MakeButtonField{<+text+>},'
\.'sbr:Parameters,'
\.'spe:accesskey,'
\.'spe:align,'
\.'spe:backgroundcolor,'
\.'spe:bordercolor,'
\.'spe:bordersep,'
\.'spe:borderwidth,'
\.'spe:charsize,'
\.'spe:checked,'
\.'spe:color,'
\.'spe:combo,'
\.'spe:default,'
\.'spe:disabled,'
\.'spe:height,'
\.'spe:hidden,'
\.'spe:maxlen,'
\.'spe:menulength,'
\.'spe:multiline,'
\.'spe:name,'
\.'spe:onblur,'
\.'spe:onchange,'
\.'spe:onclick,'
\.'spe:ondblclick,'
\.'spe:onfocus,'
\.'spe:onkeydown,'
\.'spe:onkeypress,'
\.'spe:onkeyup,'
\.'spe:onmousedown,'
\.'spe:onmousemove,'
\.'spe:onmouseout,'
\.'spe:onmouseover,'
\.'spe:onmouseup,'
\.'spe:onselect,'
\.'spe:password,'
\.'spe:popdown,'
\.'spe:radio,'
\.'spe:readonly,'
\.'spe:tabkey,'
\.'spe:value,'
\.'spe:width'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,21 @@
if exists("ifthen_package_file")
finish
endif
let ifthen_package_file = 1
let g:TeX_package_option_ifthen = ''
let g:TeX_package_ifthen =
\ 'brs:ifthenelse{<++>}{<++>}{<++>},'
\.'brd:equal,'
\.'bra:boolean,'
\.'bra:lengthtest,'
\.'bra:isodd,'
\.'brd:whiledo,'
\.'bra:newboolean,'
\.'brd:setboolean,'
\.'nor:and,'
\.'nor:or,'
\.'nor:not'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,29 @@
if exists("inputenc_package_file")
finish
endif
let inputenc_package_file = 1
let g:TeX_package_option_inputenc =
\ 'ascii,'
\.'latin1,'
\.'latin2,'
\.'latin3,'
\.'latin4,'
\.'latin5,'
\.'latin9,'
\.'decmulti,'
\.'cp850,'
\.'cp852,'
\.'cp437,'
\.'cp437de,'
\.'cp865,'
\.'applemac,'
\.'next,'
\.'ansinew,'
\.'cp1250,'
\.'cp1252'
let g:TeX_package_inputenc =
\ 'bra:inputencoding'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,10 @@
if exists("letterspace_package_file")
finish
endif
let letterspace_package_file = 1
let g:TeX_package_option_letterspace = ''
let g:TeX_package_letterspace = 'nor:letterspace'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,60 @@
if exists("lineno_package_file")
finish
endif
let lineno_package_file = 1
let g:TeX_package_option_lineno =
\ 'left,'
\.'right,'
\.'switch,'
\.'switch*,'
\.'pagewise,'
\.'running,'
\.'modulo,'
\.'mathlines,'
\.'displaymath,'
\.'hyperref'
let g:TeX_package_lineno =
\ 'sbr:Environments,'
\.'env:linenumbers,'
\.'env:linenumbers*,'
\.'env:numquote,'
\.'env:numquote*,'
\.'env:numquotation,'
\.'env:numquotation*,'
\.'env:bframe,'
\.'env:linenomath,'
\.'env:linenomath*,'
\.'bra:linelabel,'
\.'sbr:Commands,'
\.'nor:linenumbers,'
\.'nor:linenumbers*,'
\.'noo:linenumbers,'
\.'nor:nolinenumbers,'
\.'nor:runninglinenumbers,'
\.'nor:runninglinenumbers*,'
\.'noo:runninglinenumbers,'
\.'nor:pagewiselinenumbers,'
\.'nor:resetlinenumber,'
\.'noo:resetlinenumber,'
\.'nor:setrunninglinenumbers,'
\.'nor:setpagewiselinenumbers,'
\.'nor:switchlinenumbers,'
\.'nor:switchlinenumbers*,'
\.'nor:leftlinenumbers,'
\.'nor:leftlinenumbers*,'
\.'nor:rightlinenumbers,'
\.'nor:rightlinenumbers*,'
\.'nor:runningpagewiselinenumbers,'
\.'nor:realpagewiselinenumbers,'
\.'nor:modulolinenumbers,'
\.'noo:modulolinenumbers,'
\.'nor:linenumberdisplaymath,'
\.'nor:nolinenumberdisplaymath,'
\.'nor:thelinenumber,'
\.'nob:linerefp,'
\.'nob:linerefr,'
\.'nob:lineref'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,35 @@
if exists("longtable_package_file")
finish
endif
let longtable_package_file = 1
let g:TeX_package_option_longtable =
\ 'errorshow,'
\.'pausing,'
\.'set,'
\.'final'
let g:TeX_package_longtable =
\ 'sbr:Commands,'
\.'nor:setlongtables,'
\.'bra:LTleft,'
\.'bra:LTright,'
\.'bra:LTpre,'
\.'bra:LTpost,'
\.'bra:LTchunksize,'
\.'bra:LTcapwidth,'
\.'bra:LTcapwidth,'
\.'sbr:Longtable,'
\.'env:longtable,'
\.'sep:lt,'
\.'nor:endhead,'
\.'nor:endfirsthead,'
\.'nor:endfoot,'
\.'nor:endlastfoot,'
\.'nor:kill,'
\.'bra:caption,'
\.'nob:caption,'
\.'bra:caption*,'
\.'nor:newpage'
" vim:ft=vim:ts=4:sw=4:noet:ff=unix:

View file

@ -0,0 +1,10 @@
if exists("lscape_package_file")
finish
endif
let lscape_package_file = 1
let g:TeX_package_option_lscape = ''
let g:TeX_package_lscape = 'env:landscape'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,15 @@
if exists("manyfoot_package_file")
finish
endif
let manyfoot_package_file = 1
let g:TeX_package_option_manyfoot = 'para'
let g:TeX_package_manyfoot =
\ 'bra:newfootnote,bra:newfootnote[para],'
\.'bra:footnoteA,bra:footnoteB,'
\.'bra:FootnoteA,bra:FootnoteB,'
\.'bra:Footnotemark,bra:Footnotetext,'
\.'SplitNote'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,28 @@
if exists("moreverb_package_file")
finish
endif
let moreverb_package_file = 1
let g:TeX_package_option_moreverb = ''
let g:TeX_package_moreverb =
\ 'ens:verbatimwrite:{<++>},'
\.'ens:verbatimtab:[<++>],'
\.'ens:listing:[<+step+>]{<+number+>},'
\.'ens:listing*:[<+step+>]{<+number+>},'
\.'env:boxedverbatim,'
\.'bra:verbatimtabsize,'
\.'bra:listingoffset,'
\.'brs:listinginput[<++>]{<++>}{<++>},'
\.'brs:verbatimtabinput[<++>]{<++>}'
let g:Tex_completion_explorer = g:Tex_completion_explorer.'verbatimtabinput,'
syn region texZone start="\\begin{verbatimwrite}" end="\\end{verbatimwrite}\|%stopzone\>" fold
syn region texZone start="\\begin{verbatimtab}" end="\\end{verbatimtab}\|%stopzone\>" fold
syn region texZone start="\\begin{boxedverbatim}" end="\\end{boxedverbatim}\|%stopzone\>" fold
syn region texZone start="\\begin{listing}" end="\\end{listing}\|%stopzone\>" fold
syn region texZone start="\\begin{listing*}" end="\\end{listing*}\|%stopzone\>" fold
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,10 @@
if exists("multibox_package_file")
finish
endif
let multibox_package_file = 1
let g:TeX_package_option_multibox = ''
let g:TeX_package_multibox = 'multimake,multiframe'
" vim:ft=vim:ff=unix:

View file

@ -0,0 +1,21 @@
if exists("multicol_package_file")
finish
endif
let multicol_package_file = 1
let g:TeX_package_option_multicol = ''
let g:TeX_package_multicol =
\ 'ens:multicols:{<+cols+>}[<+text+>][<+sep+>],'
\.'columnbreak,'
\.'premulticols,'
\.'postmulticols,'
\.'multicolsep,'
\.'columnsep,'
\.'linewidth,'
\.'columnseprule,'
\.'flushcolumnt,'
\.'raggedcolumns,'
\.'unbalanced'
" vim:ft=vim:ff=unix:

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