mirror of
https://github.com/kastdeur/dotfiles.git
synced 2025-06-18 05:06:38 +02:00
Added vim plugin + autoindent\n use vi if vim is typed and not available
This commit is contained in:
parent
ef8bf8ac54
commit
061f80b9b9
144 changed files with 30057 additions and 0 deletions
62
vim/vim-latex/doc/Makefile
Executable file
62
vim/vim-latex/doc/Makefile
Executable 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
29
vim/vim-latex/doc/Makefile.in
Executable 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
110
vim/vim-latex/doc/README
Executable 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
17
vim/vim-latex/doc/README.new
Executable 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
12
vim/vim-latex/doc/catalog.xml
Executable 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
761
vim/vim-latex/doc/db2vim/db2vim
Executable 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
|
25
vim/vim-latex/doc/db2vim/domutils.py
Executable file
25
vim/vim-latex/doc/db2vim/domutils.py
Executable 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
|
224
vim/vim-latex/doc/db2vim/textutils.py
Executable file
224
vim/vim-latex/doc/db2vim/textutils.py
Executable 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
116
vim/vim-latex/doc/imaps.txt
Executable 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*\\*.*',"",""),'^--','--\ \ \ \ ','')
|
||||
================================================================================
|
52
vim/vim-latex/doc/latex-suite-chunk.xsl
Executable file
52
vim/vim-latex/doc/latex-suite-chunk.xsl
Executable 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>
|
62
vim/vim-latex/doc/latex-suite-common.xsl
Executable file
62
vim/vim-latex/doc/latex-suite-common.xsl
Executable 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 © 2002 P. Karp, M. Wiedmann
|
||||
</div>
|
||||
</xsl:template>
|
||||
-->
|
||||
|
||||
</xsl:stylesheet>
|
182
vim/vim-latex/doc/latex-suite-quickstart.css
Executable file
182
vim/vim-latex/doc/latex-suite-quickstart.css
Executable 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" */
|
||||
}
|
||||
|
448
vim/vim-latex/doc/latex-suite-quickstart.txt
Executable file
448
vim/vim-latex/doc/latex-suite-quickstart.txt
Executable 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*\\*.*',"",""),'^--','\ \ \ \ \ \ ','')
|
||||
================================================================================
|
471
vim/vim-latex/doc/latex-suite-quickstart.xml
Executable file
471
vim/vim-latex/doc/latex-suite-quickstart.xml
Executable 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 "<++>">
|
||||
]>
|
||||
<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&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 > 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><F5></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><F5></literal>. With the cursor still
|
||||
placed between the <literal>[]</literal>, goto <literal>TeX-Suite >
|
||||
Packages > 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><C-j></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><C-j></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><F5></literal>. (Remember:
|
||||
<literal><F5></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><C-j></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 &=& 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><C-j></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>&=&</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><F5></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 &=& 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}
|
||||
</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><F9></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{}<++>)<++>
|
||||
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%
|
||||
</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><enter></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><F9></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&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><enter></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&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 > Options > 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&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
182
vim/vim-latex/doc/latex-suite.css
Executable 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
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
4666
vim/vim-latex/doc/latex-suite.xml
Executable file
File diff suppressed because it is too large
Load diff
22
vim/vim-latex/doc/latex-suite.xsl
Executable file
22
vim/vim-latex/doc/latex-suite.xsl
Executable 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
2430
vim/vim-latex/doc/latexhelp.txt
Executable file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue