mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 01:59:02 +00:00
drop reLyX like it is hot, and setup to use tex2lyx instead (and remerged po files + no.po small update)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@10244 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
46e3547945
commit
ef8e527612
10
ChangeLog
10
ChangeLog
@ -1,8 +1,14 @@
|
||||
2005-07-16 Lars Gullik Bjønnes <larsbj@lyx.org>
|
||||
|
||||
* lyx.man: remove reLyX refs and ref to tex2lyx
|
||||
* autogen.sh,configure.ac: remove reLyX handling
|
||||
* INSTALL,INSTALL.OS2: remove some reLyX paragraphs.
|
||||
|
||||
2005-07-16 Jean-Marc Lasgouttes <lasgouttes@lyx.org>
|
||||
|
||||
* INSTALL: lib/xfonts is dead.
|
||||
|
||||
2005-07-15 <lgb@tandberg.net>
|
||||
2005-07-15 Lars Gullik Bjønnes <larsbj@lyx.org>
|
||||
|
||||
* configure.ac: set AWK to gawk and subsitute
|
||||
|
||||
@ -29,7 +35,7 @@
|
||||
* configure.ac: if the xforms frontend is added just to help gtk,
|
||||
do not build the xforms binary.
|
||||
|
||||
2005-05-20 Lars Gullik Bjonnes <lgb@tandberg.net>
|
||||
2005-05-20 Lars Gullik Bjønnes <larsbj@lyx.org>
|
||||
|
||||
* configure.ac: Use AM_* flags for CLAGS,CXXFLAGS where we require
|
||||
the values to be properly set.
|
||||
|
13
INSTALL
13
INSTALL
@ -116,20 +116,13 @@ from:
|
||||
|
||||
The two following programs should be available at configuration time:
|
||||
|
||||
o Perl (at least 5.002) is needed for the reLyX script. reLyX will
|
||||
not be installed if perl is not found. If the environment
|
||||
variable PERL is set to point to some program, this value will be
|
||||
used, even if the program does no exist (this can be useful if
|
||||
the machine on which LyX is built is not the one where it will
|
||||
run).
|
||||
|
||||
o LaTeX2e should be correctly setup for the user you are logged in
|
||||
as. Otherwise, LyX will not be able to run a number of tests. Note
|
||||
that users can run these tests manually with Edit>Reconfigure.
|
||||
|
||||
Finally, you will need to have python 1.5.2 or newer installed to be
|
||||
able to import older LyX files with the lyx2lyx script (this script is
|
||||
called automatically when opening a file).
|
||||
o Python 1.5.2 or newer installed to be able to import older LyX files
|
||||
with the lyx2lyx script (this script is called automatically when
|
||||
opening a file).
|
||||
|
||||
|
||||
Creating the Makefile
|
||||
|
71
INSTALL.OS2
71
INSTALL.OS2
@ -267,76 +267,7 @@ SET chktexrc=%home%
|
||||
Do not copy it! You need to adapt it to your directory structure.
|
||||
|
||||
|
||||
6) perl:
|
||||
----
|
||||
|
||||
For LaTeX import (relyx.cmd) you need perl:
|
||||
Check your local CPAN server for a recent OS/2 port or try:
|
||||
|
||||
http://www.perl.org
|
||||
|
||||
Note:
|
||||
----
|
||||
If perl cannot find its modules and libraries it has a hardcoded
|
||||
path chosen at compile time that does not match your configuration.
|
||||
You can recompile with your directory structure or exchange the path
|
||||
as follows (from man perlos2):
|
||||
|
||||
PERLLIB_PREFIX
|
||||
|
||||
Specific for EMX port. Should have the form
|
||||
|
||||
path1;path2
|
||||
|
||||
or
|
||||
|
||||
path1 path2
|
||||
|
||||
If the beginning of some prebuilt path matches path1, it
|
||||
is substituted with path2.
|
||||
|
||||
Should be used if the perl library is moved from the
|
||||
default location in preference to PERL(5)LIB, since this
|
||||
would not leave wrong entries in @INC. Say, if the
|
||||
compiled version of perl looks for @INC in f:/perllib/lib,
|
||||
and you want to install the library in h:/opt/gnu, do
|
||||
|
||||
set PERLLIB_PREFIX=f:/perllib/lib;h:/opt/gnu"
|
||||
On my system 'f:/perllib/lib' is hardcoded and has to be exchanged
|
||||
for 'd:/bin/perllib/lib'. Also like many other programs ported from
|
||||
UNIX (unfortunately this is also true for many XFree/2 programs) it
|
||||
uses a UNIX-like sh; you should give its path.
|
||||
I recommend sh.exe of pdksh.zip; other shells have problems.
|
||||
|
||||
Here an example of my config.sys:
|
||||
|
||||
rem Not default directory of perllib/lib (here:d:\bin)
|
||||
set PERLLIB_PREFIX=f:/perllib/lib;d:/bin/perllib/lib
|
||||
rem Where sh.exe of pdksh.zip resides:
|
||||
set PERL_SH_DIR=D:\bin
|
||||
|
||||
excerpt from perlos2:
|
||||
|
||||
After you installed the components you needed and updated
|
||||
the Config.sys correspondingly, you need to hand-edit
|
||||
Config.pm. This file resides somewhere deep in the
|
||||
location you installed your perl library, find it out by
|
||||
|
||||
perl -MConfig -le "print $INC{'Config.pm'}"
|
||||
|
||||
You need to correct all the entries which look like file
|
||||
paths (they currently start with f:/).
|
||||
|
||||
Warning
|
||||
|
||||
The automatic and manual perl installation leave
|
||||
precompiled paths inside perl executables. While these
|
||||
paths are overwriteable (see the section on
|
||||
PERLLIB_PREFIX, the section on PERL_SH_DIR), one may get
|
||||
better results by binary editing of paths inside the
|
||||
executables/DLLs.
|
||||
|
||||
7) 'man' and 'gnugroff':
|
||||
6) 'man' and 'gnugroff':
|
||||
--------------------
|
||||
|
||||
For reading unformatted manual pages in UNIX 'roff' format like the
|
||||
|
6
NEWS
6
NEWS
@ -1,3 +1,9 @@
|
||||
What's new in version 1.4.0?
|
||||
----------------------------
|
||||
|
||||
A long time since 1.3.0 now and a lot has happened. Alsmost the whole
|
||||
core of LyX has been rewritten.
|
||||
|
||||
What's new in version 1.3.0?
|
||||
----------------------------
|
||||
|
||||
|
@ -70,7 +70,7 @@ fi
|
||||
|
||||
# Delete old cache directories.
|
||||
# automake will stop if their contents was created by an earlier version.
|
||||
rm -rf autom4te.cache lib/reLyX/autom4te.cache
|
||||
rm -rf autom4te.cache
|
||||
|
||||
# Generate acinclude.m4
|
||||
echo -n "Generate acinclude.m4... "
|
||||
@ -81,7 +81,7 @@ echo "done."
|
||||
# Generate the Makefiles and configure files
|
||||
if ( $ACLOCAL --version ) < /dev/null > /dev/null 2>&1; then
|
||||
echo "Building macros..."
|
||||
for dir in . lib/reLyX ; do
|
||||
for dir in . ; do
|
||||
echo " $dir"
|
||||
( cd $dir ; $ACLOCAL )
|
||||
done
|
||||
@ -105,7 +105,7 @@ fi
|
||||
|
||||
if ( $AUTOMAKE --version ) < /dev/null > /dev/null 2>&1; then
|
||||
echo "Building Makefile templates..."
|
||||
for dir in . lib/reLyX ; do
|
||||
for dir in . ; do
|
||||
echo " $dir"
|
||||
( cd $dir ; $AUTOMAKE )
|
||||
done
|
||||
@ -117,7 +117,7 @@ fi
|
||||
|
||||
if ( $AUTOCONF --version ) < /dev/null > /dev/null 2>&1; then
|
||||
echo "Building configure..."
|
||||
for dir in . lib/reLyX ; do
|
||||
for dir in . ; do
|
||||
echo " $dir"
|
||||
( cd $dir ; $AUTOCONF )
|
||||
done
|
||||
|
@ -401,7 +401,7 @@ int mkstemp(char*);
|
||||
])
|
||||
|
||||
### Finish the work.
|
||||
AC_CONFIG_SUBDIRS(lib lib/reLyX)
|
||||
AC_CONFIG_SUBDIRS(lib)
|
||||
AC_CONFIG_FILES([Makefile m4/Makefile \
|
||||
boost/Makefile \
|
||||
boost/libs/Makefile \
|
||||
|
@ -1,3 +1,9 @@
|
||||
2005-07-16 Lars Gullik Bjønnes <larsbj@lyx.org>
|
||||
|
||||
* tools/README.bin.example: remove reLyX stuff
|
||||
|
||||
* lyx.spec.in: remove reLyX stuff
|
||||
|
||||
2005-07-16 Jean-Marc Lasgouttes <lasgouttes@lyx.org>
|
||||
|
||||
* Win32/packaging/package_lyxwin.sh:
|
||||
|
@ -65,7 +65,6 @@ mv ${RPM_BUILD_ROOT}%{_datadir}/%{name}/tex \
|
||||
#
|
||||
# Don't use %{name}.xpm, this will not work with --version-suffix
|
||||
cp -a lib/images/lyx.xpm ${RPM_BUILD_ROOT}%{_datadir}/%{name}/images/
|
||||
cp lib/reLyX/README README.reLyX
|
||||
|
||||
%clean
|
||||
rm -rf ${RPM_BUILD_ROOT}
|
||||
@ -86,12 +85,6 @@ echo "Configuring LyX for your system..."
|
||||
cd %{_datadir}/%{name}
|
||||
./configure --srcdir
|
||||
|
||||
# Fix reLyX perl program if the prefix is non-standard
|
||||
if [ "%{_prefix}" != "/usr" ]
|
||||
then
|
||||
perl -pi -e "s!/usr/share/%{name}!%{_datadir}/%{name}!" %{_bindir}/reLyX
|
||||
fi
|
||||
|
||||
%postun
|
||||
# Fix the TeX file hash
|
||||
#
|
||||
@ -101,7 +94,7 @@ texhash
|
||||
%defattr(-,root,root)
|
||||
%doc ABOUT-NLS ANNOUNCE COPYING
|
||||
%doc README UPGRADING ChangeLog NEWS
|
||||
%doc lib/CREDITS README.reLyX
|
||||
%doc lib/CREDITS
|
||||
%{_bindir}/*
|
||||
%{_mandir}/man?/*
|
||||
%{_datadir}/locale/*/LC_MESSAGES/*
|
||||
|
@ -15,12 +15,6 @@ To use this binary distribution of LyX, please follow these steps:
|
||||
you unpacked the distribution in /usr/local, your PATH environment
|
||||
variable should contain "/usr/local/bin".
|
||||
|
||||
4) If you want to use reLyX, the LaTeX-to-LyX translator, you will
|
||||
have to edit the first line of the script, which should read
|
||||
#!/usr/local/bin/perl
|
||||
if you have perl installed as /usr/local/bin/perl.
|
||||
Note that reLyX requires at least perl version 5.002.
|
||||
|
||||
That's it. Happy LyXing !
|
||||
|
||||
|
||||
|
@ -1,3 +1,11 @@
|
||||
2005-07-16 Lars Gullik Bjønnes <larsbj@lyx.org>
|
||||
|
||||
* syntax.default: file moved here from reLyX dir
|
||||
* configure.m4: fix path search, search for tex2lyx instead of
|
||||
reLyX, don't create help dir
|
||||
* Makefile.am: remove reLyx stuff, add syntax.default to pkg_DATA
|
||||
* Remove the reLyX dir
|
||||
|
||||
2005-07-15 José Matos <jamatos@lyx.org>
|
||||
|
||||
* Makefile.am: remove lyx2lyx references, place it only as a
|
||||
|
@ -2,7 +2,7 @@ include $(top_srcdir)/config/common.am
|
||||
|
||||
DISTCLEANFILES += texput.log textclass.lst packages.lst lyxrc.defaults
|
||||
|
||||
SUBDIRS = doc reLyX lyx2lyx
|
||||
SUBDIRS = doc lyx2lyx
|
||||
|
||||
EXTRA_DIST = \
|
||||
configure.m4 \
|
||||
@ -15,7 +15,7 @@ CHMOD = chmod
|
||||
# and chmod manually in install-data-hook.
|
||||
dist_pkgdata_DATA = lyxrc.example CREDITS chkconfig.ltx configure \
|
||||
lyxrc.defaults textclass.lst packages.lst external_templates \
|
||||
encodings languages symbols
|
||||
encodings languages symbols syntax.default
|
||||
|
||||
binddir = $(pkgdatadir)/bind
|
||||
dist_bind_DATA = \
|
||||
|
@ -38,14 +38,15 @@ set dummy $ac_prog ; ac_word=$[2]
|
||||
if test -n "$ac_word"; then
|
||||
MSG_CHECKING([for \"$ac_word\"],[+])
|
||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
|
||||
for ac_dir in $PATH; do
|
||||
test -z "$ac_dir" && ac_dir=.
|
||||
save_PATH=$PATH ; PATH=:$PATH
|
||||
for ac_dir in ${PATH} ; do
|
||||
if test -x [$ac_dir/$ac_word]; then
|
||||
$2="$ac_prog"
|
||||
break
|
||||
fi
|
||||
done
|
||||
IFS="$ac_save_ifs"
|
||||
PATH=$save_PATH
|
||||
|
||||
if test -n "[$]$2"; then
|
||||
ac_result=yes
|
||||
@ -198,7 +199,7 @@ case `uname -s` in
|
||||
esac
|
||||
|
||||
#### Create the build directories if necessary
|
||||
for dir in bind clipart doc examples help images kbd layouts reLyX \
|
||||
for dir in bind clipart doc examples images kbd layouts \
|
||||
scripts templates ui ; do
|
||||
test ! -d $dir && mkdir $dir
|
||||
done
|
||||
@ -258,12 +259,8 @@ SEARCH_PROG([for a raster image editor], RASTERIMAGE_EDITOR, gimp)
|
||||
|
||||
SEARCH_PROG([for a text editor], TEXT_EDITOR, xemacs gvim kedit kwrite kate nedit gedit notepad)
|
||||
|
||||
# Search for an installed reLyX or a ready-to-install one
|
||||
save_PATH=${PATH}
|
||||
PATH=${PATH}:./reLyX/
|
||||
SEARCH_PROG([for a LaTeX -> LyX converter],tex_to_lyx_command, "reLyX -f \$\$i")
|
||||
PATH=${save_PATH}
|
||||
tex_to_lyx_command=`echo $tex_to_lyx_command | sed "s,reLyX,reLyX$version_suffix,"`
|
||||
# Search for an installed tex2lyx or a ready-to-install one
|
||||
SEARCH_PROG([for a LaTeX -> LyX converter],tex_to_lyx_command, "$PWD/../src/tex2lyx/tex2lyx -f \$\$i" "tex2lyx$version_suffix -f \$\$i")
|
||||
|
||||
SEARCH_PROG([for a Noweb -> LyX converter],literate_to_lyx_command,"noweb2lyx \$\$i \$\$o")
|
||||
literate_to_lyx_command=`echo $literate_to_lyx_command | sed "s,noweb2lyx,noweb2lyx$version_suffix,"`
|
||||
|
@ -1,13 +0,0 @@
|
||||
autom4te-2.53.cache
|
||||
reLyX
|
||||
noweb2lyx
|
||||
Makefile.in
|
||||
Makefile
|
||||
aclocal.m4
|
||||
configure
|
||||
config.log
|
||||
config.status
|
||||
configure
|
||||
reLyX.1
|
||||
autom4te.cache
|
||||
configure.lineno
|
@ -1,91 +0,0 @@
|
||||
There are still a couple large bugs (or features lacking) in reLyX, and new
|
||||
users (i.e., everyone) will need to know them in order to know how to avoid
|
||||
them. Those bugs are currently listed in the BUGS section of the reLyX man
|
||||
page. This file lists only the smaller bugs. This includes bugs which appear
|
||||
only rarely, and bugs which may be more common but do not affect the printed
|
||||
output.
|
||||
|
||||
- In optional arguments, reLyX doesn't recognize a braced bracket "{]}"
|
||||
as being different from a regular bracket. You'll notice this problem if
|
||||
you've got a description environment item like "\item [foo {]} bar]". This
|
||||
is probably simplest to fix in the LyX file after you run reLyX. If
|
||||
you're very unlucky, it could mess up reLyX, in which case you'll have to
|
||||
remove it from the TeX file and put it in the LyX file after you translate it.
|
||||
|
||||
- The underscore character '_', when used as an argument to an unknown command,
|
||||
may be copied incorrectly. \foo{a_b} will be copied in TeX mode as \foo{a_{b}}.
|
||||
'_' in math mode works fine. It also works fine as the argument to known
|
||||
tokens, like \cite{foo_bar}, or even in translated arguments to untranslatable
|
||||
commands (see the Syntax Files section of the man page). Also, if you have
|
||||
an underscore in a file name, you have to use the LaTeX style of \input. That
|
||||
is, write "\input{a_b}" instead of the old TeX style "\input a_b" (even though
|
||||
the latter is legal LaTeX). If \includegraphics can't be copied for various
|
||||
reasons (see the reLyX man page), underscore will break. Finally,
|
||||
\label{foo_bar} in math mode will break.
|
||||
|
||||
- Complicated nesting could confuse matters. Simple nesting, including nesting
|
||||
lists within lists, or having multiple paragraphs in one \item, should work.
|
||||
|
||||
- ' { } { } ' is a legal LaTeX way to make five spaces. reLyX will translate
|
||||
it as ' ', which will show up in the LyX display, but not in the LaTeX
|
||||
document. Use '~~~~~' instead. Or don't use it because it's usually bad style.
|
||||
|
||||
- \normalfont and \textnormal are not supported and may confuse the font stacks.
|
||||
You can change "\sffamily foo \normalfont" to "\sffamily foo \rmfamily" or
|
||||
even to "\textsf{foo}" to get around this problem.
|
||||
|
||||
- font sizing commands *usually* work. reLyX may complain about "font
|
||||
confusion" when several font sizing commands are given in close proximity.
|
||||
Even if it complains, it may get the sizes right.
|
||||
|
||||
- {\cal foo} is translated as {\mathcal{foo}}. The LyX file will display
|
||||
and extra set of (red) braces, but those braces won't show up in the dvi file
|
||||
or printed output.
|
||||
|
||||
- reLyX translates {\bf foo} to \textbf{foo}. However, it also does that in
|
||||
math mode. Write \mathbf{foo} explicitly in the LyX file instead.
|
||||
|
||||
- period in \label or \ref will word-wrap. E.g. \ref{Dr. foo} will yield
|
||||
a reference to "Dr." in the LyX file, with an extra "foo}" printed as
|
||||
regular text
|
||||
|
||||
- \end or \begin in a \newcommand, for example, will really confuse reLyX,
|
||||
because they're not being used for their regular purpose of starting or
|
||||
ending an environment. Put the \newcommand in the preamble to avoid this
|
||||
problem.
|
||||
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
Changes in translation caused by features not (yet) in LyX:
|
||||
|
||||
|
||||
- Centering (or right or left justifying) works on full paragraphs. Therefore,
|
||||
if you have the following:
|
||||
\begin{center}
|
||||
centered text
|
||||
\end{center}
|
||||
NON-centered text without a blank line before it
|
||||
|
||||
the reLyX'ed file will put your NON-centered text into a new paragraph. To
|
||||
closely approximate what you had, just select "No Indent" from the
|
||||
Layout->Paragraph popup for the new paragraph.
|
||||
|
||||
- LyX support for tables isn't perfect. Some complicated column descriptions
|
||||
(e.g., multiple lines between columns or @{} column descriptions) will not
|
||||
be displayed WYSIWYG, but will be printed out correctly. These can be
|
||||
entered using the "Extra" popup in LyX's table popup. reLyX should
|
||||
translate these things correctly. In addition, '|' characters in the second
|
||||
argument to \multicolumn will be ignored. (For example, if you have:
|
||||
\begin{tabular}{|cc|}
|
||||
a & b \\
|
||||
\multicolumn{2}{c}
|
||||
\end{tabular}
|
||||
|
||||
there will be lines to the right and left in all rows of the table.)
|
||||
Tables must be their own paragraphs, while LaTeX allows a table to appear
|
||||
in the middle of a paragraph. \clines will only work on multicolumns. However,
|
||||
most tables that aren't too complicated will be translated just fine. For very
|
||||
complicated tables, use a "skip" block, so that they will be copied in TeX
|
||||
mode.
|
||||
|
||||
- Nested \input files will only work if you set \use_tempdir false in your
|
||||
lyxrc file.
|
File diff suppressed because it is too large
Load Diff
@ -1,182 +0,0 @@
|
||||
From 2.9.1.1 to 2.9.2.2
|
||||
- very minor bug fixes (win32 first line of doc, \epsfxsize command)
|
||||
- implement \textasciitilde
|
||||
|
||||
From 2.9.1.1 to 2.9.2.1
|
||||
- noweb documents, with -n option (Kayvan Aghaiepour Sylvan)
|
||||
|
||||
From 2.9 to 2.9.1.1
|
||||
- translate text argument to \resizebox, \scalebox, \rotatebox
|
||||
- BUG: if syntax.default said to "translate" the third of three arguments to
|
||||
a command, reLyX would actually translate the second.
|
||||
- handle \r, \k
|
||||
- Change a line to work in Windows
|
||||
|
||||
From 2.8.1.2 to 2.9
|
||||
- Empty layouts (like slide and hollywood's fadein) are supported (reported
|
||||
and pseudo-coded by Alain Castera)
|
||||
- \includegraphics -- graphics and graphicx forms, to the extent that LyX
|
||||
supports them
|
||||
- Bug: bugfix in 2.6.1.3 meant \n in "\ERT{text\ntext}" was lost! (Now it's
|
||||
converted to a space)
|
||||
- REfixed the bug where thebibliography environment created an extra paragraph
|
||||
- Handle \epsfig, \psfig
|
||||
- Handle \epsffile, \epsfbox
|
||||
- LyX now understands sqrt[]{}! Don't need to delete optional argument anymore.
|
||||
- BUG: "\layout Abstract " had extra space at end; LyX didn't recognize it!
|
||||
- BUG: tables with empty cells at end and no bottom line were mistranslated
|
||||
- BUG: one-column tables could be mistranslated (HACK)
|
||||
|
||||
From 2.8.1.1 to 2.8.1.2
|
||||
- Cleaned up directory stuff. "reLyX foo/bar.tex" wouldn't work if foo/bar.tex
|
||||
\include'd another file
|
||||
|
||||
From 2.8 to 2.8.1.1
|
||||
- -o option allows you to create temp & LyX file(s) in a given output directory
|
||||
- support figure & figure* float
|
||||
- BUG: \input and \include support was broken
|
||||
- BUG: reLyX didn't notice if it was trying to write to a read-only directory,
|
||||
causing bad errors. Now it dies politely.
|
||||
- support \index and \printindex
|
||||
- \^ and \~ are apparently legal LaTeX, so support them. Also \textless,
|
||||
\textgreater, \textbar
|
||||
|
||||
From 2.7.2.1 to 2.8
|
||||
- support \textbackslash, \listof[tables|figures|algorithms], \ensuremath
|
||||
- reLyXskip environment is magical; it doesn't get put into LyX file
|
||||
- support for verbatim environment and \verb command
|
||||
- _ in bibliographystyle filename works
|
||||
- some "kernel cleanup", including removing some hacks, and adding methods
|
||||
- -h option prints usage. So does dying due to missing options, filename, etc.
|
||||
- translate \sp, etc. to their LyX-supported equivalents, using new 'reLyXmt'
|
||||
block in syntax.defaults file
|
||||
- translate certain arguments to untranslatable commmands (e.g., argument
|
||||
to \mbox{}) as regular LaTeX
|
||||
|
||||
From 2.7.1.1 to 2.7.2.1
|
||||
- Translate common optional args to \documentclass
|
||||
- support TeX style \input
|
||||
|
||||
From 2.6.1.3 to 2.7.1.1
|
||||
- support \include{foo} and \input{foo} (but not TeX's "\input foo.tex")
|
||||
- -p option translates latex fragments
|
||||
- Whitespace is a lot closer to lyx
|
||||
- Correctly (?) translate layouts of LatexType Command found in layout files
|
||||
even if the command isn't in syntax.default. E.g., \curradr, \lyxaddress
|
||||
|
||||
From 2.6.1.2 to 2.6.1.3
|
||||
- table bug: \multicolumn could screw up where cells were placed
|
||||
- table bug: \\ \hline at end of table made broken LyX tables
|
||||
- Don't print leading C-Enter for strings in TeX mode (e.g. unknown tokens)
|
||||
- support optional argument to \cite
|
||||
- support \hfill
|
||||
- Bug: known but untranslatable tokens may need braces after them. Translate
|
||||
{\oe} or \oe{} as TeX mode \oe{}.
|
||||
|
||||
From 2.6 to 2.6.1.2
|
||||
- Bug: \@ wasn't being handled correctly.
|
||||
- BUG! An 's' coming right after a comment would be deleted!
|
||||
- correct support for List (won't work for things nested in List,
|
||||
but that's OK because List is buggy anyway!) and (koma) Labeling layouts
|
||||
- support for \bibliography and \bibliographystyle commands (slightly kludged)
|
||||
- Buglet: needed to add a space after args in List, Description
|
||||
- Better handling of spaces for tokens and regular text
|
||||
- "Welcome message" with revision date
|
||||
- \LaTeXe -> "LaTeX2e"; support \underbar, \noun
|
||||
|
||||
From 2.5.2.3 to 2.6
|
||||
- text after \end{center|right|left} automatically starts new paragraph
|
||||
- \bibitem and thebibliography (i.e., non-BibTeX bibliographies) support
|
||||
- Partial fix to '_' bug. Non-math mode _ will translate correctly as long as
|
||||
it's not in an argument of an unknown command
|
||||
- Streamlined (non-debug) output to ~ 10 short lines
|
||||
- Allow comments in optional arguments to \documentclass
|
||||
- Handle @{} descriptions in tables
|
||||
- Added 'slide' as a regular environment in syntax.default
|
||||
- syntax file stuff broke \multicolumn & \cline. HACKED them back in.
|
||||
(had to pretend in syntax file that they don't take arguments!)
|
||||
- Fixed bug: *'s in regular environments are now recognized
|
||||
- Buglet: font size changes in footnote caused crash
|
||||
- Buglet: print \n after align commands
|
||||
|
||||
From 2.5.2.2 to 2.5.2.3
|
||||
- Read ~/.lyx/reLyX/syntax.default (if it exists) instead of system-wide file
|
||||
- Always put untranslatable text in TeX mode (never use LaTeX layout)
|
||||
- LaTeX command \newline is synonomous with \\, so support it
|
||||
|
||||
From 2.5.1.1 to 2.5.2.2
|
||||
- Look in ~/.lyx/layouts OR $lyxdir/layouts for layout files
|
||||
- -s option allows user to read syntax files in addition to the default one
|
||||
- "regular environments" section in syntax file (partially obsoletes -r option)
|
||||
- Slight change to \latex block vs. LaTeX paragraph printing decision
|
||||
|
||||
From 2.5 to 2.5.1.1
|
||||
- Fixed bug that made syntax.default useless in translation pass (thanks Jmarc!)
|
||||
- Fix to printing things in TeX mode (improvements & removing a couple buglets)
|
||||
- \thanks and \noindent supported
|
||||
|
||||
From 2.4 to 2.5
|
||||
- Bug: \underline broke reLyX
|
||||
- Try to read "foo.tex" if input file "foo" doesn't exist
|
||||
- Read in a default LaTeX syntax file saying how many (required/optional)
|
||||
arguments each LaTeX command takes
|
||||
- Ignore optional arguments to commands for which LyX can't handle them
|
||||
(e.g., \sqrt, \\)
|
||||
- More intelligently add braces to (math) command args that are missing them
|
||||
(e.g., x^\sqrt2 now works)
|
||||
|
||||
From 2.3.1.1 to 2.4
|
||||
- Table support! (i.e., tabular environment, \hline, \cline, \multicolumn)
|
||||
- table environment (including \caption and a tabular environment, e.g.)
|
||||
- (mostly) removed extra spaces (which display in LyX, but not in dvi)
|
||||
- Added support for accents, including all accents in table 3.1 of Lamport,
|
||||
plus \l \L ?` and !` (last two in LaTeX mode since LyX doesn't support 'em)
|
||||
- Added support for center, flushright, and flushleft environments
|
||||
- Add {} to end of unknown token if necessary
|
||||
- Fixed buglet: unknown token at end of paragraph didn't start new paragraph
|
||||
|
||||
From 2.3 to 2.3.1.1
|
||||
- Don't bother translating '\ ', since ~ isn't equivalent
|
||||
- Description \item commands now handled correctly (except "{]}")
|
||||
- Added -c option to override the LyX file's textclass
|
||||
- Fixed bug which didn't allow unknown environment nested within itself
|
||||
- Ignore anything after the \end{document} command
|
||||
- Fixed bug where floats (like footnote) didn't print enough \n's (which could
|
||||
lead to LyX ignoring text following the footnote up to the next \n!)
|
||||
|
||||
From 2.2.3.1 to 2.3
|
||||
- Remove LyX-generated preamble matter (JAMatos)
|
||||
- read LyX layout files from LIBDIR/layouts/ (-t option no longer necessary)
|
||||
|
||||
From 2.2.1.3 to 2.2.3.1
|
||||
- Added -r and -t options
|
||||
- deal with perl5.002 bug and fixed font commands at beginning of paragraph bug
|
||||
|
||||
From 2.2.1.1 to 2.2.1.3
|
||||
- Added -d switch
|
||||
- Fixed bug: \end{environment} wasn't ending local commands
|
||||
- Add braces to \frac, plus better brace-adding for ^ and _ (still not perfect)
|
||||
- Wrote a man page
|
||||
|
||||
From 2.2 to 2.2.1.1:
|
||||
- Got rid of *many* 'uninitialized value' errors due to $ or eof
|
||||
- Added abstract environment
|
||||
- Fixed support for {\em foo \em bar} + partial fix for {\cal A} in math mode
|
||||
- Fixed bug: math mode at beginning of a paragraph was mistranslated
|
||||
- Translate '\ ' as a protected space. This is probably wrong.
|
||||
- Major rewrite of CleanTeX. Only changes test.relyx2 + adds space to test.lyx
|
||||
but in the future it will allow better verbatim copying
|
||||
|
||||
From 2.1.1.1 to 2.2:
|
||||
- Major code rewrite/reorganization: should not change functionality (Karger)
|
||||
- CleanTeX is now a *subroutine*, not a separate executable (Karger)
|
||||
- Added -f option to clobber existing .lyx file (Karger)
|
||||
|
||||
From 2.1 to 2.1.1.1
|
||||
- Many little bug fixes (Karger)
|
||||
|
||||
2.1 Initial release 980118
|
||||
|
||||
1.1 Initial version, checked in 971210
|
||||
|
||||
pre1.1 work (mostly on CleanTeX) done by John Weiss.
|
@ -1,340 +0,0 @@
|
||||
# This file is part of reLyX
|
||||
# Copyright (c) 1998-9 Amir Karger karger@post.harvard.edu
|
||||
# You are free to use and modify this code under the terms of
|
||||
# the GNU General Public Licence version 2 or later.
|
||||
|
||||
package CleanTeX;
|
||||
# This package prepares a LaTeX file for translation to LyX
|
||||
# - Translates some local commands (e.g., {\em blah} to {\emph{blah}})
|
||||
# - Prepares math mode stuff for LyX. LyX reads LaTeX math mode directly,
|
||||
# so reLyX can basically copy all math mode exactly, but LyX is a
|
||||
# bit stricter than LaTeX. E.g., translate 'x^2' -> 'x^{2}
|
||||
# - Removes optional arguments if LyX doesn't understand them, e.g. \\
|
||||
|
||||
use strict;
|
||||
|
||||
use Verbatim;
|
||||
|
||||
######
|
||||
# Global variables
|
||||
my $last_eaten; # last token we ate
|
||||
|
||||
# List of commands for which LyX doesn't support the optional argument
|
||||
my @DeleteOptArg = map {"\\$_"} qw(\\ \\*
|
||||
chapter section subsection subsubsection paragraph subparagraph
|
||||
);
|
||||
|
||||
my $debug_on; # was -d option given?
|
||||
|
||||
######################### PARSER INVOCATION ################################
|
||||
sub call_parser {
|
||||
# This subroutine opens the TeX parser and processes the file.
|
||||
# Arg0 is the name of the input TeX file
|
||||
# Arg1 is the name of the output "clean" file
|
||||
|
||||
my ($InFileName, $OutFileName) = (shift,shift);
|
||||
|
||||
$debug_on = (defined($main::opt_d) && $main::opt_d);
|
||||
my $zzz=$debug_on ? " TeX file ($InFileName --> $OutFileName)\n" :"... ";
|
||||
print STDERR "Cleaning$zzz";
|
||||
open (OUTFILE, ">$OutFileName") or die "problem opening $OutFileName: $!\n";
|
||||
|
||||
# Create the list of tokens for the parser
|
||||
# Parts of the token list are swiped from TeX.pm
|
||||
my %MyTokens = ( '{' => $Text::TeX::Tokens{'{'},
|
||||
'}' => $Text::TeX::Tokens{'}'},
|
||||
'$' => $Text::TeX::Tokens{'$'},
|
||||
'$$' => $Text::TeX::Tokens{'$$'},
|
||||
'\begin' => $Text::TeX::Tokens{'\begin'},
|
||||
'\end' => $Text::TeX::Tokens{'\end'},
|
||||
);
|
||||
|
||||
# Put local tokens, like \em, into %MyTokens
|
||||
#Note: \cal is "local", although it's found in math mode
|
||||
# (The "map" just puts a backslash in front of each word in the list)
|
||||
my @LocalTokens = qw (em rm bf tt sf sc sl it
|
||||
rmfamily ttfamily sffamily mdseries bfseries
|
||||
upshape itshape slshape scshape cal
|
||||
);
|
||||
foreach (@LocalTokens) {
|
||||
$MyTokens{"\\$_"} = $Text::TeX::Tokens{'\em'}
|
||||
}
|
||||
# Now add any commands
|
||||
&ReadCommands::Merge(\%MyTokens);
|
||||
|
||||
# Create the fileobject
|
||||
my $file = new Text::TeX::OpenFile
|
||||
$InFileName,
|
||||
'defaultact' => \&clean_tex,
|
||||
'tokens' => \%MyTokens;
|
||||
|
||||
# Now actually process the file
|
||||
$file->process;
|
||||
close OUTFILE;
|
||||
#warn "Done cleaning TeX file\n";
|
||||
} # end sub call_parser
|
||||
|
||||
|
||||
####################### MAIN TRANSLATING SUBROUTINE ########################
|
||||
# Routine called by the TeX-parser to perform token-processing.
|
||||
sub clean_tex {
|
||||
my($eaten,$txt) = (shift,shift);
|
||||
my ($outstr, $type);
|
||||
|
||||
# Translation table for TT::Token tokens whose translations should
|
||||
# NOT have whitespace after them! See sub translate...
|
||||
# Note that tokens of type TT::EndLocal are always translated to '}'. So,
|
||||
# any token defined as a local token *must* be translated to something
|
||||
# with a '{' (e.g., '\em' -> '\emph{') or we'll have mismatched braces
|
||||
my %no_ws_transtbl = (
|
||||
'\em' => '\emph{',
|
||||
'\rm' => '\textrm{',
|
||||
'\bf' => '\textbf{',
|
||||
'\tt' => '\texttt{',
|
||||
'\sf' => '\textsf{',
|
||||
'\sc' => '\textsc{',
|
||||
'\sl' => '\textsl{',
|
||||
'\it' => '\textit{',
|
||||
'\rmfamily' => '\textrm{',
|
||||
'\ttfamily' => '\texttt{',
|
||||
'\sffamily' => '\textsf{',
|
||||
'\mdseries' => '\textmd{',
|
||||
'\bfseries' => '\textbf{',
|
||||
'\upshape' => '\textup{',
|
||||
'\itshape' => '\textit{',
|
||||
'\slshape' => '\textsl{',
|
||||
'\scshape' => '\textsc{',
|
||||
'\cal' => '\mathcal{',
|
||||
);
|
||||
|
||||
|
||||
# a faux "switch" statement. sets $_ for later use in pattern
|
||||
# matching.
|
||||
$type = ref($eaten);
|
||||
$type =~ s/^Text::TeX::// or die "Non-Text::TeX object";
|
||||
my $printstr = ""; # default for undefined printstrs etc.
|
||||
SWITCH: for ($type) {
|
||||
# Handle blank lines.
|
||||
if (/Paragraph/) {
|
||||
last SWITCH;
|
||||
}
|
||||
|
||||
# Handle the end of a local font command - insert a '}'
|
||||
if (/EndLocal/) {
|
||||
$printstr = '}';
|
||||
last SWITCH;
|
||||
}
|
||||
|
||||
# $eaten->exact_print is undefined for previous environments
|
||||
$outstr = $eaten->exact_print;
|
||||
if (! defined $outstr) { # comment at end of paragraph
|
||||
warn "Weird undefined token $eaten!" unless $eaten->comment;
|
||||
last SWITCH;
|
||||
}
|
||||
|
||||
# Handle LaTeX tokens
|
||||
if (/^Token$/) {
|
||||
my $realtok = $eaten->print; # w/out whitespace
|
||||
# If a comment is its own paragraph, print nothing
|
||||
last SWITCH unless defined($realtok);
|
||||
# Special handling for \verb and \verb*
|
||||
if ($realtok =~ /^\\verb\*?/) {
|
||||
$printstr = &Verbatim::copy_verb($txt,$eaten);
|
||||
last SWITCH;
|
||||
}
|
||||
|
||||
# Translate token if necessary, or just print it
|
||||
# "no_ws" is HACK to remove whitespace, so '\em ' -> '\emph{'
|
||||
$printstr = &translate($outstr, \%no_ws_transtbl, "no_ws");
|
||||
|
||||
# Ignore optional argument(s) if necessary
|
||||
$printstr .= &handle_opt_args($eaten,$txt);
|
||||
|
||||
last SWITCH;
|
||||
}
|
||||
|
||||
# Tokens taking arguments, like '^'
|
||||
# ADD '{' if there isn't one before the argument!
|
||||
# TODO can we check whether the command is \label, \include
|
||||
# and not add the braces in that case?
|
||||
if (/^BegArgsToken$/) {
|
||||
$printstr = $outstr;
|
||||
|
||||
# Ignore optional argument(s) if necessary
|
||||
$printstr .= &handle_opt_args($eaten,$txt);
|
||||
|
||||
# Add beginning brace before the 1st argument if there isn't one
|
||||
my $tok = $txt->lookAheadToken;
|
||||
$printstr .= '{' unless ($tok =~ /\{/);
|
||||
last SWITCH;
|
||||
}
|
||||
|
||||
# End of one argument, beginning of next
|
||||
# Note: by default ArgToken,EndArgsToken print nothing
|
||||
# ADD '}' if there isn't one after the last argument
|
||||
# Then read and print any optional arguments which may exist
|
||||
# between this argument the next (we must do this here or we would
|
||||
# add a '{' before an optional argument!)
|
||||
# ADD '{' if there isn't one before the next argument!
|
||||
# (just like we do in BegArgsToken and EndArgsToken)
|
||||
if (/^ArgToken$/) {
|
||||
$printstr = $outstr; # = ''
|
||||
|
||||
# Add '}' after the argument that ended if necessary
|
||||
$printstr .= '}' unless $last_eaten->print eq "\}";
|
||||
|
||||
# Eat and print any optional arguments
|
||||
$printstr .= &handle_opt_args($eaten,$txt);
|
||||
|
||||
# Add '{' before the next argument if necessary
|
||||
my $tok = $txt->lookAheadToken;
|
||||
$printstr .= '{' unless ($tok =~ /\{/);
|
||||
last SWITCH;
|
||||
}
|
||||
|
||||
# End of tokens taking arguments, like '^'
|
||||
# ADD '}' if there isn't one after the last argument, i.e.,
|
||||
# if the previous token *wasn't* a '}'
|
||||
# Kludge: for TeX style \input command ("\input foo" with no
|
||||
# braces) we need to read the whole filename, but parser will have
|
||||
# read only one char. So read in the rest of the filename before
|
||||
# printing the '}'.
|
||||
if (/^EndArgsToken$/) {
|
||||
$printstr = $outstr; # = ''
|
||||
|
||||
unless ($last_eaten->print eq "\}") {
|
||||
my $s = $eaten->base_token;
|
||||
if ($s->print eq "\\input") {
|
||||
my $t = $txt->lookAheadToken;
|
||||
# For one-char filename (a.tex) do nothing
|
||||
if ($t =~ /^[\w.\-]/) {
|
||||
my $u = $txt->eatMultiToken;
|
||||
$t = $u->print;
|
||||
$t =~ s/\s+//g;
|
||||
$printstr .= $t;
|
||||
}
|
||||
# TeX \input always adds .tex ending
|
||||
$printstr .= ".tex";
|
||||
}
|
||||
|
||||
$printstr .= '}';
|
||||
}
|
||||
|
||||
# Don't bother eating optional args coming after the last
|
||||
# required arg: they'll just be copied as text
|
||||
last SWITCH;
|
||||
}
|
||||
|
||||
# Handle opening groups, like '{' and '$'.
|
||||
if (/Begin::Group$/) {
|
||||
$printstr = $outstr;
|
||||
last SWITCH;
|
||||
}
|
||||
|
||||
# Handle closing groups, like '}' and '$'.
|
||||
if (/End::Group$/) {
|
||||
$printstr = $outstr;
|
||||
last SWITCH;
|
||||
}
|
||||
|
||||
if (/Begin::Group::Args/) {
|
||||
my $env = $eaten->environment;
|
||||
$printstr = $outstr;
|
||||
if ($env eq "verbatim" || $env eq "reLyXskip") {
|
||||
# copy everything up to "\end{foo}"
|
||||
$printstr .= &Verbatim::copy_verbatim($txt, $eaten);
|
||||
}
|
||||
last SWITCH;
|
||||
}
|
||||
|
||||
if (/End::Group::Args/) {
|
||||
$printstr = $outstr;
|
||||
last SWITCH;
|
||||
}
|
||||
|
||||
if (/Text/) {
|
||||
$printstr = $outstr;
|
||||
last SWITCH;
|
||||
}
|
||||
|
||||
# The default action - print the string.
|
||||
$printstr = $outstr;
|
||||
} # end SWITCH:for ($type)
|
||||
|
||||
# Actually print the string
|
||||
if (defined $printstr) {
|
||||
print OUTFILE $printstr;
|
||||
$last_eaten = $eaten; #save for next time
|
||||
} else {warn "Undefined printstr";}
|
||||
|
||||
} # end sub clean_tex
|
||||
|
||||
#################### TRANSLATOR SUBROUTINES ###############################
|
||||
sub translate {
|
||||
# Replace a string (possibly with whitespace around it) with another
|
||||
# Arg0 is a string, Arg1 is a reference to a hash containing translations
|
||||
# If a token not in the table is passed in, do nothing
|
||||
# If Arg2 is defined AND the token is known, then remove whitespace from
|
||||
# the end of the translated token. This is a HACK to do '\em ' -> '\emph{'
|
||||
# Return the string, possibly modified
|
||||
my ($tokstr, $transref) = (shift, shift);
|
||||
my $remove_ws = shift;
|
||||
my %transtable = %$transref;
|
||||
|
||||
# remove whitespace from the string (since transtable doesn't have it)
|
||||
my $stripstr = $tokstr;
|
||||
$stripstr =~ s/^\s*(\S+)\s*$/$1/ or warn "couldn't strip token";
|
||||
if ( exists $transtable{$stripstr} ) {
|
||||
# use \Q or \, (, $, and [ will be misinterpreted
|
||||
$tokstr =~ s/\Q$stripstr\E/$transtable{$stripstr}/;
|
||||
|
||||
# remove whitespace?
|
||||
if (defined $remove_ws) {
|
||||
$tokstr =~ s/\s*$//;
|
||||
}
|
||||
}
|
||||
|
||||
return $tokstr;
|
||||
}
|
||||
|
||||
sub handle_opt_args {
|
||||
# read and concatenate OR IGNORE optional arguments
|
||||
# Arg0 is a BegArgsToken or ArgToken
|
||||
my ($eaten,$fileobject) = (shift,shift);
|
||||
my $outstr = "";
|
||||
|
||||
# If at end of paragraph, don't bother looking for optArgs
|
||||
return "" unless $fileobject->lookAheadToken;
|
||||
|
||||
# Get the next argument(s) expected for this token == /^o*[rR]?$/
|
||||
# If there are no args expected, just return
|
||||
my $curr_args = $eaten->next_args($fileobject) or return "";
|
||||
|
||||
# Now print or ignore any optional arguments
|
||||
# If there's an 'r' in curr_args, we're done for now
|
||||
my $foo;
|
||||
my $token_name = $eaten->token_name; # (needed for EndArgsToken, e.g.)
|
||||
while ($curr_args =~ s/^o//) {
|
||||
my $opt = $fileobject->eatOptionalArgument;
|
||||
# Print any initial space before the optional argument
|
||||
if ($foo = $opt->exact_print) {
|
||||
if ($foo =~ /^(\s+)/) {
|
||||
$outstr .= $1;
|
||||
}
|
||||
}
|
||||
|
||||
# Print the argument or ignore it
|
||||
if ($opt->print) {
|
||||
if (grep /^\Q$token_name\E$/, @DeleteOptArg) {
|
||||
print "Optional argument '",$opt->print,
|
||||
"' to macro $token_name ignored\n";
|
||||
} else {
|
||||
$outstr .= "[" . $opt->print . "]";
|
||||
}
|
||||
} # Was an optional argument found?
|
||||
}
|
||||
|
||||
return $outstr;
|
||||
} # end sub handle_opt_args
|
||||
|
||||
1; # return true value to calling program
|
@ -1,130 +0,0 @@
|
||||
# This file is part of reLyX
|
||||
# Copyright (c) 1998-9 Amir Karger karger@post.harvard.edu
|
||||
# You are free to use and modify this code under the terms of
|
||||
# the GNU General Public Licence version 2 or later.
|
||||
|
||||
package LastLyX;
|
||||
# This package is the last step in creating a LyX file. It:
|
||||
# - rejoins the lyx preamble to the rest of the file
|
||||
# - adds some information (see below)
|
||||
# - determines whether reLyX needs to translate any other files (e.g.,
|
||||
# files included in an \include command)
|
||||
# - creates a '.lyx' file
|
||||
#
|
||||
# reLyX may not have enough information during the previous pass. In that case,
|
||||
# it puts a "marker" in the temporary file it writes, and stores the missing
|
||||
# information---when it does come upon it---in a global variable.
|
||||
# So during this pass, if we see any such markers, we replace them with the
|
||||
# necessary information. Examples of this include:
|
||||
# - header information for tables
|
||||
# - name of the bibliography style file to use
|
||||
|
||||
use strict;
|
||||
use RelyxTable; # handle LaTeX tables
|
||||
use File::Basename;
|
||||
|
||||
my $debug_on; # was -d option given?
|
||||
|
||||
sub last_lyx {
|
||||
# Arg0 is input file name
|
||||
# Arg1 is output file name (foo.lyx)
|
||||
# Arg2 is a string containing the entire preamble
|
||||
|
||||
my ($InFileName, $OutFileName, $LyXPreamble) = (shift, shift, shift);
|
||||
$debug_on = (defined($main::opt_d) && $main::opt_d);
|
||||
my $zzz=$debug_on ? " LyX file ($InFileName --> $OutFileName)\n" :"... ";
|
||||
print STDERR "Writing$zzz";
|
||||
open (INFILE, "<$InFileName") or die "problem opening $InFileName: $!\n";
|
||||
open (OUTFILE,">$OutFileName") or die "problem opening $OutFileName: $!\n";
|
||||
|
||||
# Print the preamble
|
||||
print OUTFILE $LyXPreamble;
|
||||
|
||||
# Now print out the rest of the LyX file
|
||||
# Some lines have to be changed somewhat
|
||||
# Otherwise just print all lines as they appear.
|
||||
# TODO In the future, we could buffer text, and then get rid of extra
|
||||
# '\latex default \latex latex' or '\end_deeper \begin_deeper' pieces
|
||||
# created by the translator
|
||||
while (<INFILE>) {
|
||||
if (/$RelyxTable::TableBeginString/o) {
|
||||
# Write out the header information for the table
|
||||
$_ = &print_table;
|
||||
|
||||
} elsif (/$BasicLyX::bibstyle_insert_string/o) {
|
||||
# Replace the "insert bibstyle file here" with the actual file name
|
||||
|
||||
my $ins = $BasicLyX::bibstyle_insert_string;
|
||||
my $fil = $BasicLyX::bibstyle_file;
|
||||
if ($fil) {
|
||||
s/$ins/$fil/;
|
||||
} else {
|
||||
warn("Don't know which bibliographystyle file to use!\n".
|
||||
"Replace '$ins' in the LyX file with the bibstyle file\n");
|
||||
}
|
||||
|
||||
} elsif (/^\Q$BasicLyX::Begin_Inset_Include\E/o) {
|
||||
# tell main:: we need to translate an included (or inputted) file
|
||||
m/\{(.*)\}\s*$/ or warn "weird Include command $_";
|
||||
my $fil = $1;
|
||||
# Change relative path to absolute path if necessary
|
||||
my $abs_fil = &main::abs_file_name($fil);
|
||||
print "Adding $abs_fil to file list\n" if $debug_on;
|
||||
push @main::File_List, $abs_fil;
|
||||
|
||||
# include file.lyx, not file.tex!
|
||||
my ($basename, $path, $suffix)=fileparse($fil, @main::Suffix_List);
|
||||
$suffix = "" unless defined $suffix;
|
||||
$path .= '/' unless $path =~ /\/$/;
|
||||
my $newfile;
|
||||
if ($main::opt_o) { # all files go to outputdir; no path nec.
|
||||
$newfile = "$basename.lyx";
|
||||
} else { # keep relative path, e.g. Just change/add suffix
|
||||
($newfile = $fil) =~ s/$suffix$/.lyx/;
|
||||
}
|
||||
s/\Q{$fil}\E/{$newfile}/;
|
||||
} # end special if for table, bibstyle, include
|
||||
|
||||
print OUTFILE $_;
|
||||
}
|
||||
|
||||
close INFILE; close OUTFILE;
|
||||
#warn "Done writing LyX file!\n";
|
||||
} # end sub last_lyx
|
||||
|
||||
sub print_table {
|
||||
# Print a table, from TableBeginString to TableEndString
|
||||
# Also (kind of a hack) remove the last \newline in a table, if any,
|
||||
# since it causes LyX to seg fault.
|
||||
my $to_print=""; # string to collect the table in
|
||||
my $thistable = shift(@RelyxTable::table_array);
|
||||
|
||||
# Collect the whole table in $to_print
|
||||
my $line;
|
||||
while (($line = <INFILE>) !~ /$RelyxTable::TableEndString/o) {
|
||||
$to_print .= $line;
|
||||
}
|
||||
|
||||
# Remove the last \newline, if it was created by a \\ \hline
|
||||
# at the end of a table. (Note: according to Lamport, \\ at the end of
|
||||
# a table is *illegal* unless followed by an \hline)
|
||||
# If it was created due to an empty cell at the end of the table, though
|
||||
# (latex table "a & b \\ c &", e.g.) then we need to keep it!
|
||||
# HACK HACK HACK. If it's a one-column table, then we couldn't
|
||||
# know while reading the table that the last row was empty, so we
|
||||
# couldn't pop the last row then. So do it now. Yuck.
|
||||
if ($thistable->numcols==1) {
|
||||
$to_print =~ s/\\newline(?=\s*$)// && pop @{$thistable->{"rows"}}
|
||||
} elsif ($thistable->{"rows"}[$thistable->numrows -1]->{"bottom_line"}) {
|
||||
$to_print =~ s/\\newline(?=\s*$)//;
|
||||
}
|
||||
|
||||
# Put the header information at the top
|
||||
# We have to do this *after* reading the table because of the
|
||||
# one-column table hack. Yuck.
|
||||
$to_print = $thistable->print_info . $to_print;
|
||||
|
||||
return $to_print;
|
||||
} # end sub print_table
|
||||
|
||||
1; # return true to main package
|
@ -1,42 +0,0 @@
|
||||
******* Files of general interest
|
||||
README - General info, pointer to man page
|
||||
MANIFEST - this file (hopefully)
|
||||
CHANGES - changes from various versions
|
||||
BUGS - bugs (note that some larger bugs are in the man page)
|
||||
syntax.default - file describing LaTeX syntax
|
||||
reLyX.man - man page for using reLyX
|
||||
TODO - future plans
|
||||
|
||||
******* Files of interest to developers (maybe)
|
||||
reLyXmain.pl - Executable Perl script to translate LaTeX to LyX
|
||||
reLyX.in - input file to generate wrapper script 'reLyX', which gets
|
||||
installed in user's path, e.g., /usr/local/bin
|
||||
reLyX calls reLyXmain.pl
|
||||
noweb2lyx.in - input file to generate noweb2lyx, for converting noweb
|
||||
file to LyX. noweb2lyx calls reLyX. Alternatively (but
|
||||
not recursively) reLyX -n calls noweb2lyx
|
||||
|
||||
test.ltx - test tex file
|
||||
test.lyx - LyX file created by running 'reLyX.pl test.ltx'
|
||||
|
||||
reLyX.pod - documentation. Used to generate man page
|
||||
(could be used to make HTML or text, too!)
|
||||
|
||||
*.pm are files containing subroutines (aka modules) which reLyX.pl calls
|
||||
MakePreamble.pm - split off and translate the LaTeX preamble
|
||||
CleanTeX.pm - "Clean" the TeX file
|
||||
BasicLyX.pm - main translation pass
|
||||
LastLyX.pm - final pass: create the LyX file
|
||||
ReadCommands.pm - subs to read and use a file containing LaTeX syntax
|
||||
RelyxFigure.pm - classes & methods for handling LaTeX figures
|
||||
RelyxTable.pm - classes & methods for handling LaTeX tables
|
||||
Verbatim.pm - subs to copy stuff exactly (e.g, \verb or unknown commands)
|
||||
|
||||
Text/TeX.pm - Text::TeX package which contains the TeX parser
|
||||
./Text/TeX.pm was originally copied from
|
||||
Text-TeX-0.01/Text/TeX.pm, but has been changed.
|
||||
Text/manpage.3pm original manpage for Text::TeX
|
||||
|
||||
Text::TeX v0.01 was originally obtained from CPAN, but it has been
|
||||
changed rather significantly. The original package was written by Ilya
|
||||
Zakharevich (ilya@math.ohio-state.edu)
|
@ -1,383 +0,0 @@
|
||||
# This file is part of reLyX.
|
||||
# Copyright (c) 1998-9 Amir Karger karger@post.harvard.edu
|
||||
# You are free to use and modify this code under the terms of
|
||||
# the GNU General Public Licence version 2 or later.
|
||||
|
||||
package MakePreamble;
|
||||
# This package reads a LaTeX preamble (everything before \begin{document}
|
||||
# and translates it to LaTeX.
|
||||
|
||||
use strict;
|
||||
|
||||
my $debug_on; # package-wide variable set if -d option is given
|
||||
my $true_class; # which textclass to use (if -c option is given)
|
||||
|
||||
sub split_preamble {
|
||||
# Split the file into two files, one with just the preamble
|
||||
# Simply copy stuff verbatim, saving translation for later
|
||||
# Skip the LyX-generated portion of the preamble, if any. (Otherwise,
|
||||
# when you try to "view dvi" in LyX, there will be two copies of the
|
||||
# preamble matter, which will break LyX.
|
||||
my ($InFileName, $PreambleName, $OutFileName) = (shift, shift, shift);
|
||||
my ($a, $b, $c);
|
||||
my $forget=0;
|
||||
|
||||
# Was -d option given?
|
||||
$debug_on = (defined($main::opt_d) && $main::opt_d);
|
||||
# -c option?
|
||||
$true_class = defined($main::opt_c) ? $main::opt_c : "";
|
||||
my $zzz = $debug_on
|
||||
? " from LaTeX file $InFileName into $PreambleName and $OutFileName"
|
||||
: "";
|
||||
warn "Splitting Preamble$zzz\n";
|
||||
|
||||
open (INFILE, "<$InFileName") or die "problem opening $InFileName: $!\n";
|
||||
open (PREAMBLE, ">$PreambleName") or
|
||||
die "problem opening $PreambleName: $!\n";
|
||||
open (OUTFILE, ">$OutFileName") or die "problem opening $OutFileName: $!\n";
|
||||
|
||||
# Copy everything up to "\begin{document}" into the preamble
|
||||
while (<INFILE>) {
|
||||
if (s/\Q\begin{document}\E//) {
|
||||
($a, $b, $c) = ($`, $&, $'); # save for later
|
||||
last;
|
||||
}
|
||||
# In real life, there should never be Textclass specific stuff unless
|
||||
# there is also LyX specific. But it can't hurt to test for both.
|
||||
$forget=1 if m/%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific/ ||
|
||||
m/%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Textclass specific/;
|
||||
print PREAMBLE $_ unless $forget;
|
||||
$forget=0 if m/%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified/;
|
||||
}
|
||||
die "Didn't find \\begin{document} command!" unless defined $b;
|
||||
# There *could* be a preamble command on the same line as \begin{doc}!
|
||||
print PREAMBLE $a;
|
||||
print "Put preamble into file $PreambleName\n" if $debug_on;
|
||||
|
||||
# Copy everything else into another file
|
||||
# Ignore anything after '\end{document}
|
||||
print OUTFILE $b, $c; #'\begin{document}' plus anything else on the line
|
||||
while (<INFILE>) {
|
||||
print OUTFILE $_;
|
||||
last if $_ =~ /^[^%]*\Q\end{document}\E/;
|
||||
}
|
||||
|
||||
print "Put rest of file into $OutFileName\n" if $debug_on;
|
||||
close INFILE; close OUTFILE; close PREAMBLE;
|
||||
#warn "Done splitting preamble\n";
|
||||
} #end sub split_preamble
|
||||
|
||||
|
||||
|
||||
# Actually translate a LaTeX preamble (in a file) into a LyX preamble.
|
||||
# Input:
|
||||
# First argument is the name of the file containing *only* the preamble
|
||||
# Second argument is the LyX format (e.g., "2.15")
|
||||
#
|
||||
# Output: document class, LyX Preamble, LaTeX preamble
|
||||
# LyX premable contains the LyX options etc.
|
||||
# LaTeX preamble is stuff that doesn't translate into LyX options)
|
||||
#
|
||||
sub translate_preamble {
|
||||
my $PreambleName = shift;
|
||||
my $Format = shift;
|
||||
$debug_on = (defined($main::opt_d) && $main::opt_d);
|
||||
my $zzz=$debug_on ? " from $PreambleName" :"";
|
||||
warn "Creating LyX preamble$zzz\n";
|
||||
open (PREAMBLE, "<$PreambleName");
|
||||
|
||||
# Translate optional args to \documentclass to LyX preamble statements
|
||||
my %Option_Trans_Table = (
|
||||
"10pt" => "\\paperfontsize 10",
|
||||
"11pt" => "\\paperfontsize 11",
|
||||
"12pt" => "\\paperfontsize 12",
|
||||
|
||||
"letterpaper" => "\\papersize letterpaper",
|
||||
"legalpaper" => "\\papersize legalpaper",
|
||||
"executivepaper" => "\\papersize executivepaper",
|
||||
"a3paper" => "\\papersize a3paper",
|
||||
"a4paper" => "\\papersize a4paper",
|
||||
"a5paper" => "\\papersize a5paper",
|
||||
"b3paper" => "\\papersize b3paper",
|
||||
"b4paper" => "\\papersize b4paper",
|
||||
"b5paper" => "\\papersize b5paper",
|
||||
|
||||
"twoside" => "\\papersides 2",
|
||||
"oneside" => "\\papersides 1",
|
||||
|
||||
"landscape" => "\\paperorientation landscape",
|
||||
|
||||
"onecolumn" => "\\papercolumns 1",
|
||||
"twocolumn" => "\\papercolumns 2",
|
||||
);
|
||||
|
||||
my %Languages_Table = ();
|
||||
# if the language file is available then added it to the languages table
|
||||
if(-e "$main::lyxdir/languages") {
|
||||
open (LANGUAGES, "<$main::lyxdir/languages");
|
||||
|
||||
while(<LANGUAGES>) {
|
||||
next if(/^\#/); #ignore comments
|
||||
my @lang_field = split(/\s+/);
|
||||
$Languages_Table{$lang_field[1]} = $lang_field[1];
|
||||
}
|
||||
close(LANGUAGES);
|
||||
}
|
||||
|
||||
# This is the string in which we're concatenating everything we translate
|
||||
my $LyX_Preamble = "";
|
||||
|
||||
# It would be nice to read the defaults.lyx file but for now we don't bother
|
||||
#my $default_dir = "templates/";
|
||||
#my $default_name = "defaults.lyx";
|
||||
#my $default_file = $dot_lyxdir . $default_dir . $default_name;
|
||||
#if (-e $default_file) {
|
||||
# print "Going to open default LyX file $default_file\n";
|
||||
# open (DEFAULT_LYX,$default_file) or warn "can't find default lyx file!";
|
||||
# if ($fmt =~ /^\s*\\lyxformat [0-9.]+/) {
|
||||
# print $fmt
|
||||
# } else {
|
||||
# die "Need \\lyxformat command in first line of default lyx file!";
|
||||
# }
|
||||
# AFTER printing the preamble, we'd print other commands from defaults.lyx
|
||||
# while (($line = <DEFAULT_LYX>) !~ /^.*\\layout/) {
|
||||
# if ($line !~ /^\s*(\#|\\textclass\W)/) { #already printed this line
|
||||
# print OUTFILE $line;
|
||||
# }
|
||||
# }
|
||||
#}
|
||||
|
||||
# Write first line of the lyx file
|
||||
$LyX_Preamble .= "\# The reLyX bundled with LyX 1.3 created this file.\n" .
|
||||
"# For more info see http://www.lyx.org/\n";
|
||||
|
||||
# Print \lyxformat.
|
||||
$LyX_Preamble .= "\\lyxformat $Format\n";
|
||||
|
||||
# Ignore everything up to the \documentclass
|
||||
my $ignore = "";
|
||||
while (<PREAMBLE>) {
|
||||
next if /^\s*$/ || /^\s*%/; # skip whitespace or comment
|
||||
# could just allow 'documentclass' and not support 2.09
|
||||
last if s/^\s*\\document(style|class)//;
|
||||
$ignore .= $_; # concatenate the ignored text
|
||||
} # end while
|
||||
warn "Uncommented text before \\documentclass command ignored!\n"if $ignore;
|
||||
print "Ignored text was\n------\n$ignore------\n" if $debug_on && $ignore;
|
||||
|
||||
# concatenate all the extra options until the required argument to
|
||||
# \documentclass, which will be in braces
|
||||
until (eof(PREAMBLE) || /\{/) {
|
||||
my $instr = <PREAMBLE>;
|
||||
$instr =~ s/\s*%.*$//; # get rid of comments
|
||||
chomp; # remove the \n on $_ prior to concatenating
|
||||
$_ .= $instr;
|
||||
} # end loop; check the now longer $_ for a brace
|
||||
|
||||
# Read optional arguments, which are now guaranteed to be on one line
|
||||
# (They're read here, but printed AFTER the \\textclass command)
|
||||
# Note: the below pattern match is *always* successful, so $& is always
|
||||
# set, but it will be '' if there are no optional arguments. $1 will be
|
||||
# whatever was inside the brackets (i.e., not including the [])
|
||||
my $extra_options;
|
||||
if (defined($_)) {
|
||||
s/^\s*//; # there might be space before args
|
||||
s/$Text::TeX::optionalArgument//;
|
||||
$extra_options = $1 if $&;
|
||||
}
|
||||
|
||||
# Read the document class, in braces, then convert it to a textclass
|
||||
# However, if the user input a different class with the -c option, use that
|
||||
s/\s*\{(\S+)\s*\}//;
|
||||
my $class = $1;
|
||||
$class = $true_class if $true_class; # override from -c option
|
||||
die "no document class in file, no -c option given\n" unless $class;
|
||||
$LyX_Preamble .= "\\textclass $class\n";
|
||||
print "document class is $class\n" if $debug_on;
|
||||
|
||||
# Analyze the extra options, and remove those we know about
|
||||
if ($extra_options) {
|
||||
my $op;
|
||||
foreach $op (keys %Option_Trans_Table) {
|
||||
$extra_options =~ s/\b$op\b// && do {
|
||||
$LyX_Preamble .= "$Option_Trans_Table{$op}\n";
|
||||
print "Document option $op\n" if $debug_on;
|
||||
}
|
||||
}
|
||||
$extra_options =~ s/^,+|,+(?=,)|,+$//g; # extra commas
|
||||
# Analyze further the extra options for languages, the last language
|
||||
# is the document language, so the order matters.
|
||||
my $language ="";
|
||||
foreach $op (split(/\s*,\s*/,$extra_options)) {
|
||||
if (exists $Languages_Table{$op}) {
|
||||
$language = $op;
|
||||
$extra_options =~ s/\b$op\b//;
|
||||
print "Document language $op\n" if $debug_on;
|
||||
}
|
||||
}
|
||||
if ($language) {
|
||||
$LyX_Preamble .= "\\language $language\n";
|
||||
}
|
||||
$extra_options =~ s/^,+|,+(?=,)|,+$//g; # extra commas
|
||||
}
|
||||
# Convert any remaining options to an \options command
|
||||
if ($extra_options) {
|
||||
$LyX_Preamble .= "\\options $extra_options\n";
|
||||
print "extra options: $extra_options\n" if $debug_on;
|
||||
}
|
||||
|
||||
# Now copy the whole preamble into the preamble of the LyX document
|
||||
# (unless there is no preamble)
|
||||
# Everything until the end of filehandle PREAMBLE is preamble matter
|
||||
my $Latex_Preamble = $_; # there COULD be a preamble command on same line
|
||||
while (<PREAMBLE>) {
|
||||
$Latex_Preamble .= $_;
|
||||
}
|
||||
|
||||
# Process $Latex_Preamble, and try to extract as much as possible to
|
||||
# $Lyx_Preamble (jamatos 2001/07/21)
|
||||
|
||||
# Deal with counters, for now just "tocdepth" and "secnumdepth"
|
||||
my %Counter_Table = (
|
||||
"secnumdepth" => "\\secnumdepth",
|
||||
"tocdepth" => "\\tocdepth"
|
||||
);
|
||||
|
||||
my $ct;
|
||||
foreach $ct (keys %Counter_Table) {
|
||||
$Latex_Preamble =~ s/\\setcounter\{$ct\}\{(.*)\}\s*// && do {
|
||||
$LyX_Preamble .= "$Counter_Table{$ct} $1\n";
|
||||
}
|
||||
}
|
||||
|
||||
if($Latex_Preamble =~ s/\\pagestyle\{(.*)\}\s*//) {
|
||||
$LyX_Preamble .= "\\paperpagestyle $1\n";
|
||||
}
|
||||
if($Latex_Preamble =~ s/\\usepackage\[(.*)\]\{inputenc\}\s*//) {
|
||||
$LyX_Preamble .= "\\inputencoding $1\n";
|
||||
}
|
||||
$Latex_Preamble =~ s/\\usepackage\[.*\]\{fontenc\}\s*//;
|
||||
|
||||
## Deal with \usepackage{} cases, no optional argument
|
||||
my %Usepackage_Table = (
|
||||
"amsmath" => "\\use_amsmath 1",
|
||||
"amssymb" => "",
|
||||
|
||||
"geometry" => "\\use_geometry 1",
|
||||
|
||||
"babel" => "",
|
||||
|
||||
"pslatex" => "\\fontscheme pslatex",
|
||||
"ae" => "\\fontscheme ae",
|
||||
"aecompl" => "",
|
||||
"times" => "\\fontscheme times",
|
||||
"palatino" => "\\fontscheme palatino",
|
||||
"helvet" => "\\fontscheme helvet",
|
||||
"avant" => "\\fontscheme avant",
|
||||
"newcent" => "\\fontscheme newcent",
|
||||
"bookman" => "\\fontscheme bookman",
|
||||
|
||||
"a4wide" => "\\paperpackage widemarginsa4",
|
||||
"a4" => "\\paperpackage a4wide",
|
||||
|
||||
"graphics" => "\\graphics default",
|
||||
"rotating" => "",
|
||||
"makeidx" => ""
|
||||
);
|
||||
|
||||
## Babel with arguments specifing language
|
||||
if($Latex_Preamble =~ s/\\usepackage\[(.*)\]\{babel\}\s*//) {
|
||||
my @languages = split(',',$1);
|
||||
my $lang = pop @languages;
|
||||
$LyX_Preamble .= "\\language $lang\n";
|
||||
}
|
||||
|
||||
my $up;
|
||||
foreach $up (keys %Usepackage_Table) {
|
||||
$Latex_Preamble =~ s/^\s*\\usepackage\{$up\}\s*// && do {
|
||||
$LyX_Preamble .= "$Usepackage_Table{$up}";
|
||||
$LyX_Preamble .= "\n" unless ($Usepackage_Table{$up} eq "");
|
||||
}
|
||||
}
|
||||
|
||||
# Natbib is a little more complex than that.
|
||||
if ($Latex_Preamble =~ s/\\usepackage(.*)\{natbib\}\s*//) {
|
||||
$LyX_Preamble .= "\\use_natbib 1\n\\use_numerical_citations ";
|
||||
$LyX_Preamble .= ($1 =~ /numbers/) ? "1\n" : "0\n";
|
||||
} else {
|
||||
$LyX_Preamble .= "\\use_natbib 0\n\\use_numerical_citations 0\n";
|
||||
}
|
||||
|
||||
## Handle geometry options
|
||||
## The custom paper missing from the options list since it involves two parameters
|
||||
my %Geometry_Options =(
|
||||
'verbose' => sub { return "" },
|
||||
|
||||
"letterpaper" => sub { return "\\papersize letterpaper\n" },
|
||||
"legalpaper" => sub { return "\\papersize legalpaper\n" },
|
||||
"executivepaper"=> sub { return "\\papersize executivepaper\n" },
|
||||
"a3paper" => sub { return "\\papersize a3paper\n" },
|
||||
"a4paper" => sub { return "\\papersize a4paper\n" },
|
||||
"a5paper" => sub { return "\\papersize a5paper\n" },
|
||||
"b3paper" => sub { return "\\papersize b3paper\n" },
|
||||
"b4paper" => sub { return "\\papersize b4paper\n" },
|
||||
"b5paper" => sub { return "\\papersize b5paper\n" },
|
||||
|
||||
'tmargin=(\w*)' => sub { return "\\topmargin $1\n" },
|
||||
'bmargin=(\w*)' => sub { return "\\bottommargin $1\n" },
|
||||
'lmargin=(\w*)' => sub { return "\\leftmargin $1\n" },
|
||||
'rmargin=(\w*)' => sub { return "\\rightmargin $1\n" },
|
||||
'headsep=(\w*)' => sub { return "\\headsep $1\n" },
|
||||
'footskip=(\w*)' => sub { return "\\footskip $1\n" },
|
||||
'headheight=(\w*)' => sub { return "\\headheight $1\n" }
|
||||
);
|
||||
|
||||
if( $Latex_Preamble =~ /\\geometry\{(.*)\}/) {
|
||||
my $geom_options = $1;
|
||||
my $op;
|
||||
foreach $op (keys %Geometry_Options) {
|
||||
$geom_options =~ s/$op// && do {
|
||||
$LyX_Preamble .= &{$Geometry_Options{$op}}();
|
||||
print "Geometry option $op\n" if $debug_on;
|
||||
}
|
||||
}
|
||||
$geom_options =~ s/^,+|,+(?=,)|,+$//g; # extra commas
|
||||
if( $geom_options =~ /\s*/) {
|
||||
$Latex_Preamble =~ s/\\geometry\{(.*)\}//;
|
||||
}
|
||||
else {
|
||||
$Latex_Preamble =~ s/\\geometry\{(.*)\}/\\geometry\{$geom_options\}/;
|
||||
}
|
||||
}
|
||||
|
||||
## Paragraph skip or indentation
|
||||
if ( $Latex_Preamble =~
|
||||
s/\\setlength\\parskip\{\\(.*)amount\}\s*\\setlength\\parindent\{0pt\}//) {
|
||||
$LyX_Preamble .= "\\paragraph_separation skip\n";
|
||||
$LyX_Preamble .= "\\defskip $1\n";
|
||||
}
|
||||
|
||||
## Paragraph spacing
|
||||
if ( $Latex_Preamble =~ s/\\(\w*)spacing//) {
|
||||
$LyX_Preamble .= "\\spacing $1\n";
|
||||
}
|
||||
|
||||
## remove LyX specific stuff
|
||||
$Latex_Preamble =~ s/\\IfFileExists\{url.sty\}\{\\usepackage\{url\}\}\s*\{\\newcommand\{\\url\}\{\\texttt\}\}\s*//;
|
||||
|
||||
## this two need probably a more fine grained control
|
||||
$Latex_Preamble =~ s/\\makeatletter\s*//;
|
||||
$Latex_Preamble =~ s/\\makeatother\s*//;
|
||||
|
||||
$Latex_Preamble =~ s/^\s*//;
|
||||
print "LaTeX preamble, consists of:\n$Latex_Preamble" if $debug_on;
|
||||
if($Latex_Preamble) {
|
||||
$Latex_Preamble = "\\begin_preamble\n$Latex_Preamble\\end_preamble\n";
|
||||
} #just comments, whitespace. Ignore them
|
||||
print "End of LaTeX preamble\n" if $debug_on;
|
||||
|
||||
#warn "Done creating LyX Preamble\n";
|
||||
return ($class, $LyX_Preamble, $Latex_Preamble);
|
||||
}
|
||||
|
||||
1; # return true value to calling program
|
@ -1,37 +0,0 @@
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
DISTCLEANFILES= *.orig *.rej *~ *.bak reLyX reLyX.1 config.log config.status
|
||||
MAINTAINERCLEANFILES = $(srcdir)/Makefile.in $(srcdir)/configure
|
||||
|
||||
man_MANS = reLyX.1
|
||||
|
||||
EXTRA_DIST = BUGS BasicLyX.pm CHANGES CleanTeX.pm LastLyX.pm MANIFEST \
|
||||
MakePreamble.pm ReadCommands.pm RelyxTable.pm reLyX.pod \
|
||||
reLyXmain.pl syntax.default test.ltx test.lyx reLyX.man \
|
||||
RelyxFigure.pm Verbatim.pm Text
|
||||
|
||||
bin_SCRIPTS = reLyX noweb2lyx
|
||||
|
||||
relyxdatadir = $(pkgdatadir)/reLyX
|
||||
relyxdata_DATA = \
|
||||
BasicLyX.pm \
|
||||
CleanTeX.pm \
|
||||
LastLyX.pm \
|
||||
MakePreamble.pm \
|
||||
ReadCommands.pm \
|
||||
RelyxFigure.pm \
|
||||
RelyxTable.pm \
|
||||
Verbatim.pm \
|
||||
reLyXmain.pl \
|
||||
README \
|
||||
BUGS \
|
||||
CHANGES \
|
||||
reLyX.pod \
|
||||
syntax.default
|
||||
|
||||
relyxtextdir = $(pkgdatadir)/reLyX/Text
|
||||
relyxtext_DATA = \
|
||||
Text/manpage.3pm \
|
||||
Text/TeX.pm
|
||||
|
||||
reLyX.1:
|
||||
cp -p $(srcdir)/reLyX.man reLyX.1
|
@ -1,25 +0,0 @@
|
||||
********************************************************************************
|
||||
* reLyX -- a LaTeX to LyX translator *
|
||||
********************************************************************************
|
||||
|
||||
The purpose of reLyX is to translate *well-behaved* LaTeX into LyX.
|
||||
|
||||
Its main goals are:
|
||||
1) Get through a well-behaved LaTeX2e file without crashing
|
||||
2) Translate a lot of that file.
|
||||
3) Localize the parts that can't be translated and copy them in TeX mode
|
||||
It seems to achieve these main goals pretty well on most files.
|
||||
|
||||
reLyX is in its early stages, so it still has some bugs and lacking features.
|
||||
There are many improvements that can and will be made to reLyX in the
|
||||
near future. However, we wanted to get reLyX out there early on, to make
|
||||
it easier for new LyX users who want to translate their existing LaTeX files.
|
||||
|
||||
reLyX uses a modified version of the Perl TeX parser Text::TeX package written
|
||||
by Ilya Zakharevich (ilya@math.ohio-state.edu). The original Text::TeX is
|
||||
available on CPAN.
|
||||
|
||||
There are lots more details in the man pages, so try 'man reLyX'
|
||||
|
||||
Amir Karger
|
||||
karger@post.harvard.edu
|
@ -1,428 +0,0 @@
|
||||
# This file is part of reLyX
|
||||
# Copyright (c) 1998-9 Amir Karger karger@post.harvard.edu
|
||||
# You are free to use and modify this code under the terms of
|
||||
# the GNU General Public Licence version 2 or later.
|
||||
|
||||
package ReadCommands;
|
||||
# Read a file containing LaTeX commands and their syntax
|
||||
# Also, read a file containing LyX layouts and their LaTeX equivalents
|
||||
|
||||
use strict;
|
||||
|
||||
# Variables needed by other modules
|
||||
# ToLayout is a ref to a hash which contains LyX layouts & LaTeX equivalents
|
||||
# regular_env is a list of environments that have "reLyXable" LaTeX in them
|
||||
# math_trans is a hash of math commands and what they're translated to
|
||||
use vars qw($ToLayout @regular_env %math_trans);
|
||||
|
||||
# CommandHash is the hash of LaTeX commands and their syntaxes which
|
||||
# this package builds.
|
||||
my %CommandHash;
|
||||
|
||||
# Name of the environment containing names of regular environments :)
|
||||
my $regenv_name = "reLyXre";
|
||||
# Name of environment containing translations of math commands
|
||||
my $math_trans_name = "reLyXmt";
|
||||
# Variables set when in the above environments
|
||||
my ($in_regular_env, $in_math_trans);
|
||||
my @Environments = qw($regenv_name $math_trans_name);
|
||||
|
||||
# This word in a command's argument (in the syntax file) means that reLyX
|
||||
# should translate that argument as regular LaTeX
|
||||
my $Translate_Word = "translate";
|
||||
|
||||
######################### READ COMMAND SYNTAX ################################
|
||||
sub read_syntax_files {
|
||||
# This subroutine calls the TeX parser & translator to read LaTeX syntax file(s)
|
||||
# It sets the list of "regular" environments, environments which aren't known
|
||||
# by reLyX, but which contain text that reLyX can translate.
|
||||
# It also reads math commands which should be translated (e.g., \sp -> ^)
|
||||
#
|
||||
# @_ contains the syntax file(s) to read
|
||||
|
||||
my @syntaxfiles = @_;
|
||||
|
||||
# Before anything else, set the package-wide variables based on the
|
||||
# user-given flags
|
||||
# opt_d is set to 1 if '-d' option given, else (probably) undefined
|
||||
my $debug_on = (defined($main::opt_d) && $main::opt_d);
|
||||
|
||||
# opt_r is a group of environments to copy like regular text
|
||||
# If opt_r wasn't given, then there are no such special environments
|
||||
@regular_env = (defined $main::opt_r ? (split(/,/, $main::opt_r)) : () );
|
||||
|
||||
# The only important commands to pass are \begin and \end, so that the
|
||||
# parser realizes they start/end environments, as opposed to being
|
||||
# regular old tokens.
|
||||
my %MyTokens = ( '{' => $Text::TeX::Tokens{'{'},
|
||||
'}' => $Text::TeX::Tokens{'}'},
|
||||
'\begin' => $Text::TeX::Tokens{'\begin'},
|
||||
'\end' => $Text::TeX::Tokens{'\end'},
|
||||
);
|
||||
|
||||
my $InFileName;
|
||||
foreach $InFileName (@syntaxfiles) {
|
||||
die "could not find syntax file $InFileName" unless -e $InFileName;
|
||||
my $zzz=$debug_on ? "from $InFileName " :"";
|
||||
warn "Reading LaTeX command syntax $zzz\n";
|
||||
|
||||
# Open the file to turn into LyX.
|
||||
my $infile = new Text::TeX::OpenFile $InFileName,
|
||||
'defaultact' => \&read_commands,
|
||||
'tokens' => \%MyTokens;
|
||||
|
||||
# When we start (each file), we're not reading regular environments yet
|
||||
$in_regular_env = 0;
|
||||
|
||||
# Process the file
|
||||
$infile->process;
|
||||
}
|
||||
|
||||
if ($debug_on) {
|
||||
print "Regular environments: @regular_env\n";
|
||||
my @mathkeys = keys(%math_trans);
|
||||
print " Math command | translation\n" if @mathkeys;
|
||||
foreach (@mathkeys) { printf("%20s %s\n",$_,$math_trans{$_}) }
|
||||
}
|
||||
|
||||
#warn "Done reading commands\n";
|
||||
return;
|
||||
} # end subroutine call_parser
|
||||
|
||||
sub read_commands {
|
||||
# This subroutine is called by Text::TeX::process
|
||||
# Arg0 is the token we just ate
|
||||
# Arg1 is the file object we're reading from
|
||||
#
|
||||
# We create a hash, where each command is a key. The value is just a string
|
||||
# of zero or more 'o' and 'r' characters. Each 'o' stands for an optional
|
||||
# argument, 'r' stands for a required argument. 'R' stands for a required
|
||||
# argument whose text will be regular LaTeX, e.g., the argument to \mbox{}
|
||||
# In addition, the $regenv_name environment contains
|
||||
# regular environments, like those input with the -r option.
|
||||
# Note that if a command is found more than once, then it wil be overwritten.
|
||||
# This is a feature. This way, a user-defined syntax file can overwrite the
|
||||
# argument list found in the default syntax file.
|
||||
my ($token,$fileobject) = (shift,shift);
|
||||
|
||||
my $type = ref($token);
|
||||
$type =~ s/^Text::TeX::// or die "unknown token type $type from Text::TeX";
|
||||
#print $token->exact_print, unless $type eq "Paragraph";
|
||||
#print $token->comment if $token->comment;
|
||||
|
||||
# Because there's no token list, ALL tokens will be
|
||||
# Paragraph, Text, or Token
|
||||
SWITCH: for ($type) {
|
||||
# Handle blank lines.
|
||||
if (/Paragraph/) {
|
||||
# don't do anything
|
||||
last SWITCH;
|
||||
|
||||
} elsif (/^Token/) {
|
||||
# Comment in its own paragraph... skip
|
||||
last SWITCH unless defined($token->print);
|
||||
|
||||
if ($in_math_trans) { # read translations of math commands
|
||||
my $key = $token->print;
|
||||
# Translation is whatever's in the argument to the token
|
||||
# (There might be multiple tokens in there)
|
||||
my @vals = $fileobject->eatBalanced->contents;
|
||||
my $val = join ("", map {$_->exact_print} @vals);
|
||||
$math_trans{$key} = $val;
|
||||
|
||||
} else { # regular portion of syntax file
|
||||
my ($dum2);
|
||||
my $args = "";
|
||||
# read while there are arguments
|
||||
while (($dum2 = $fileobject->lookAheadToken) &&
|
||||
($dum2 =~ /^[[{]$/)) {
|
||||
if ($dum2 eq '[') { #eat optional argument - assumed simple
|
||||
$fileobject->eatOptionalArgument;
|
||||
$args .= "o";
|
||||
} else {
|
||||
my $tok = $fileobject->eatBalanced or warn "bad group";
|
||||
if ($tok->exact_print eq $Translate_Word) {
|
||||
$args .= "R";
|
||||
} else {
|
||||
$args .= "r";
|
||||
}
|
||||
} # end if $dummy = [{
|
||||
} # done reading command
|
||||
$CommandHash{$token->print} = $args;
|
||||
} # in math trans env or regular token?
|
||||
|
||||
last SWITCH;
|
||||
|
||||
} elsif (/^Begin::Group::Args/) {
|
||||
my $env = $token->environment;
|
||||
CASE: {
|
||||
$in_regular_env = 1, last CASE if $env eq $regenv_name;
|
||||
$in_math_trans = 1, last CASE if $env eq $math_trans_name;
|
||||
warn "Unknown environment $env in syntax file";
|
||||
}
|
||||
|
||||
} elsif (/^End::Group::Args/) {
|
||||
my $env = $token->environment;
|
||||
CASE: {
|
||||
$in_regular_env = 0, last CASE if $env eq $regenv_name;
|
||||
$in_math_trans = 0, last CASE if $env eq $math_trans_name;
|
||||
warn "Unknown environment $env in syntax file";
|
||||
}
|
||||
|
||||
} elsif (/^Text/) {
|
||||
# don't do anything unless we're reading environments
|
||||
if ($in_regular_env) {
|
||||
my @new_envs = (split(/\s+/, $token->print));
|
||||
@new_envs = grep ($_, @new_envs); # remove empty elements
|
||||
push @regular_env,@new_envs;
|
||||
}
|
||||
last SWITCH;
|
||||
} else {
|
||||
die "unexpected token type $type";
|
||||
}
|
||||
|
||||
} # end SWITCH
|
||||
|
||||
} # end sub read_commands
|
||||
|
||||
sub Merge {
|
||||
# This sub creates a token list (which could be used to call a Text::TeX
|
||||
# parser) from %CommandHash, and merges it with the input token list
|
||||
# If a command takes any required arguments, it will be a report_args,
|
||||
# but if it just takes an optional argument, it can stay a regular old token.
|
||||
# In either case, we insert a new field, "relyx_args", into the token list,
|
||||
# which is the expected order of arguments for that command. Even if there
|
||||
# are no args, we insert an empty relyx_args, so that we can differentiate
|
||||
# between a truly unknown token and a known token which takes no args.
|
||||
#
|
||||
# We don't allow a new command to override a command that already exists in
|
||||
# OldHash, i.e., one that was defined explicitly in the calling sub.
|
||||
#
|
||||
# Arg0 is a (reference to an) existing token list
|
||||
my $OldHashRef = shift;
|
||||
|
||||
foreach (keys %CommandHash) {
|
||||
my $val = $CommandHash{$_};
|
||||
my ($entry, $count, @foo);
|
||||
if (!exists $OldHashRef->{$_}) {
|
||||
if ($count = scalar(@foo = ($val =~ /r/gi))) {
|
||||
# TeX.pm will make this a TT::BegArgsToken and $count-1
|
||||
# TT::ArgTokens, followed by a TT::EndArgsToken
|
||||
$OldHashRef->{$_} = {"Type" => 'report_args',
|
||||
"count" => $count,
|
||||
"relyx_args" => $val};
|
||||
} else { # only non-required args
|
||||
# Make it a regular TT::Token, but write relyx_args
|
||||
# (even if $val is "")
|
||||
$OldHashRef->{$_} = {"relyx_args" => $val};
|
||||
}
|
||||
}
|
||||
} # end foreach
|
||||
|
||||
} # end sub Merge
|
||||
|
||||
############################ READ LAYOUTS ####################################
|
||||
sub read_layout_files {
|
||||
# This subroutine reads a textclass-specific layout file and all files
|
||||
# included in that file.
|
||||
# It sets up the layout hash table. For each environment, it describes which
|
||||
# layout that environment refers to. It does the same for macros which
|
||||
# begin LyX layouts (e.g., \section)
|
||||
# If we read a command that's not already in CommandHash, it means that this
|
||||
# layout has some commands that aren't in syntax.default. If so, we ASSUME
|
||||
# that the command takes just one required argument, and put it in
|
||||
# CommandHash, so that &Merge will eventually put these commands into the
|
||||
# token lists.
|
||||
#
|
||||
# TODO: we actually need to allow more sophisticated stuff. E.g. \foilhead
|
||||
# is converted to Foilhead or ShortFoilHead (foils.layout) depending on whether
|
||||
# the command has "r" or "or" arguments. Reading LatexParam (if it exists)
|
||||
# can help us with this.
|
||||
# Default is "r". Just unshift other args as you read them, since latexparam
|
||||
# is put in between macro & the argument
|
||||
# TODO: We need to store ToLayout s.t. we can have > 1 layout per command.
|
||||
# Maybe by default just have one layout, but if (ref(layout)) then read
|
||||
# more args & thereby figure out which layout?
|
||||
#
|
||||
# Arg0 is the name of the documentclass
|
||||
use FileHandle;
|
||||
use File::Basename;
|
||||
my $doc_class = shift;
|
||||
my @filestack;
|
||||
my $fh;
|
||||
my $line;
|
||||
# ToLayout{latexname} stores layout; so ReversHash{layout} = latexname
|
||||
my %ReverseHash;
|
||||
my $debug_on = (defined($main::opt_d) && $main::opt_d);
|
||||
|
||||
# look for layout file in $HOME/.lyx first, then system layouts directory
|
||||
my $searchname = "$doc_class.layout";
|
||||
my @searchdirs = ();
|
||||
my $personal_layout = "$main::dot_lyxdir/layouts";
|
||||
push(@searchdirs,$personal_layout) if -e $personal_layout;
|
||||
my $system_layout = "$main::lyxdir/layouts";
|
||||
# I guess this won't exist if running reLyX without installing...
|
||||
# Of course, in that case, this will probably break
|
||||
push(@searchdirs,$system_layout) if -e $system_layout;
|
||||
my @foundfiles = grep(-e "$_/$searchname", @searchdirs) or
|
||||
die "Cannot find layout file $searchname in dir(s) @searchdirs";
|
||||
my $LayoutFileName = "$foundfiles[0]/$searchname"; # take first one we found
|
||||
|
||||
$fh = new FileHandle;
|
||||
$fh->open ("<$LayoutFileName");
|
||||
my $zzz=$debug_on ? "$LayoutFileName" :"";
|
||||
warn "Reading layout file $zzz\n";
|
||||
push @filestack, $fh;
|
||||
|
||||
# Read the layout file!
|
||||
my ($lyxname, $latexname, $latextype, $latexparam, $keepempty);
|
||||
my $fname;
|
||||
while() {
|
||||
# Read a line. If eof, pop the filestack to return to the file
|
||||
# that included this file *or* finish if the stack's empty
|
||||
unless (defined ($line = <$fh>)) {
|
||||
$fh->close;
|
||||
pop @filestack;
|
||||
last unless ($#filestack+1); # finish when stack is empty
|
||||
$fh = $filestack[-1];
|
||||
next; # read another line from the "calling" file
|
||||
}
|
||||
|
||||
# Skip blank lines
|
||||
next if $line =~ /^\s*$/;
|
||||
|
||||
# Split the line. Use limit 2 since there may be whitespace in 2nd term
|
||||
my ($field_name, $field_stuff) = split(' ', $line, 2);
|
||||
$field_name = lc($field_name); # LyX is case insensitive for fields
|
||||
if (defined($field_stuff)) {
|
||||
$field_stuff =~ s/^\"(.*)\"/$1/;
|
||||
chomp ($field_stuff);
|
||||
# Since split is limited to 2 fields, there may be extra whitespace
|
||||
# at end. LyX breaks on a "\layout Abstract " command!
|
||||
$field_stuff =~ s/\s*$//;
|
||||
}
|
||||
|
||||
# This set of ifs deals with lines outside a style definition
|
||||
if ($field_name eq "style") { # start a style definition
|
||||
$lyxname = $field_stuff;
|
||||
# Styles in LyX have spaces, but _ in layout files
|
||||
$lyxname =~ s/_/ /g;
|
||||
$latexname = ""; # make sure these variables are unset
|
||||
$latextype = "";
|
||||
$latexparam = "";
|
||||
$keepempty = 0;
|
||||
} elsif ($field_name eq "input") { #include a file
|
||||
$searchname = $field_stuff;
|
||||
@foundfiles = grep(-e "$_/$searchname", @searchdirs) or
|
||||
die "Cannot find layout file $searchname in dir(s) @searchdirs";
|
||||
$fname = "$foundfiles[0]/$searchname"; # take first one we found
|
||||
$fh = new FileHandle;
|
||||
push @filestack, $fh;
|
||||
$fh->open("<$fname");
|
||||
print "Reading included layout file $fname\n" if $debug_on;
|
||||
}
|
||||
|
||||
next unless $lyxname; # not w/in style definition
|
||||
|
||||
# This set of ifs deals with lines within a Style definition
|
||||
if ($field_name eq "latexname") {
|
||||
$latexname = $field_stuff;
|
||||
next;
|
||||
} elsif ($field_name eq "latexparam") {
|
||||
#$dum = $field_stuff;
|
||||
$latexparam = $field_stuff;
|
||||
next;
|
||||
} elsif ($field_name eq "latextype") {
|
||||
$latextype = $field_stuff;
|
||||
next;
|
||||
} elsif ($field_name eq "keepempty") {
|
||||
$keepempty = $field_stuff;
|
||||
next;
|
||||
} elsif ($field_name eq "copystyle") { # copy an existing style
|
||||
# "if" is necessary in case someone tries "CopyStyle Standard"
|
||||
if (exists $ReverseHash{$field_stuff}) {
|
||||
my $layref = $ReverseHash{$field_stuff};
|
||||
$latexname = $layref->{"name"};
|
||||
$latextype = $layref->{"type"};
|
||||
$latexparam = $layref->{"param"};
|
||||
$keepempty = $layref->{"keepempty"};
|
||||
}
|
||||
|
||||
# When you get to the end of a definition, create hash table entries
|
||||
# (if you've found the right information)
|
||||
} elsif ($field_name eq "end") {
|
||||
|
||||
if ($latextype and $latexname) {
|
||||
# Create reverse hash entry (needed for CopyStyle)
|
||||
# Do it before making modifications to $latexname, e.g.
|
||||
$ReverseHash{$lyxname} = {"name" => $latexname,
|
||||
"type" => $latextype,
|
||||
"param" => $latexparam,
|
||||
"keepempty" => $keepempty,
|
||||
};
|
||||
|
||||
my ($nest, $skip) = (0,0);
|
||||
for ($latextype) { # make $_=$latextype
|
||||
if (/^Command/) {
|
||||
# Macros need a '\' before them. Environments don't
|
||||
$latexname = '\\' . $latexname;
|
||||
|
||||
# Create the command if it wasn't in syntax.default
|
||||
unless (exists $CommandHash{$latexname}) {
|
||||
$CommandHash{$latexname} = "r";
|
||||
}
|
||||
|
||||
} elsif (/^Environment/) {
|
||||
$nest = 1;
|
||||
} elsif (/Item_Environment/i || /List_Environment/) {
|
||||
$nest = 1;
|
||||
|
||||
# layout Standard has LatexType Paragraph. It shouldn't
|
||||
# have any hash entry at all
|
||||
} elsif (/^Paragraph$/) {
|
||||
$skip = 1;
|
||||
} else {
|
||||
warn "unknown LatexType $latextype" .
|
||||
"for $latexname (layout $lyxname)!\n";
|
||||
}
|
||||
# Handle latexparam, if any
|
||||
# if ($dum =~ s/^"(.*)"/$1/) { # newer layout file syntax
|
||||
# while ($dum =~ /^[[{]/) {
|
||||
# $dum =~ s/\[.*?\]// && ($latexargs = "o$latexargs") or
|
||||
# $dum =~ s/\{.*?\}// && ($latexargs = "r$latexargs");
|
||||
# }
|
||||
# warn "leftover LatexParam stuff $dum" if $dum;
|
||||
# } else { # 0.12.0
|
||||
# if ($latextype eq "Command") {optarg}
|
||||
# else {req. arg}
|
||||
# }
|
||||
} #end for
|
||||
|
||||
# Create the hash entry
|
||||
unless ($skip) {
|
||||
$ToLayout->{$latexname} = {"layout" => $lyxname,
|
||||
"nestable" => $nest,
|
||||
"keepempty" => $keepempty};
|
||||
}
|
||||
|
||||
# Now that we've finished the style, unset $lyxname so that
|
||||
# we'll skip lines until the next style definition
|
||||
$lyxname = "";
|
||||
} # end if ($latextype and $latexname)
|
||||
} # end if on $line
|
||||
|
||||
} #end while
|
||||
|
||||
## Print every known layout
|
||||
# print " LatexName Layout Keepempty?\n";
|
||||
# foreach (sort keys %$ToLayout) {
|
||||
# printf "%20s%15s %1d\n",$_,$ToLayout->{$_}{'layout'},
|
||||
# $ToLayout->{$_}{'keepempty'};
|
||||
# };
|
||||
#warn "Done reading layout files\n";
|
||||
return;
|
||||
} # end sub read_layout_files
|
||||
|
||||
|
||||
|
||||
1; # return TRUE to calling routine
|
@ -1,291 +0,0 @@
|
||||
# This file is part of reLyX
|
||||
# Copyright (c) 1998-9 Amir Karger karger@post.harvard.edu
|
||||
# You are free to use and modify this code under the terms of
|
||||
# the GNU General Public Licence version 2 or later.
|
||||
|
||||
package RelyxFigure;
|
||||
|
||||
# This is a package to read LaTeX figures and print out LyX figures
|
||||
|
||||
|
||||
# We declare here the sub-packages found in this package.
|
||||
# This allows the parser to understand "indirect object" form of subroutines
|
||||
#{
|
||||
#package RelyxTable::Table;
|
||||
#package RelyxTable::Column;
|
||||
#package RelyxTable::Row;
|
||||
#}
|
||||
|
||||
use strict;
|
||||
|
||||
# Variables used by other packages
|
||||
use vars qw($EpsfYsize $EpsfXsize %HW_types);
|
||||
|
||||
# Debugging on?
|
||||
my $debug_on;
|
||||
|
||||
# This means "display in monochrome" and "do translations", but who cares?
|
||||
# It's just here because this is the default that LyX outputs.
|
||||
my $Default_Flags = 9;
|
||||
|
||||
# Names for width_type & height_type fields.
|
||||
%HW_types = (
|
||||
"def" => 0,
|
||||
"cm" => 1,
|
||||
"in" => 2,
|
||||
"per_page" => 3, # percent of the page
|
||||
"per_col" => 4, # percent of a column (illegal for height_type)
|
||||
);
|
||||
|
||||
# Parse \epsfxsize or \epsfysize command
|
||||
# Return 0 if we can't convert the length (in which case we have to type
|
||||
# the \epsf[xy]size command in tex mode).
|
||||
sub parse_epsfsize {
|
||||
# Command & length have already been "stringified" (they're not tokens)
|
||||
my ($command, $length) = (shift,shift);
|
||||
if ($command eq '\\epsfxsize') {
|
||||
$EpsfXsize = $length;
|
||||
my @dummy = &convert_length($EpsfXsize) || return 0;
|
||||
} elsif ($command eq '\\epsfysize') {
|
||||
$EpsfYsize = $length;
|
||||
my @dummy = &convert_length($EpsfYsize) || return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
} # end sub RelyxFIgure::Figure::parse_epsfig
|
||||
|
||||
sub convert_length {
|
||||
# test if it's a valid LyX width/height.
|
||||
# (But assume a person won't try to set width to \textheight,
|
||||
# and that they won't have negative or otherwise weird lengths)
|
||||
# Then convert to width & width_type (or height/height_type)
|
||||
# Return empty list on error
|
||||
my $size = shift;
|
||||
|
||||
# A length can be (optional plus followed by) (num)(unit) where
|
||||
# num is a float number (possibly with European command) and unit
|
||||
# is a size unit, either in,cm,pt etc. or \textwidth etc.
|
||||
my %unit_convert = ( # 1 inch = 25.4 mm
|
||||
"mm" => 25.4, "pt" => 72.27, "bp" => 72, "pc" => 72.27/12,
|
||||
"dd" => 72.27*1157/1238, "cc" => 72.27*1157/(1238*12),
|
||||
);
|
||||
my ($number, $type);
|
||||
if ($size =~ /^\+?([\d.,]+)(cm|in)$/) {
|
||||
($number, $type) = ($1, $2);
|
||||
$number =~ s/,/./; # Allow european numbers!
|
||||
# print "length is $number '$type'";
|
||||
} elsif ($size =~ /^\+?([\d.,]+)(mm|pt|bp|pc|dd|cc)$/) {
|
||||
($number, $type) = ($1, $2);
|
||||
$number =~ s/,/./;
|
||||
$number = $number / $unit_convert{$type};
|
||||
$type = "in";
|
||||
} elsif ($size =~ /^\+?([\d.,]*)\s*\\text(height|width)$/) {
|
||||
$number = $1 || 1;
|
||||
$number =~ s/,/./;
|
||||
$number *= 100;
|
||||
$type = "per_page";
|
||||
} elsif ($size =~ /^\+?([\d.,]*)\s*\\columnwidth$/) {
|
||||
$number = $1 || 1;
|
||||
$number =~ s/,/./;
|
||||
$number *= 100;
|
||||
$type = "per_col";
|
||||
} else {
|
||||
print "\ncannot translate length '$size' in Figure; ",
|
||||
"copying in TeX mode\n" if $debug_on;
|
||||
}
|
||||
|
||||
if ($number) {
|
||||
return ($number, $type);
|
||||
} else {
|
||||
return ();
|
||||
}
|
||||
} # end sub convert_length
|
||||
|
||||
sub parse_keyval {
|
||||
# Parse a string containing comma-separated "key=value" pairs
|
||||
# Compare the keys with a list of known keys.
|
||||
# If we know all keys, return a hash containing keys/values
|
||||
# Else return undef.
|
||||
my ($string, @known_keys) = @_;
|
||||
my @fields = split(/\s*,\s*/,$string);
|
||||
my %fighash;
|
||||
foreach (@fields) { # split "key=val" into fighash{key}=val
|
||||
my ($key,$val) = split(/\s*=\s*/,$_);
|
||||
$val = "" unless defined $val; # e.g., 'clip='
|
||||
$fighash{$key} = $val;
|
||||
|
||||
unless (grep /^$key$/, @known_keys) {
|
||||
print "\nUntranslatable key '$key' to figure;",
|
||||
" copying in TeX mode\n" if $debug_on;
|
||||
return undef;
|
||||
}
|
||||
}
|
||||
|
||||
return \%fighash;
|
||||
} # end sub parse_keyval
|
||||
|
||||
|
||||
|
||||
{
|
||||
package RelyxFigure::Figure;
|
||||
# reLyX figure class
|
||||
# Fields:
|
||||
# file - file name
|
||||
# width - width
|
||||
# height - height
|
||||
# width_type - is width in cm, % of pagewidth, etc.?
|
||||
# height_type - is height in cm, % of pagewidth, etc.?
|
||||
# angle - rotate fig through angle
|
||||
# flags - various flags for LyX display. Not important
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my $thisfig;
|
||||
$thisfig->{'file'} = "";
|
||||
$thisfig->{'width'} = 0;
|
||||
$thisfig->{'height'} = 0;
|
||||
$thisfig->{'width_type'} = "def";
|
||||
$thisfig->{'height_type'} = "def";
|
||||
$thisfig->{'angle'} = 0;
|
||||
$thisfig->{'flags'} = $Default_Flags;
|
||||
# This seems like a convenient place to declare this...
|
||||
$debug_on= (defined($main::opt_d) && $main::opt_d);
|
||||
|
||||
bless $thisfig, $class;
|
||||
} # end sub RelyxFigure::Figure::new
|
||||
|
||||
|
||||
sub parse_pscommand {
|
||||
# this sub is given the various arguments to a command & adds that
|
||||
# information to the figure object.
|
||||
# Return 0 if it can't read the command, or if LyX can't handle it. Else 1.
|
||||
#
|
||||
# command is the name of the postscript command
|
||||
# optargs are optional arguments (TT:Tokens). For many of the commands,
|
||||
# only one optarg is allowed. And of course, they may be empty tokens.
|
||||
# reqarg is usually the filename (for (e)psfig, it's more)
|
||||
#
|
||||
# Currently, LyX can't handle bounding box, so we always return 0 if one
|
||||
# is given.
|
||||
my ($self, $command, $optarg1, $optarg2, $reqarg) = @_;
|
||||
my (@known_keys, $filename, $keyval_string, %fighash);
|
||||
|
||||
for ($command) {
|
||||
if (/^\\epsf(file|box)?$/) {
|
||||
# syntax: \epsffile[bounding box]{filename.eps}
|
||||
# epsffile is an older version of epsfbox
|
||||
return 0 if $optarg1->print; # bounding box was given. Panic!
|
||||
$filename = &recursive_print($reqarg);
|
||||
# fighash key shouldn't exist if no size was given
|
||||
$fighash{'height'} = $RelyxFigure::EpsfYsize
|
||||
if $RelyxFigure::EpsfYsize;
|
||||
$fighash{'width'} = $RelyxFigure::EpsfXsize
|
||||
if $RelyxFigure::EpsfXsize;
|
||||
# Once you use \epsf[xy]size, they get reset
|
||||
$RelyxFigure::EpsfXsize = $RelyxFigure::EpsfYsize = "";
|
||||
$keyval_string = ""; # no key/value pairs for this command
|
||||
|
||||
} elsif (/^\\e?psfig$/) {
|
||||
# "silent" key doesn't do anything
|
||||
@known_keys = qw(file figure rotate angle height width silent);
|
||||
$keyval_string = &recursive_print($reqarg);
|
||||
my $fighashref =
|
||||
&RelyxFigure::parse_keyval($keyval_string, @known_keys);
|
||||
return 0 unless defined $fighashref; # found unknown key...
|
||||
%fighash = %$fighashref;
|
||||
|
||||
$filename = $fighash{'file'} || $fighash{'figure'} || warn
|
||||
"no filename found in figure argument '$keyval_string'";
|
||||
|
||||
} elsif (/^\\includegraphics$/) {
|
||||
# 0 optargs can be either graphics or graphicx. Doesn't
|
||||
# matter, matter, it's just the filename.
|
||||
# 1 optarg can either be graphicx (if arg contains '=') or
|
||||
# graphics (optarg is upper right; lower left is 0,0).
|
||||
# 2 optargs is graphics with bounding box.
|
||||
|
||||
# Optional arguments are always returned as single tokens,
|
||||
# not groups. So we can use the print method instead of
|
||||
# recursive_print.
|
||||
$keyval_string = $optarg1->print;
|
||||
if ($keyval_string) {
|
||||
if ($keyval_string =~ /=/) { # graphicx form
|
||||
$keyval_string =~ s/\[(.*)\]/$1/; # remove '[' and ']'
|
||||
@known_keys = qw(rotate angle height width);
|
||||
my $fighashref = &RelyxFigure::parse_keyval(
|
||||
$keyval_string, @known_keys);
|
||||
return 0 unless defined $fighashref; # found unknown key
|
||||
%fighash = %$fighashref;
|
||||
|
||||
} else { # graphics form with bounding box
|
||||
print "\nLyX cannot support bounding box; ",
|
||||
"copying Figure in TeX mode\n" if $debug_on;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
$filename = &recursive_print($reqarg);
|
||||
|
||||
}
|
||||
} # end switch on command name
|
||||
|
||||
# Now set fields in the Figure object
|
||||
$self->{'file'} = $filename;
|
||||
$self->{'angle'} = $fighash{'rotate'} if exists $fighash{'rotate'};
|
||||
$self->{'angle'} = $fighash{'angle'} if exists $fighash{'angle'};
|
||||
if (exists $fighash{'height'}) {
|
||||
my @heights = &RelyxFigure::convert_length($fighash{'height'});
|
||||
return 0 unless @heights; # unconvertable length!
|
||||
($self->{'height'},$self->{'height_type'}) = @heights;
|
||||
}
|
||||
if (exists $fighash{'width'}) {
|
||||
my @widths = &RelyxFigure::convert_length($fighash{'width'});
|
||||
return 0 unless @widths; # unconvertable length!
|
||||
($self->{'width'},$self->{'width_type'}) = @widths;
|
||||
}
|
||||
|
||||
return 1; # if we got here, we parsed correctly and LyX can handle it.
|
||||
} # end sub RelyxFigure::Figure::parse_pscommand
|
||||
|
||||
sub recursive_print {
|
||||
# if arg is a group, print its contents (i.e., ignore '{' and '}')
|
||||
# otherwise, print arg
|
||||
my $tok = shift;
|
||||
my $filename = "";
|
||||
my $type = ref($tok);
|
||||
$type =~ s/Text::TeX::// or warn "weird group";
|
||||
if ($type eq 'Group') {
|
||||
foreach ($tok->contents) {$filename .= &recursive_print($_)}
|
||||
} else {
|
||||
$filename .= $tok->exact_print
|
||||
}
|
||||
return $filename;
|
||||
}
|
||||
|
||||
sub print_info {
|
||||
# LyX figure command -- return what to print; don't actually print it
|
||||
my $self = shift;
|
||||
|
||||
my $to_print = "\n\\begin_inset Figure\n";
|
||||
# (LyX fig. command has eps size here. But we don't know that, so
|
||||
# we dont print it out.)
|
||||
|
||||
$to_print .= "file $self->{'file'}\n";
|
||||
my ($size, $type) = ("","");
|
||||
($size, $type) = ($self->{'width'},
|
||||
$RelyxFigure::HW_types{$self->{'width_type'}});
|
||||
$to_print .= "width $type $size\n" if $size;
|
||||
($size, $type) = ("","");
|
||||
($size, $type) = ($self->{'height'},
|
||||
$RelyxFigure::HW_types{$self->{'height_type'}});
|
||||
$to_print .= "height $type $size\n" if $size;
|
||||
$to_print .= "angle $self->{'angle'}\n" if $self->{'angle'};
|
||||
$to_print .= "flags $self->{'flags'}\n";
|
||||
|
||||
$to_print .= "\n\\end_inset \n\n";
|
||||
|
||||
} # end sub RelyxFigure::Figure::print
|
||||
|
||||
} # end of package RelyxFigure::Figure
|
||||
|
||||
1; # return true to calling package
|
@ -1,603 +0,0 @@
|
||||
# This file is part of reLyX
|
||||
# Copyright (c) 1998-9 Amir Karger karger@post.harvard.edu
|
||||
# You are free to use and modify this code under the terms of
|
||||
# the GNU General Public Licence version 2 or later.
|
||||
|
||||
package RelyxTable;
|
||||
|
||||
# This is a package to read LaTeX tables and print out LyX tables
|
||||
|
||||
|
||||
# We declare here the sub-packages found in this package.
|
||||
# This allows the parser to understand "indirect object" form of subroutines
|
||||
{
|
||||
package RelyxTable::Table;
|
||||
package RelyxTable::Column;
|
||||
package RelyxTable::Row;
|
||||
}
|
||||
|
||||
use strict;
|
||||
|
||||
# Variables used by other packages
|
||||
use vars qw(@table_array $TableBeginString $TableEndString);
|
||||
# @table_array is the list of all arrays
|
||||
# $TableBeginString is a string to write during one pass so that a later
|
||||
# pass knows to put the table info there
|
||||
# $TableEndString is written at the end of the table so that we know
|
||||
# the table is done
|
||||
$TableBeginString = '%%%%%Insert reLyX table here!';
|
||||
$TableEndString = '%%%%%End of reLyX table!';
|
||||
|
||||
# Debugging on?
|
||||
my $debug_on;
|
||||
|
||||
# Are we currently inside a table?
|
||||
# If we are, return the table
|
||||
sub in_table {
|
||||
return "" unless defined(@table_array); # no tables exist
|
||||
my $thistable = $table_array[-1];
|
||||
if ($thistable->{"active"}) {
|
||||
return (bless $thistable, "RelyxTable::Table");
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Global variables###############
|
||||
# LyX' enums corresponding to table alignments
|
||||
my %TableAlignments = ("l" => 2, "r" => 4, "c" => 8);
|
||||
# LyX' enums corresponding to multicol types
|
||||
# normal (non-multicol) cell, beginning of a multicol, part of a multicol
|
||||
my %MulticolumnTypes = ("normal" => 0, "begin" => 1, "part" => 2);
|
||||
|
||||
# Subroutines used by tables and rows, e.g.
|
||||
sub parse_cols {
|
||||
# parse a table's columns' description
|
||||
# Returns an array where each element is one column description
|
||||
# arg0 is the description -- a Text::TeX::Group
|
||||
my $groupref = shift;
|
||||
my (@cols, @new_cols);
|
||||
my ($tok, $description, $i);
|
||||
|
||||
# tokens in the group, not including '{' and '}'
|
||||
my @group = $groupref->contents;
|
||||
|
||||
# Loop over the token(s) in the group
|
||||
my $first = ""; my $tempfirst;
|
||||
while (@group) {
|
||||
|
||||
$tok = shift(@group);
|
||||
# Each $tok will consist of /^[clr|]*[mp*@]?$/
|
||||
# (Except first may have | and/or @ expressions before it)
|
||||
# p*@ will end the $tok since after it comes a group in braces
|
||||
# @ will be a TT::Token, everything else will be in TT::Text
|
||||
$description = $tok->print;
|
||||
|
||||
# Chop off left lines for first column if any
|
||||
($tempfirst = $description) =~ s/(\|*).*/$1/;
|
||||
if ($#cols == -1) { # |'s before any column description
|
||||
$first .= $tempfirst;
|
||||
} else {
|
||||
$cols[-1] .= $tempfirst; # add it to end of current col
|
||||
}
|
||||
|
||||
# Greedy searches, so only 0th column can possibly have left line
|
||||
@new_cols = ($description =~ /[clr]\|*/g);
|
||||
push @cols, @new_cols;
|
||||
|
||||
# parse a 'p', an 'm', a '*' or a '@' as necessary
|
||||
# use exact_print in case there's weird stuff in the @ descriptions
|
||||
$description = substr($description,-1);
|
||||
# The m and p descriptors have identical form.
|
||||
if ($description eq 'p' || $description eq 'm') {
|
||||
$tok = shift(@group);
|
||||
my $des = $description . $tok->exact_print; # 'p{foo}' or 'm{foo}'
|
||||
push @cols, $des;
|
||||
|
||||
} elsif ($description eq '@') {
|
||||
$tok = shift(@group);
|
||||
my $atdes = $description . $tok->exact_print;
|
||||
if ($#cols == -1) { # it's an @ before any column description
|
||||
$first .= $atdes;
|
||||
} else {
|
||||
$cols[-1] .= $atdes; # add it to end of current col
|
||||
}
|
||||
|
||||
} elsif ($description eq '*') {
|
||||
|
||||
$tok = shift(@group); # TT::Group with number of repeats in it
|
||||
my $rep = $tok->contents->print;
|
||||
$tok = shift(@group); # Group to repeat $rep times
|
||||
@new_cols = &parse_cols($tok);
|
||||
foreach $i (1 .. $rep) {
|
||||
push @cols, @new_cols;
|
||||
}
|
||||
}
|
||||
} # end loop over description tokens
|
||||
|
||||
# this handles description like {|*{3}{c}}
|
||||
$cols[0] = $first . $cols[0];
|
||||
|
||||
return @cols;
|
||||
} # end sub parse_cols
|
||||
|
||||
################################################################################
|
||||
# This package handles tables for reLyX
|
||||
|
||||
{
|
||||
package RelyxTable::Table;
|
||||
# Table class
|
||||
# Fields:
|
||||
# columns - array containing references to RelyxTable::Columns
|
||||
# rows - array containing references to RelyxTable::Rows
|
||||
# active - are we currently reading this table?
|
||||
# Fields for printout
|
||||
# is_long_table
|
||||
# rotate
|
||||
# endhead
|
||||
# end_first_head
|
||||
# endfoot
|
||||
# end_last_foot
|
||||
|
||||
|
||||
# Subroutines to read and create the table
|
||||
sub new {
|
||||
# 'new' takes an argument containing the LaTeX table description string,
|
||||
# which is a Text::TeX::Group token
|
||||
|
||||
my $class = shift; # should be "table"
|
||||
my $description = shift;
|
||||
my $thistable;
|
||||
# This seems like a convenient place to declare this...
|
||||
$debug_on= (defined($main::opt_d) && $main::opt_d);
|
||||
|
||||
# Initialize fields - including ones we don't support yet
|
||||
$thistable->{"is_long_table"} = 0;
|
||||
$thistable->{"rotate"} = 0;
|
||||
$thistable->{"endhead"} = 0;
|
||||
$thistable->{"end_first_head"} = 0;
|
||||
$thistable->{"endfoot"} = 0;
|
||||
$thistable->{"end_last_foot"} = 0;
|
||||
$thistable->{"active"} = 1;
|
||||
|
||||
bless $thistable, $class;
|
||||
|
||||
# Parse the column descriptions: return an array, where each
|
||||
# element is a (regular text) single column description
|
||||
my @cols = &RelyxTable::parse_cols($description);
|
||||
my $colref;
|
||||
my $col_description;
|
||||
foreach $col_description (@cols) {
|
||||
$colref = new RelyxTable::Column $col_description;
|
||||
push @{$thistable->{"columns"}}, $colref;
|
||||
}
|
||||
# put the table into the table array
|
||||
push @RelyxTable::table_array, $thistable;
|
||||
|
||||
|
||||
# Now that it's blessed, put the 0th row into the table
|
||||
$thistable->addrow;
|
||||
|
||||
return $thistable;
|
||||
} # end sub new
|
||||
|
||||
sub addrow {
|
||||
# add a row to the table
|
||||
# Since we're starting the row, we're in the 0th column
|
||||
my $thistable = shift;
|
||||
my $row = new RelyxTable::Row;
|
||||
push (@{$thistable->{"rows"}}, $row);
|
||||
|
||||
# Also initialize the cells for this row
|
||||
my $col;
|
||||
foreach $col (@{$thistable->{"columns"}}) {
|
||||
push (@{$row->{"cells"}}, RelyxTable::Cell->new($row, $col));
|
||||
}
|
||||
} # end sub addrow
|
||||
|
||||
sub nextcol {
|
||||
# Go to next column - this just involves calling RT::Row->nextcol
|
||||
# on the current row
|
||||
my $thistable = shift;
|
||||
my $row = $thistable->current_row;
|
||||
$row->nextcol;
|
||||
} # end of sub nextcol
|
||||
|
||||
sub hcline {
|
||||
# interpret an '\hline' or '\cline' command
|
||||
# (It's cline if there's an arg1)
|
||||
# hline:
|
||||
# Add a bottom line to the row *before* the current row, unless it's
|
||||
# the top row. In that case, add a top line to the current (top) row
|
||||
# Change the row and all the cells that make up the row
|
||||
# cline:
|
||||
# Change the cells from the row in the range given in arg1
|
||||
my $thistable = shift;
|
||||
my $range = shift;
|
||||
my $is_cline = defined($range);
|
||||
my ($rownum, $line_str, $lastrow, $cell);
|
||||
|
||||
if ($lastrow = $thistable->numrows - 1) { # not top row
|
||||
$rownum = $lastrow - 1;
|
||||
$line_str = "bottom_line";
|
||||
} else {
|
||||
$rownum = $lastrow;
|
||||
$line_str = "top_line";
|
||||
}
|
||||
|
||||
my $row = $thistable->{"rows"}[$rownum];
|
||||
# Add a row line (only) if it's a \hline command
|
||||
unless ($is_cline) {
|
||||
$row->{"$line_str"} +=1;
|
||||
if (defined($main::opt_d) && $row->{"$line_str"} == 2) {
|
||||
print "\nToo many \\hline's";
|
||||
}
|
||||
}
|
||||
|
||||
# Figure out which rows to change
|
||||
my ($r1, $r2);
|
||||
if ($is_cline) {
|
||||
$range =~ /(\d+)-(\d+)/ or warn "weird \\cline range";
|
||||
# LaTeX numbers columns from 1, we number from 0
|
||||
($r1, $r2) = ($1 - 1, $2 - 1);
|
||||
} else {
|
||||
$r1 = 0;
|
||||
$r2 = $thistable->numcols - 1;
|
||||
}
|
||||
|
||||
my $i;
|
||||
foreach $i ($r1 .. $r2) {
|
||||
$cell = $row->{"cells"}[$i];
|
||||
$cell->{"$line_str"} +=1; # change the cells in the row
|
||||
}
|
||||
} # end sub hline
|
||||
|
||||
sub multicolumn {
|
||||
# interpret a \multicolumn command
|
||||
# This really just needs to call RT::Row->multicolumn for the correct row
|
||||
my $thistable = shift;
|
||||
my $row = $thistable->current_row;
|
||||
$row->multicolumn(@_);
|
||||
} # end sub multicolumn
|
||||
|
||||
sub done_reading {
|
||||
# Finished reading a table
|
||||
my $thistable = shift;
|
||||
# If we just had \hlines at the end, it's not a real row
|
||||
# But if numcols==1, curr_col *has* to be zero!
|
||||
# HACK HACK HACK. If numcols==1 but we need to subtract a row, we
|
||||
# won't know until LastLyX. At that point, we'll subtract a row.
|
||||
my $row = $thistable->current_row;
|
||||
if ($thistable->numcols > 1 && $row->{"curr_col"} == 0) {
|
||||
pop @{$thistable->{"rows"}}
|
||||
}
|
||||
|
||||
# We're no longer reading this table
|
||||
$thistable->{"active"} = 0;
|
||||
|
||||
if ($debug_on) {
|
||||
print "\nDone with table ",$#RelyxTable::table_array,", which has ",
|
||||
$thistable->numrows," rows and ",
|
||||
$thistable->numcols," columns";
|
||||
print"\nNumber of rows may be 1 too high" if $thistable->numcols==1;
|
||||
}
|
||||
} # end sub done_reading
|
||||
|
||||
# Subroutines to print out the table once it's created
|
||||
sub print_info {
|
||||
# print the header information for this table
|
||||
my $thistable = shift;
|
||||
my $to_print = "";
|
||||
$to_print .= "\n\\LyXTable\nmulticol5\n";
|
||||
my @arr = ($thistable->numrows,
|
||||
$thistable->numcols,
|
||||
$thistable->{"is_long_table"},
|
||||
$thistable->{"rotate"},
|
||||
$thistable->{"endhead"},
|
||||
$thistable->{"end_first_head"},
|
||||
$thistable->{"endfoot"},
|
||||
$thistable->{"end_last_foot"}
|
||||
);
|
||||
$to_print .= join(" ",@arr);
|
||||
$to_print .= "\n";
|
||||
|
||||
# Print row info
|
||||
my $row;
|
||||
foreach $row (@{$thistable->{"rows"}}) {
|
||||
$to_print .= $row->print_info;
|
||||
}
|
||||
|
||||
# Print column info
|
||||
my $col;
|
||||
foreach $col (@{$thistable->{"columns"}}) {
|
||||
$to_print .= $col->print_info;
|
||||
}
|
||||
|
||||
# Print cell info
|
||||
my $cell;
|
||||
foreach $row (@{$thistable->{"rows"}}) {
|
||||
my $count = 0;
|
||||
foreach $col (@{$thistable->{"columns"}}) {
|
||||
$cell = $row->{"cells"}[$count];
|
||||
$count++;
|
||||
$to_print .= $cell->print_info;
|
||||
}
|
||||
}
|
||||
|
||||
$to_print .= "\n";
|
||||
|
||||
return $to_print;
|
||||
} # end sub print_info
|
||||
|
||||
# Convenient subroutines
|
||||
sub numrows {
|
||||
my $thistable = shift;
|
||||
return $#{$thistable->{"rows"}} + 1;
|
||||
} # end sub numrows
|
||||
|
||||
sub numcols {
|
||||
my $thistable = shift;
|
||||
return $#{$thistable->{"columns"}} + 1;
|
||||
} # end sub numrows
|
||||
|
||||
sub current_row {
|
||||
# Return the current row blessed as an RT::Row
|
||||
my $thistable = shift;
|
||||
my $row = $thistable->{"rows"}[-1];
|
||||
bless $row, "RelyxTable::Row"; #... and return it
|
||||
} # end sub current_row
|
||||
|
||||
} # end package RelyxTable::Table
|
||||
|
||||
################################################################################
|
||||
|
||||
{
|
||||
# Column class
|
||||
package RelyxTable::Column;
|
||||
|
||||
# Fields:
|
||||
# alignment - left, right, or center (l, r, or c)
|
||||
# right_line- How many lines this column has to its right
|
||||
# left_line - How many lines this column has to its left
|
||||
# (only first column can have left lines!)
|
||||
# pwidth - width argument to a 'p' alignment command -- e.g., 10cm
|
||||
# special - special column description that lyx can't handle
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my $description = shift;
|
||||
my $col;
|
||||
|
||||
# Initially zero everything, since we set different
|
||||
# fields for @ and non-@ columns
|
||||
$col->{"alignment"} = "c"; # default
|
||||
$col->{"left_line"} = 0;
|
||||
$col->{"right_line"} = 0;
|
||||
$col->{"pwidth"} = "";
|
||||
$col->{"special"} = "";
|
||||
|
||||
# LyX does not know about '@' or 'm' column descriptors so, to
|
||||
# ensure that the LaTeX -> LyX -> LaTeX cycle is invariant,
|
||||
# these descriptors are placed in the 'special' field.
|
||||
if ($description =~ /\@/ || $description =~ /^m/ ) {
|
||||
$col->{"special"} = $description;
|
||||
print "\n'$description' column won't display WYSIWYG in LyX\n"
|
||||
if $debug_on;
|
||||
}
|
||||
|
||||
# '@' columns really can't be displayed WYSIWYG in LyX,
|
||||
# but we can get visual feedback on 'm' columns.
|
||||
if (!($description =~ /\@/)) {
|
||||
# left line?
|
||||
$description =~ s/^\|*//;
|
||||
$col->{"left_line"} = length($&);
|
||||
|
||||
# main column description
|
||||
$description =~ s/^[clrpm]//;
|
||||
if ($& eq 'p' || $& eq 'm') {
|
||||
$description =~ s/^\{(.+)\}//; # eat the width
|
||||
$col->{"pwidth"} = $1; # width without braces
|
||||
# note: alignment is not applicable for 'p' columns
|
||||
} else {
|
||||
$col->{"alignment"} = $&;
|
||||
}
|
||||
|
||||
# right line?
|
||||
$description =~ s/^\|*//;
|
||||
$col->{"right_line"} = length($&);
|
||||
}
|
||||
|
||||
bless $col, $class; #... and return it
|
||||
} # end sub new
|
||||
|
||||
sub print_info {
|
||||
# print out header information for this column
|
||||
# Note that we need to put "" around pwidth and special for multicol5 format
|
||||
my $col = shift;
|
||||
my $to_print = "";
|
||||
my @arr = ($TableAlignments{$col->{"alignment"}},
|
||||
$col->{"left_line"},
|
||||
$col->{"right_line"},
|
||||
'"' . $col->{"pwidth"} . '"',
|
||||
'"' . $col->{"special"} . '"'
|
||||
);
|
||||
$to_print .= join(" ",@arr);
|
||||
$to_print .= "\n";
|
||||
|
||||
return $to_print;
|
||||
}
|
||||
} # end package RelyxTable::Column
|
||||
|
||||
################################################################################
|
||||
|
||||
{
|
||||
package RelyxTable::Row;
|
||||
# Fields:
|
||||
# top_line - does this row have a top line?
|
||||
# bottom_line - does this row have a bottom line?
|
||||
# curr_col - which column we're currently dealing with
|
||||
# cells - array containing references to this row's cells
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my $row;
|
||||
$row->{"top_line"} = 0;
|
||||
$row->{"bottom_line"} = 0;
|
||||
$row->{"is_cont_row"} = 0;
|
||||
$row->{"newpage"} = 0;
|
||||
$row->{"curr_col"} = 0;
|
||||
|
||||
bless $row, $class;
|
||||
} # end sub new
|
||||
|
||||
sub nextcol {
|
||||
# Go to next column on the current row
|
||||
my $row = shift;
|
||||
my $i = $row->{"curr_col"};
|
||||
$i++;
|
||||
|
||||
# What if it was a multicolumn?
|
||||
# $rcells holds a reference to the array of cells
|
||||
my $rcells = \@{$row->{"cells"}};
|
||||
# Paranoia check that we're not attempting to access beyond the
|
||||
# end of the array in case reLyX failed to parse the number of
|
||||
# columns correctly.
|
||||
$i++ while ($i < @{$rcells} &&
|
||||
${$rcells}[$i]->{"multicolumn"} eq "part");
|
||||
|
||||
$row->{"curr_col"} = $i;
|
||||
} # end of sub nextcol
|
||||
|
||||
sub multicolumn {
|
||||
# interpret a \multicolumn command
|
||||
# Arg0 is the row that the multicolumn is in
|
||||
# Arg 1 is the first argument to \multicolumn, simply a number (no braces)
|
||||
# Arg 2 is the second argument, which is a TT::Group column specification
|
||||
my $row = shift;
|
||||
my ($num_cols, $coldes) = (shift, shift);
|
||||
|
||||
# parse_cols warns about @{} expressions, which aren't WYSIWYG
|
||||
# and turns the description into a simple string
|
||||
my @dum = &RelyxTable::parse_cols($coldes);
|
||||
# LaTeX multicolumn description can only describe one column...
|
||||
warn "Strange multicolumn description $coldes" if $#dum;
|
||||
my $description = $dum[0];
|
||||
|
||||
# Set the first cell
|
||||
my $firstcell = $row->{"curr_col"};
|
||||
my $cell = $row->{"cells"}[$firstcell];
|
||||
$cell->{"multicolumn"} = "begin";
|
||||
# Simple descriptions use alignment field, others use special
|
||||
# Special isn't WYSIWYG in LyX -- currently, LyX can't display
|
||||
# '|' or @{} stuff in multicolumns
|
||||
if ($description =~ /^[clr]$/) {
|
||||
$cell->{"alignment"} = $description;
|
||||
} else {
|
||||
$cell->{"special"} = $description;
|
||||
print "\n'$description' multicolumn won't display WYSIWYG in LyX\n"
|
||||
if $debug_on;
|
||||
}
|
||||
|
||||
# Set other cells
|
||||
my $i;
|
||||
foreach $i (1 .. $num_cols-1) {
|
||||
$cell = $row->{"cells"}[$firstcell + $i];
|
||||
$cell->{"multicolumn"} = "part";
|
||||
}
|
||||
|
||||
} # end sub multicolumn
|
||||
|
||||
sub print_info {
|
||||
# print information for this column
|
||||
my $row = shift;
|
||||
my $to_print = "";
|
||||
my @arr = ($row->{"top_line"},
|
||||
$row->{"bottom_line"},
|
||||
$row->{"is_cont_row"},
|
||||
$row->{"newpage"}
|
||||
);
|
||||
$to_print .= join(" ",@arr);
|
||||
$to_print .= "\n";
|
||||
|
||||
return $to_print;
|
||||
} # end sub print_info
|
||||
|
||||
} # end package RelyxTable::Row
|
||||
|
||||
################################################################################
|
||||
|
||||
{
|
||||
package RelyxTable::Cell;
|
||||
# Fields:
|
||||
# multicolumn - 0 (regular cell), 1 (beg. of multicol), 2 (part of multicol)
|
||||
# alignment - alignment of this cell
|
||||
# top_line - does the cell have a line on the top?
|
||||
# bottom_line - does the cell have a line on the bottom?
|
||||
# has_cont_row-
|
||||
# rotate - rotate cell?
|
||||
# line_breaks - cell has line breaks in it (???)
|
||||
# special - does this multicol have a special description (@ commands?)
|
||||
# pwidth - pwidth of this cell for a parbox command (for linebreaks)
|
||||
|
||||
sub new {
|
||||
# args 1 and 2 are the parent row and column of this cell
|
||||
my $class = shift;
|
||||
my ($parent_row, $parent_col) = (shift, shift);
|
||||
my $cell;
|
||||
$cell->{"multicolumn"} = "normal"; # by default, it isn't a multicol
|
||||
$cell->{"alignment"} = "l"; # doesn't really matter: will be reset soon
|
||||
$cell->{"top_line"} = 0;
|
||||
$cell->{"bottom_line"} = 0;
|
||||
$cell->{"has_cont_row"} = 0;
|
||||
$cell->{"rotate"} = 0;
|
||||
$cell->{"line_breaks"} = 0;
|
||||
$cell->{"special"} = "";
|
||||
$cell->{"pwidth"} = "";
|
||||
|
||||
# Have to bless $cell here, so that we can call methods on it
|
||||
bless $cell, $class;
|
||||
|
||||
# The cell should inherit characteristics from its parent row & col
|
||||
$cell->row_inherit($parent_row);
|
||||
$cell->col_inherit($parent_col);
|
||||
|
||||
return $cell;
|
||||
} # end sub new
|
||||
|
||||
sub row_inherit {
|
||||
# Inherit fields from parent row
|
||||
my ($cell, $row) = (shift, shift);
|
||||
$cell->{"top_line"} = $row->{"top_line"};
|
||||
$cell->{"bottom_line"} = $row->{"bottom_line"};
|
||||
} # end sub row_inherit
|
||||
|
||||
sub col_inherit {
|
||||
# Inherit field(s) from parent column
|
||||
my ($cell, $col) = (shift, shift);
|
||||
$cell->{"alignment"} = $col->{"alignment"};
|
||||
}
|
||||
|
||||
sub print_info {
|
||||
# print information for this cell
|
||||
# Note that we need to put "" around pwidth and special for multicol5 format
|
||||
my $cell = shift;
|
||||
my $to_print = "";
|
||||
my @arr = ($MulticolumnTypes{$cell->{"multicolumn"}},
|
||||
$TableAlignments{$cell->{"alignment"}},
|
||||
$cell->{"top_line"},
|
||||
$cell->{"bottom_line"},
|
||||
$cell->{"has_cont_row"},
|
||||
$cell->{"rotate"},
|
||||
$cell->{"line_breaks"},
|
||||
'"' . $cell->{"special"} . '"',
|
||||
'"' . $cell->{"pwidth"} . '"',
|
||||
);
|
||||
$to_print .= join(" ",@arr);
|
||||
$to_print .= "\n";
|
||||
|
||||
return $to_print;
|
||||
}
|
||||
} # end package RelyxTable::Cell
|
||||
|
||||
1; # return "true" to calling routine
|
@ -1,27 +0,0 @@
|
||||
TODO file for reLyX
|
||||
|
||||
SHORT TERM:
|
||||
- Bug fixes
|
||||
- translate common options from preamble (some \usepackage commands)
|
||||
- copy all unknown environments exactly, not just reLyXskip and verbatim
|
||||
- \url, especially \url||
|
||||
|
||||
MEDIUM TERM:
|
||||
- support more stuff from preamble, like \newtheorem
|
||||
- full table support (i.e., longtable and sideways environment in tables)
|
||||
- minipages
|
||||
- list environments (like minipage) in syntax.default, along with the
|
||||
number of arguments they take.
|
||||
- better understanding of when we're in math mode. Will (finally!) fix the
|
||||
underscore bugs, allow macro translation and perhaps environment translation,
|
||||
as well as translating \bf in math mode correctly.
|
||||
|
||||
LONGER TERM:
|
||||
- graphicx? (in LyX 1.1 and later)
|
||||
- other LaTeX packages
|
||||
- "sloppy" and "fussy" translations. User chooses either to translate as much
|
||||
as possible, which may cause incorrect translations, or to guarantee that
|
||||
(dvi) output will be exactly the same as the TeX file, which may leave
|
||||
more untranslated TeX (ERT).
|
||||
- macro expansion using "tme, a TeX macro expander" by Jonathan Thornburg
|
||||
- better handling of spaces and comments (involves fixing the parser)
|
File diff suppressed because it is too large
Load Diff
@ -1,344 +0,0 @@
|
||||
.rn '' }`
|
||||
''' $RCSfile: manpage.3pm,v $$Revision: 1.2 $$Date: 2004/10/28 14:35:19 $
|
||||
'''
|
||||
''' $Log: manpage.3pm,v $
|
||||
''' Revision 1.2 2004/10/28 14:35:19 leeming
|
||||
''' Whitespace, only whitespace. Part II.
|
||||
'''
|
||||
''' Revision 1.1.1.1 1999/09/27 18:44:35 larsbj
|
||||
''' This is the new LyX development branch, it is based upon version
|
||||
''' 1.0.4pre8 and will from now on be used for both development and stable branches.
|
||||
'''
|
||||
'''
|
||||
''' Revision 1.1.1.1 1998/04/20 21:14:36 larsbj
|
||||
''' repository moved due to corrupted repository on other machine
|
||||
'''
|
||||
''' Revision 1.1.2.1 1998/03/02 16:12:47 larsbj
|
||||
''' two patches added to 0.12.1pre2
|
||||
'''
|
||||
''' Revision 1.1.2.1 1998/02/07 02:27:30 larsbj
|
||||
''' patch from jean-marc, and a fix to libdir detection by lgb
|
||||
'''
|
||||
''' Revision 1.1 1997/10/26 10:22:04 larsbj
|
||||
''' lots of small changes
|
||||
'''
|
||||
''' Revision 1.1 1997/10/17 16:52:21 larsbj
|
||||
''' changes
|
||||
'''
|
||||
'''
|
||||
.de Sh
|
||||
.br
|
||||
.if t .Sp
|
||||
.ne 5
|
||||
.PP
|
||||
\fB\\$1\fR
|
||||
.PP
|
||||
..
|
||||
.de Sp
|
||||
.if t .sp .5v
|
||||
.if n .sp
|
||||
..
|
||||
.de Ip
|
||||
.br
|
||||
.ie \\n(.$>=3 .ne \\$3
|
||||
.el .ne 3
|
||||
.IP "\\$1" \\$2
|
||||
..
|
||||
.de Vb
|
||||
.ft CW
|
||||
.nf
|
||||
.ne \\$1
|
||||
..
|
||||
.de Ve
|
||||
.ft R
|
||||
|
||||
.fi
|
||||
..
|
||||
'''
|
||||
'''
|
||||
''' Set up \*(-- to give an unbreakable dash;
|
||||
''' string Tr holds user defined translation string.
|
||||
''' Bell System Logo is used as a dummy character.
|
||||
'''
|
||||
.tr \(*W-|\(bv\*(Tr
|
||||
.ie n \{\
|
||||
.ds -- \(*W-
|
||||
.ds PI pi
|
||||
.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
|
||||
.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
|
||||
.ds L" ""
|
||||
.ds R" ""
|
||||
.ds L' '
|
||||
.ds R' '
|
||||
'br\}
|
||||
.el\{\
|
||||
.ds -- \(em\|
|
||||
.tr \*(Tr
|
||||
.ds L" ``
|
||||
.ds R" ''
|
||||
.ds L' `
|
||||
.ds R' '
|
||||
.ds PI \(*p
|
||||
'br\}
|
||||
.\" If the F register is turned on, we'll generate
|
||||
.\" index entries out stderr for the following things:
|
||||
.\" TH Title
|
||||
.\" SH Header
|
||||
.\" Sh Subsection
|
||||
.\" Ip Item
|
||||
.\" X<> Xref (embedded
|
||||
.\" Of course, you have to process the output yourself
|
||||
.\" in some meaninful fashion.
|
||||
.if \nF \{
|
||||
.de IX
|
||||
.tm Index:\\$1\t\\n%\t"\\$2"
|
||||
..
|
||||
.nr % 0
|
||||
.rr F
|
||||
.\}
|
||||
.TH TEX 1 "perl 5.003, patch 07" "30/Oct/96" "User Contributed Perl Documentation"
|
||||
.IX Title "TEX 1"
|
||||
.UC
|
||||
.IX Name "Text::TeX - Perl module for parsing of C<TeX>."
|
||||
.if n .hy 0
|
||||
.if n .na
|
||||
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
|
||||
.de CQ \" put $1 in typewriter font
|
||||
.ft CW
|
||||
'if n "\c
|
||||
'if t \\&\\$1\c
|
||||
'if n \\&\\$1\c
|
||||
'if n \&"
|
||||
\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
|
||||
'.ft R
|
||||
..
|
||||
.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
|
||||
. \" AM - accent mark definitions
|
||||
.bd B 3
|
||||
. \" fudge factors for nroff and troff
|
||||
.if n \{\
|
||||
. ds #H 0
|
||||
. ds #V .8m
|
||||
. ds #F .3m
|
||||
. ds #[ \f1
|
||||
. ds #] \fP
|
||||
.\}
|
||||
.if t \{\
|
||||
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
|
||||
. ds #V .6m
|
||||
. ds #F 0
|
||||
. ds #[ \&
|
||||
. ds #] \&
|
||||
.\}
|
||||
. \" simple accents for nroff and troff
|
||||
.if n \{\
|
||||
. ds ' \&
|
||||
. ds ` \&
|
||||
. ds ^ \&
|
||||
. ds , \&
|
||||
. ds ~ ~
|
||||
. ds ? ?
|
||||
. ds ! !
|
||||
. ds /
|
||||
. ds q
|
||||
.\}
|
||||
.if t \{\
|
||||
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
|
||||
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
|
||||
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
|
||||
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
|
||||
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
|
||||
. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
|
||||
. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
|
||||
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
|
||||
. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
|
||||
.\}
|
||||
. \" troff and (daisy-wheel) nroff accents
|
||||
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
|
||||
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
|
||||
.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
|
||||
.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
|
||||
.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
|
||||
.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
|
||||
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
|
||||
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
|
||||
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
|
||||
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
|
||||
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
|
||||
.ds ae a\h'-(\w'a'u*4/10)'e
|
||||
.ds Ae A\h'-(\w'A'u*4/10)'E
|
||||
.ds oe o\h'-(\w'o'u*4/10)'e
|
||||
.ds Oe O\h'-(\w'O'u*4/10)'E
|
||||
. \" corrections for vroff
|
||||
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
|
||||
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
|
||||
. \" for low resolution devices (crt and lpr)
|
||||
.if \n(.H>23 .if \n(.V>19 \
|
||||
\{\
|
||||
. ds : e
|
||||
. ds 8 ss
|
||||
. ds v \h'-1'\o'\(aa\(ga'
|
||||
. ds _ \h'-1'^
|
||||
. ds . \h'-1'.
|
||||
. ds 3 3
|
||||
. ds o a
|
||||
. ds d- d\h'-1'\(ga
|
||||
. ds D- D\h'-1'\(hy
|
||||
. ds th \o'bp'
|
||||
. ds Th \o'LP'
|
||||
. ds ae ae
|
||||
. ds Ae AE
|
||||
. ds oe oe
|
||||
. ds Oe OE
|
||||
.\}
|
||||
.rm #[ #] #H #V #F C
|
||||
.SH "NAME"
|
||||
.IX Header "NAME"
|
||||
Text::TeX -- Perl module for parsing of \f(CWTeX\fR.
|
||||
.SH "SYNOPSIS"
|
||||
.IX Header "SYNOPSIS"
|
||||
.PP
|
||||
.Vb 1
|
||||
\& use Text::TeX;
|
||||
.Ve
|
||||
.Vb 12
|
||||
\& sub report {
|
||||
\& my($eaten,$txt) = (shift,shift);
|
||||
\& print "Comment: `", $eaten->[1], "'\en" if defined $eaten->[1];
|
||||
\& print "@{$txt->{waitfors}} ", ref $eaten, ": `", $eaten->[0], "'";
|
||||
\& if (defined $eaten->[3]) {
|
||||
\& my @arr = @{ $eaten->[3] };
|
||||
\& foreach (@arr) {
|
||||
\& print " ", $_->print;
|
||||
\& }
|
||||
\& }
|
||||
\& print "\en";
|
||||
\& }
|
||||
.Ve
|
||||
.Vb 3
|
||||
\& my $file = new Text::TeX::OpenFile 'test.tex',
|
||||
\& 'defaultact' => \e&report;
|
||||
\& $file->process;
|
||||
.Ve
|
||||
.SH "DESCRIPTION"
|
||||
.IX Header "DESCRIPTION"
|
||||
A new \f(CWTeX\fR parser is created by
|
||||
.PP
|
||||
.Vb 1
|
||||
\& $file = new Text::TeX::OpenFile $filename, attr1 => $val1, ...;
|
||||
.Ve
|
||||
$filename may be \f(CWundef\fR, in this case the text to parse may be
|
||||
specified in the attribute \f(CWstring\fR.
|
||||
.PP
|
||||
Recognized attributes are:
|
||||
.Ip "\f(CWstring\fR" 12
|
||||
.IX Item "\f(CWstring\fR"
|
||||
contains the text to parse before parsing \f(CW$filename\fR.
|
||||
.Ip "\f(CWdefaultact\fR" 12
|
||||
.IX Item "\f(CWdefaultact\fR"
|
||||
denotes a procedure to submit \f(CWoutput tokens\fR to.
|
||||
.Ip "\f(CWtokens\fR" 12
|
||||
.IX Item "\f(CWtokens\fR"
|
||||
gives a hash of \f(CWdescriptors\fR for \f(CWinput token\fR. A sane default is
|
||||
provided.
|
||||
.PP
|
||||
A call to the method \f(CWprocess\fR launches the parser.
|
||||
.Sh "Tokenizer"
|
||||
.IX Subsection "Tokenizer"
|
||||
When the parser is running, it processes input stream by splitting it
|
||||
into \f(CWinput tokens\fR using some \fIheuristics\fR similar to the actual
|
||||
rules of TeX tokenizer. However, since it does not use \fIthe exact
|
||||
rules\fR, the resulting tokens may be wrong if some advanced TeX command
|
||||
are used, say, the character classes are changed.
|
||||
.PP
|
||||
This should not be of any concern if the stream in question is a
|
||||
\*(L"user\*(R" file, but is important for \*(L"packages\*(R".
|
||||
.Sh "Digester"
|
||||
.IX Subsection "Digester"
|
||||
The processed \f(CWinput tokens\fR are handled to the digester, which
|
||||
handles them according to the provided \f(CWtokens\fR attribute.
|
||||
.Sh "\f(CWtokens\fR attribute"
|
||||
.IX Subsection "\f(CWtokens\fR attribute"
|
||||
This is a hash reference which describes how the \f(CWinput tokens\fR
|
||||
should be handled. A key to this hash is a literal like \f(CW^\fR or
|
||||
\f(CW\efraction\fR. A value should be another hash reference, with the
|
||||
following keys recognized:
|
||||
.Ip "class" 7
|
||||
.IX Item "class"
|
||||
Into which class to bless the token. Several predefined classes are
|
||||
provided. The default is \f(CWText::TeX::Token\fR.
|
||||
.Ip "Type" 7
|
||||
.IX Item "Type"
|
||||
What kind of special processing to do with the input after the
|
||||
\f(CWclass\fR methods are called. Recognized \f(CWType\fRs are:
|
||||
.Ip "report_args" 17
|
||||
.IX Item "report_args"
|
||||
When the token of this \f(CWType\fR is encountered, it is converted into
|
||||
\f(CWText::Tex::BegArgsToken\fR. Then the arguments are processed as usual,
|
||||
and an \f(CWoutput token\fR of type \f(CWText::Tex::ArgToken\fR is inserted
|
||||
between them. Finally, after all the arguments are processed, an
|
||||
\f(CWoutput token\fR \f(CWText::Tex::EndArgsToken\fR is inserted.
|
||||
.Sp
|
||||
The first element of these simulated \f(CWoutput tokens\fR is an array
|
||||
reference with the first element being the initial \f(CWoutput token\fR
|
||||
which generated this sequence. The second element of the internal
|
||||
array is the number of arguments required by the \f(CWinput token\fR. The
|
||||
\f(CWText::Tex::ArgToken\fR token has a third element, which is the ordinal
|
||||
of the argument which ends immediately before this token.
|
||||
.Sp
|
||||
If requested, a token \f(CWText::Tex::LookAhead\fR may be returned instead
|
||||
of \f(CWText::Tex::EndArgsToken\fR. The additional elements of
|
||||
\f(CW$token-\fR[0]> are: the reference to the corresponding \f(CWlookahead\fR
|
||||
attribute, the relevant key (text of following token) and the
|
||||
corresponding value.
|
||||
.Sp
|
||||
In such a case the input token which was looked-ahead would generate
|
||||
an output token of type \f(CWText::Tex::BegArgsTokenLookedAhead\fR (if it
|
||||
usually generates \f(CWText::Tex::BegArgsToken\fR).
|
||||
.Ip "local" 17
|
||||
.IX Item "local"
|
||||
Means that these macro introduces a local change, which should be
|
||||
undone at the end of enclosing block. At the end of the block an
|
||||
output event \f(CWText::TeX::EndLocal\fR is delivered, with \f(CW$token-\fR[0]>
|
||||
being the output token for the \fIlocal\fR event starting.
|
||||
.Sp
|
||||
Useful for font switching.
|
||||
.PP
|
||||
Some additional keys may be recognized by the code for the particular
|
||||
\f(CWclass\fR.
|
||||
.Ip "\f(CWcount\fR" 12
|
||||
.IX Item "\f(CWcount\fR"
|
||||
number of arguments to the macro.
|
||||
.Ip "\f(CWwaitfor\fR" 12
|
||||
.IX Item "\f(CWwaitfor\fR"
|
||||
gives the matching token for a \fIstarting delimiter\fR token.
|
||||
.Ip "\f(CWeatargs\fR" 12
|
||||
.IX Item "\f(CWeatargs\fR"
|
||||
number of tokens to swallow literally and put into the relevant slot
|
||||
of the \f(CWoutput token\fR. The surrounding braces are stripped.
|
||||
.Ip "\f(CWselfmatch\fR" 12
|
||||
.IX Item "\f(CWselfmatch\fR"
|
||||
is used with \f(CWeatargs==1\fR. Denotes that the matching token is also
|
||||
\f(CWeatargs==1\fR, and the swallowed tokens should coinside (like with
|
||||
\f(CW\ebegin{blah} ... \eend{blah}\fR).
|
||||
.Ip "\f(CWlookahead\fR" 12
|
||||
.IX Item "\f(CWlookahead\fR"
|
||||
is a hash with keys being texts of tokens which need to be treated
|
||||
specially after the end of arguments for the current token. If the
|
||||
corresponding text follows the token indeed, a token
|
||||
\f(CWText::Tex::LookAhead\fR is returned instead of
|
||||
\f(CWText::Tex::EndArgsToken\fR.
|
||||
.Sh "Symbol font table"
|
||||
.IX Subsection "Symbol font table"
|
||||
The hash \f(CW%Text::TeX::xfont\fR contains the translation table from TeX
|
||||
tokens into the corresponding font elements. The values are array
|
||||
references of the form \f(CW[fontname, char]\fR, Currently the only font
|
||||
supported is \f(CWsymbol\fR.
|
||||
.SH "AUTHOR"
|
||||
.IX Header "AUTHOR"
|
||||
Ilya Zakharevich, ilya@math.ohio-state.edu
|
||||
.SH "SEE ALSO"
|
||||
.IX Header "SEE ALSO"
|
||||
\fIperl\fR\|(1).
|
||||
|
||||
.rn }` ''
|
@ -1,129 +0,0 @@
|
||||
####################### VERBATIM COPYING SUBROUTINES ########################
|
||||
# This file is part of reLyX.
|
||||
# Copyright (c) 1998-9 Amir Karger karger@post.harvard.edu
|
||||
# You are free to use and modify this code under the terms of
|
||||
# the GNU General Public Licence version 2 or later.
|
||||
#
|
||||
# Subs for copying stuff verbatim from a TeX file instead of parsing it.
|
||||
# These subs use the rather low-level TT:OpenFile::paragraph method, because
|
||||
# the higher level methods assume you've parsed, and verbatim stuff might be
|
||||
# parsed normally.
|
||||
|
||||
package Verbatim;
|
||||
use strict;
|
||||
|
||||
my $debug_on; # package-wide variable set if -d option is given
|
||||
|
||||
sub copy_verb {
|
||||
# This subroutine handles a \verb token. Text is guaranteed to be on one line.
|
||||
# \verb must be followed by a non-letter, then copy anything until the next
|
||||
# occurrence of that character.
|
||||
my ($fileobject, $token) = @_;
|
||||
my $verb = $token->exact_print; # "\verb" or "\verb*"
|
||||
my $textref = $fileobject->paragraph;
|
||||
# eat e.g., !text $\% text!
|
||||
if ($$textref =~ s/^([^A-Za-z*]).*?\1//) {
|
||||
$verb .= $&;
|
||||
} else { warn "unable to parse \\verb"; $verb .="||" }
|
||||
return $verb;
|
||||
}
|
||||
|
||||
sub copy_verbatim {
|
||||
# Was -d option given?
|
||||
$debug_on = (defined($main::opt_d) && $main::opt_d);
|
||||
|
||||
# This subroutine eats text verbatim until a certain text is reached
|
||||
# The end text itself is not eaten; this is necessary so that
|
||||
# environments are properly nested (otherwise, TeX.pm complains)
|
||||
# It returns a string containing the text
|
||||
#
|
||||
# Arg 0 is the Text::TeX::OpenFile file object, arg 1 is the beginning token
|
||||
my $fileobject = shift;
|
||||
my $begin_token = shift;
|
||||
my %endtokentbl = ( '\(' => '\)',
|
||||
'\[' => '\]',
|
||||
'$' => '$',
|
||||
'$$' => '$$' );
|
||||
|
||||
my $type = ref($begin_token);
|
||||
$type =~ s/^Text::TeX:://o or die "unknown token type $type?!";
|
||||
|
||||
# Figure out beginning & end text of this token or environment
|
||||
# Beginning text so we know if you have an environment nested within itself
|
||||
# End text so we know when to finish copying OR when to 'pop' a level
|
||||
# if an environment is nested within itself
|
||||
# Because the searches will generally be matching expressions with backslashes
|
||||
# and other meta-characters, we put \Q\E around (pieces of) the expressions
|
||||
my ($begin_text, $end_text);
|
||||
if ($type =~ /^Token$/) { # \( or \[
|
||||
$begin_text = $begin_token->print; # e.g., '\('
|
||||
die "unknown begin_text" unless exists $endtokentbl{$begin_text};
|
||||
$end_text = "\Q$endtokentbl{$begin_text}\E";
|
||||
# actually, begin_text shouldn't be nec. since you can't nest math
|
||||
$begin_text = "\Q$begin_text\E"; # quote slashes, etc.
|
||||
|
||||
} elsif (/^Begin::Group::Args$/) { # \begin{foo}
|
||||
# \s* to allow, e.g., '\begin {foo}'
|
||||
$begin_text = $begin_token->print;
|
||||
$begin_text = "\Q$begin_text\E";
|
||||
$begin_text =~ s/begin/begin\\s*/;
|
||||
($end_text = $begin_text) =~ s/begin/end/;
|
||||
|
||||
} else {
|
||||
die "copy_verbatim called with unknown token type $type!";
|
||||
}
|
||||
#print "\nsub copy_verbatim going to copy until $end_text\n" if $debug_on;
|
||||
|
||||
# Actual copying
|
||||
my $textref; # reference to stuff we read in to print
|
||||
my $to_print = ""; #text to print
|
||||
# we're automatically "nested" once since we had the original \begin
|
||||
my $nest_count = 1;
|
||||
|
||||
# (Eat and) Print out paragraphs until you find $end_text
|
||||
# paragraph returns "" if it's time to get a new paragraph -- if that
|
||||
# happens, we want to continue, but we can't dereference $textref
|
||||
# Call paragraph with an argument so that it gets a new paragraph if
|
||||
# it gets to the end of a paragraph
|
||||
# Allow nesting of this environment!
|
||||
while (defined ($textref = $fileobject->paragraph(1))) {
|
||||
next unless $textref; # new paragraph; keep going
|
||||
|
||||
# If we match begin or end text, eat everything up to it
|
||||
# Make sure to handle (nested) begin & end texts in order, so we can
|
||||
# differentiate \begin \begin \end \end from \begin \end \begin \end
|
||||
if ($$textref =~ /$end_text/ && $` !~ /$begin_text/) {
|
||||
# Note that $` will be from the last *successful* match,
|
||||
# namely the end_text match
|
||||
--$nest_count;
|
||||
$to_print .= $`; # print until the \end command
|
||||
if ($nest_count) {
|
||||
$to_print .= $&; # print the end text too
|
||||
$$textref = $'; # leave the rest in the paragraph
|
||||
} else {
|
||||
# Leave end text (and anything after it) for TeX.pm
|
||||
$$textref = $& . $';
|
||||
last; # done copying since there's no more nesting
|
||||
}
|
||||
|
||||
# If we match beginning text, we have a nested environment
|
||||
} elsif ($$textref =~ /$begin_text/ && $` !~ /$end_text/) {
|
||||
$to_print .= $`; # print up to and
|
||||
$to_print .= $&; # INCLUDING the begin text
|
||||
$$textref = $'; # leave the rest in the paragraph
|
||||
++$nest_count;
|
||||
|
||||
# If we didn't match begin OR end text, just eat the whole paragraph
|
||||
} else {
|
||||
$to_print .= $$textref;
|
||||
$$textref = "";
|
||||
} # end if $$textref
|
||||
} #end while
|
||||
die "eof without finding matching text $end_text" if (!defined $textref);
|
||||
|
||||
# return the string
|
||||
#print "Exiting sub copy_verbatim\n" if $debug_on;
|
||||
return $to_print;
|
||||
} # end copy_verbatim
|
||||
|
||||
1; # return true to calling routine
|
@ -1,141 +0,0 @@
|
||||
dnl Usage: RELYX_WARNING(message) Displays the warning "message" and sets
|
||||
dnl the flag lyx_warning to yes.
|
||||
AC_DEFUN([RELYX_WARNING],[
|
||||
relyx_warning_txt="$relyx_warning_txt
|
||||
== $1
|
||||
"
|
||||
relyx_warning=yes])
|
||||
|
||||
|
||||
dnl Usage: RELYX_ERROR(message) Displays the error "message" and sets
|
||||
dnl the flag lyx_error to yes.
|
||||
AC_DEFUN([RELYX_ERROR],[
|
||||
relyx_error_txt="$relyx_error_txt
|
||||
== $1
|
||||
"
|
||||
relyx_error=yes])
|
||||
|
||||
|
||||
dnl RELYX_SEARCH_PROG(VARIABLE-NAME,PROGRAMS-LIST,ACTION-IF-FOUND)
|
||||
dnl
|
||||
define([RELYX_SEARCH_PROG],[dnl
|
||||
case "`uname -s 2> /dev/null`" in
|
||||
OS/2)
|
||||
PATH=`echo -E "$PATH" | sed 's+\\\\+/+g'`
|
||||
PATH_IFS=';'
|
||||
;;
|
||||
*)
|
||||
PATH_IFS=':'
|
||||
;;
|
||||
esac
|
||||
for ac_prog in $2 ; do
|
||||
# Extract the first word of "$ac_prog", so it can be a program name with
|
||||
# args.
|
||||
set dummy $ac_prog ; ac_word=$[2]
|
||||
if test ! -n "[$]$1"; then
|
||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}$PATH_IFS"
|
||||
for ac_dir in $PATH; do
|
||||
test -z "$ac_dir" && ac_dir=.
|
||||
if test -f [$ac_dir/$ac_word] -o -f [$ac_dir/$ac_word$ac_exeext]; then
|
||||
$1="$ac_prog"
|
||||
break
|
||||
fi
|
||||
done
|
||||
IFS="$ac_save_ifs"
|
||||
fi
|
||||
|
||||
if test -n "[$]$1"; then
|
||||
ac_result=yes
|
||||
else
|
||||
ac_result=no
|
||||
fi
|
||||
ifelse($3,,,[$3])
|
||||
test -n "[$]$1" && break
|
||||
done
|
||||
])
|
||||
|
||||
|
||||
dnl Usage RELYX_PROG_PERL_OK
|
||||
AC_DEFUN([RELYX_PROG_PERL_OK],[
|
||||
if echo 'require 5.002;exit' | $ac_dir/$ac_prog 2>&5
|
||||
then
|
||||
PERL=$ac_dir/$ac_prog
|
||||
else
|
||||
PERL=
|
||||
fi])
|
||||
|
||||
dnl Usage RELYX_CHECK_PERL
|
||||
AC_DEFUN([RELYX_CHECK_PERL],[
|
||||
AC_MSG_CHECKING([for perl >= 5.002])
|
||||
RELYX_SEARCH_PROG(PERL, perl perl5 perl5.6.1 perl5.6.0 perl5.005 perl5.004 perl5.003 perl5.002,
|
||||
RELYX_PROG_PERL_OK
|
||||
)
|
||||
if test -n "$PERL" ; then
|
||||
AC_MSG_RESULT($PERL)
|
||||
else
|
||||
PERL="/bin/echo reLyX has been disabled because perl version 5.002 has
|
||||
not \
|
||||
been found.\nTo reenable it, edit "
|
||||
AC_MSG_RESULT(no)
|
||||
RELYX_WARNING(dnl
|
||||
Configure has not been able to find a version 5.002 or better of Perl.
|
||||
reLyX has been setup to only display a warning message.
|
||||
Set variable PERL to some value to install a working reLyX.)
|
||||
fi
|
||||
AC_SUBST(PERL)])
|
||||
|
||||
dnl Usage: RELYX_CHECK_ERRORS Displays a warning message if a RELYX_ERROR
|
||||
dnl has occured previously.
|
||||
AC_DEFUN([RELYX_CHECK_ERRORS],[
|
||||
if test x$relyx_error = xyes; then
|
||||
cat <<EOF
|
||||
**** The following problems have been detected by configure.
|
||||
**** Please check the messages below before running 'make'.
|
||||
**** (see the section 'Problems' in the INSTALL file)
|
||||
$relyx_error_txt
|
||||
$relyx_warning_txt
|
||||
deleting cache $cache_file
|
||||
EOF
|
||||
rm -f $cache_file
|
||||
else
|
||||
|
||||
if test x$relyx_warning = xyes; then
|
||||
cat <<EOF
|
||||
=== The following minor problems have been detected by configure.
|
||||
=== Please check the messages below before running 'make'.
|
||||
=== (see the section 'Problems' in the INSTALL file)
|
||||
$relyx_warning_txt
|
||||
EOF
|
||||
fi
|
||||
fi])
|
||||
|
||||
|
||||
dnl Check what kind of packaging should be used at install time.
|
||||
dnl The default is autodetected.
|
||||
AC_DEFUN([RELYX_USE_PACKAGING],
|
||||
[AC_MSG_CHECKING([what packaging should be used])
|
||||
AC_ARG_WITH(packaging,
|
||||
[ --with-packaging=THIS Use THIS packaging for installation:
|
||||
Possible values: posix, windows, macosx],
|
||||
[lyx_use_packaging="$withval"], [
|
||||
case $host in
|
||||
*-apple-darwin*) lyx_use_packaging=macosx ;;
|
||||
*-pc-mingw32*) lyx_use_packaging=windows;;
|
||||
*) lyx_use_packaging=posix;;
|
||||
esac])
|
||||
AC_MSG_RESULT($lyx_use_packaging)
|
||||
case $lyx_use_packaging in
|
||||
macosx) default_prefix="/Applications/LyX.app"
|
||||
bindir='${prefix}/Contents/MacOS'
|
||||
libdir='${prefix}/Contents/Resources'
|
||||
datadir='${prefix}/Contents/Resources'
|
||||
mandir='${prefix}/Contents/Resources/man' ;;
|
||||
windows) default_prefix="C:/Program Files/LyX"
|
||||
bindir='${prefix}/bin'
|
||||
libdir='${prefix}/Resources'
|
||||
datadir='${prefix}/Resources'
|
||||
mandir='${prefix}/Resources/man' ;;
|
||||
posix) default_prefix=$ac_default_prefix ;;
|
||||
*) RELYX_ERROR([Unknown packaging type $lyx_use_packaging]) ;;
|
||||
esac
|
||||
])
|
@ -1,59 +0,0 @@
|
||||
dnl Process with autoconf to generate configure script -*- sh -*-
|
||||
AC_INIT
|
||||
AC_CONFIG_SRCDIR(reLyX.in)
|
||||
AC_PREREQ(2.52)
|
||||
AC_CONFIG_AUX_DIR(../../config)
|
||||
|
||||
dnl PACKAGE=reLyX
|
||||
dnl Do this to install in $datadir/lyx/reLyX instead of $datadir/reLyX/reLyX
|
||||
|
||||
AM_MAINTAINER_MODE
|
||||
AC_CANONICAL_TARGET
|
||||
|
||||
AC_ARG_WITH(version-suffix,
|
||||
[ --with-version-suffix[=<version>] install lyx files as lyx<version>],
|
||||
[lyxname="lyx$withval"
|
||||
program_suffix=$withval],
|
||||
[lyxname=lyx])
|
||||
|
||||
dnl must make a macro that gets the reLyX version
|
||||
VERSION=2.0
|
||||
AM_INIT_AUTOMAKE($lyxname, $VERSION)
|
||||
|
||||
# if reLyX has already been generated in this directory, delete it first
|
||||
test -x reLyX && rm -f reLyX
|
||||
|
||||
### Check how the files should be packaged
|
||||
RELYX_USE_PACKAGING
|
||||
# fix the value of the prefixes.
|
||||
test "x$prefix" = xNONE && prefix=$default_prefix
|
||||
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
|
||||
if echo $prefix |grep ' ' >/dev/null 2>/dev/null ; then
|
||||
RELYX_WARNING([The installation prefix \"${prefix}\" contains a space, which
|
||||
causes problems with the Makefiles. The installation will be done in
|
||||
directory \"`pwd`/installprefix\" instead. Please move its contents to
|
||||
the right place after installation.])
|
||||
prefix=`pwd`/installprefix
|
||||
fi
|
||||
|
||||
# we need to expand ${datadir} to put it into the reLyX wrapper.
|
||||
LYX_DIR=`eval "echo \`eval \"echo ${datadir}/${PACKAGE}\"\`"`
|
||||
AC_SUBST(LYX_DIR)
|
||||
|
||||
# Work around a problem in automake 1.4: when invoking install-strip,
|
||||
# INSTALL_PROGRAM is changed to 'install -s', and since
|
||||
# INSTALL_SCRIPT==INSTALL_PROGRAM, we get errors with fileutils-4.0
|
||||
# which returns an error condition when stripping fails.
|
||||
INSTALL_SCRIPT='${INSTALL}'
|
||||
|
||||
dnl Checks for programs.
|
||||
AC_PROG_INSTALL
|
||||
RELYX_CHECK_PERL
|
||||
|
||||
dnl Finish the work
|
||||
AC_CONFIG_FILES([Makefile])
|
||||
AC_CONFIG_FILES([reLyX], [chmod 755 reLyX])
|
||||
AC_CONFIG_FILES([noweb2lyx], [chmod 755 noweb2lyx])
|
||||
AC_OUTPUT
|
||||
|
||||
RELYX_CHECK_ERRORS
|
@ -1,316 +0,0 @@
|
||||
#!/bin/sh
|
||||
# install - install a program, script, or datafile
|
||||
|
||||
scriptversion=2004-02-15.20
|
||||
|
||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||
# following copyright and license.
|
||||
#
|
||||
# Copyright (C) 1994 X Consortium
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
# Except as contained in this notice, the name of the X Consortium shall not
|
||||
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||
# ings in this Software without prior written authorization from the X Consor-
|
||||
# tium.
|
||||
#
|
||||
#
|
||||
# FSF changes to this file are in the public domain.
|
||||
#
|
||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||
# `make' implicit rules from creating a file called install from it
|
||||
# when there is no Makefile.
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch. It can only install one file at a time, a restriction
|
||||
# shared with many OS's install programs.
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit="${DOITPROG-}"
|
||||
|
||||
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||
|
||||
mvprog="${MVPROG-mv}"
|
||||
cpprog="${CPPROG-cp}"
|
||||
chmodprog="${CHMODPROG-chmod}"
|
||||
chownprog="${CHOWNPROG-chown}"
|
||||
chgrpprog="${CHGRPPROG-chgrp}"
|
||||
stripprog="${STRIPPROG-strip}"
|
||||
rmprog="${RMPROG-rm}"
|
||||
mkdirprog="${MKDIRPROG-mkdir}"
|
||||
|
||||
transformbasename=
|
||||
transform_arg=
|
||||
instcmd="$mvprog"
|
||||
chmodcmd="$chmodprog 0755"
|
||||
chowncmd=
|
||||
chgrpcmd=
|
||||
stripcmd=
|
||||
rmcmd="$rmprog -f"
|
||||
mvcmd="$mvprog"
|
||||
src=
|
||||
dst=
|
||||
dir_arg=
|
||||
|
||||
usage="Usage: $0 [OPTION]... SRCFILE DSTFILE
|
||||
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||
or: $0 -d DIRECTORIES...
|
||||
|
||||
In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default.
|
||||
In the second, create the directory path DIR.
|
||||
|
||||
Options:
|
||||
-b=TRANSFORMBASENAME
|
||||
-c copy source (using $cpprog) instead of moving (using $mvprog).
|
||||
-d create directories instead of installing files.
|
||||
-g GROUP $chgrp installed files to GROUP.
|
||||
-m MODE $chmod installed files to MODE.
|
||||
-o USER $chown installed files to USER.
|
||||
-s strip installed files (using $stripprog).
|
||||
-t=TRANSFORM
|
||||
--help display this help and exit.
|
||||
--version display version info and exit.
|
||||
|
||||
Environment variables override the default commands:
|
||||
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
|
||||
"
|
||||
|
||||
while test -n "$1"; do
|
||||
case $1 in
|
||||
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-c) instcmd=$cpprog
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-d) dir_arg=true
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
--help) echo "$usage"; exit 0;;
|
||||
|
||||
-m) chmodcmd="$chmodprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-s) stripcmd=$stripprog
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
--version) echo "$0 $scriptversion"; exit 0;;
|
||||
|
||||
*) # When -d is used, all remaining arguments are directories to create.
|
||||
test -n "$dir_arg" && break
|
||||
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||
for arg
|
||||
do
|
||||
if test -n "$dstarg"; then
|
||||
# $@ is not empty: it contains at least $arg.
|
||||
set fnord "$@" "$dstarg"
|
||||
shift # fnord
|
||||
fi
|
||||
shift # arg
|
||||
dstarg=$arg
|
||||
done
|
||||
break;;
|
||||
esac
|
||||
done
|
||||
|
||||
if test -z "$1"; then
|
||||
if test -z "$dir_arg"; then
|
||||
echo "$0: no input file specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
# It's OK to call `install-sh -d' without argument.
|
||||
# This can happen when creating conditional directories.
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for src
|
||||
do
|
||||
# Protect names starting with `-'.
|
||||
case $src in
|
||||
-*) src=./$src ;;
|
||||
esac
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
dst=$src
|
||||
src=
|
||||
|
||||
if test -d "$dst"; then
|
||||
instcmd=:
|
||||
chmodcmd=
|
||||
else
|
||||
instcmd=$mkdirprog
|
||||
fi
|
||||
else
|
||||
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
if test ! -f "$src" && test ! -d "$src"; then
|
||||
echo "$0: $src does not exist." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -z "$dstarg"; then
|
||||
echo "$0: no destination specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dst=$dstarg
|
||||
# Protect names starting with `-'.
|
||||
case $dst in
|
||||
-*) dst=./$dst ;;
|
||||
esac
|
||||
|
||||
# If destination is a directory, append the input filename; won't work
|
||||
# if double slashes aren't ignored.
|
||||
if test -d "$dst"; then
|
||||
dst=$dst/`basename "$src"`
|
||||
fi
|
||||
fi
|
||||
|
||||
# This sed command emulates the dirname command.
|
||||
dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
||||
|
||||
# Make sure that the destination directory exists.
|
||||
|
||||
# Skip lots of stat calls in the usual case.
|
||||
if test ! -d "$dstdir"; then
|
||||
defaultIFS='
|
||||
'
|
||||
IFS="${IFS-$defaultIFS}"
|
||||
|
||||
oIFS=$IFS
|
||||
# Some sh's can't handle IFS=/ for some reason.
|
||||
IFS='%'
|
||||
set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||
IFS=$oIFS
|
||||
|
||||
pathcomp=
|
||||
|
||||
while test $# -ne 0 ; do
|
||||
pathcomp=$pathcomp$1
|
||||
shift
|
||||
if test ! -d "$pathcomp"; then
|
||||
$mkdirprog "$pathcomp" || lasterr=$?
|
||||
# mkdir can fail with a `File exist' error in case several
|
||||
# install-sh are creating the directory concurrently. This
|
||||
# is OK.
|
||||
test ! -d "$pathcomp" && { (exit ${lasterr-1}); exit; }
|
||||
fi
|
||||
pathcomp=$pathcomp/
|
||||
done
|
||||
fi
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
$doit $instcmd "$dst" \
|
||||
&& { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
|
||||
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
|
||||
&& { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
|
||||
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
|
||||
|
||||
else
|
||||
# If we're going to rename the final executable, determine the name now.
|
||||
if test -z "$transformarg"; then
|
||||
dstfile=`basename "$dst"`
|
||||
else
|
||||
dstfile=`basename "$dst" $transformbasename \
|
||||
| sed $transformarg`$transformbasename
|
||||
fi
|
||||
|
||||
# don't allow the sed command to completely eliminate the filename.
|
||||
test -z "$dstfile" && dstfile=`basename "$dst"`
|
||||
|
||||
# Make a couple of temp file names in the proper directory.
|
||||
dsttmp=$dstdir/_inst.$$_
|
||||
rmtmp=$dstdir/_rm.$$_
|
||||
|
||||
# Trap to clean up those temp files at exit.
|
||||
trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
|
||||
trap '(exit $?); exit' 1 2 13 15
|
||||
|
||||
# Move or copy the file name to the temp name
|
||||
$doit $instcmd "$src" "$dsttmp" &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits.
|
||||
#
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
||||
#
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
|
||||
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
|
||||
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
|
||||
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
|
||||
|
||||
# Now remove or move aside any old file at destination location. We
|
||||
# try this two ways since rm can't unlink itself on some systems and
|
||||
# the destination file might be busy for other reasons. In this case,
|
||||
# the final cleanup might fail but the new file should still install
|
||||
# successfully.
|
||||
{
|
||||
if test -f "$dstdir/$dstfile"; then
|
||||
$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
|
||||
|| $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
|
||||
|| {
|
||||
echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
|
||||
(exit 1); exit
|
||||
}
|
||||
else
|
||||
:
|
||||
fi
|
||||
} &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
|
||||
fi || { (exit 1); exit; }
|
||||
done
|
||||
|
||||
# The final little trick to "correctly" pass the exit status to the exit trap.
|
||||
{
|
||||
(exit 0); exit
|
||||
}
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
@ -1,360 +0,0 @@
|
||||
#! /bin/sh
|
||||
# Common stub for a few missing GNU programs while installing.
|
||||
|
||||
scriptversion=2003-09-02.23
|
||||
|
||||
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
if test $# -eq 0; then
|
||||
echo 1>&2 "Try \`$0 --help' for more information"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
run=:
|
||||
|
||||
# In the cases where this matters, `missing' is being run in the
|
||||
# srcdir already.
|
||||
if test -f configure.ac; then
|
||||
configure_ac=configure.ac
|
||||
else
|
||||
configure_ac=configure.in
|
||||
fi
|
||||
|
||||
msg="missing on your system"
|
||||
|
||||
case "$1" in
|
||||
--run)
|
||||
# Try to run requested program, and just exit if it succeeds.
|
||||
run=
|
||||
shift
|
||||
"$@" && exit 0
|
||||
# Exit code 63 means version mismatch. This often happens
|
||||
# when the user try to use an ancient version of a tool on
|
||||
# a file that requires a minimum version. In this case we
|
||||
# we should proceed has if the program had been absent, or
|
||||
# if --run hadn't been passed.
|
||||
if test $? = 63; then
|
||||
run=:
|
||||
msg="probably too old"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
# If it does not exist, or fails to run (possibly an outdated version),
|
||||
# try to emulate it.
|
||||
case "$1" in
|
||||
|
||||
-h|--h|--he|--hel|--help)
|
||||
echo "\
|
||||
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||
|
||||
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
|
||||
error status if there is no known handling for PROGRAM.
|
||||
|
||||
Options:
|
||||
-h, --help display this help and exit
|
||||
-v, --version output version information and exit
|
||||
--run try to run the given command, and emulate it if it fails
|
||||
|
||||
Supported PROGRAM values:
|
||||
aclocal touch file \`aclocal.m4'
|
||||
autoconf touch file \`configure'
|
||||
autoheader touch file \`config.h.in'
|
||||
automake touch all \`Makefile.in' files
|
||||
bison create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||
flex create \`lex.yy.c', if possible, from existing .c
|
||||
help2man touch the output file
|
||||
lex create \`lex.yy.c', if possible, from existing .c
|
||||
makeinfo touch the output file
|
||||
tar try tar, gnutar, gtar, then tar without non-portable flags
|
||||
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||
|
||||
Send bug reports to <bug-automake@gnu.org>."
|
||||
;;
|
||||
|
||||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||
echo "missing $scriptversion (GNU Automake)"
|
||||
;;
|
||||
|
||||
-*)
|
||||
echo 1>&2 "$0: Unknown \`$1' option"
|
||||
echo 1>&2 "Try \`$0 --help' for more information"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
aclocal*)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
|
||||
to install the \`Automake' and \`Perl' packages. Grab them from
|
||||
any GNU archive site."
|
||||
touch aclocal.m4
|
||||
;;
|
||||
|
||||
autoconf)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`${configure_ac}'. You might want to install the
|
||||
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
||||
archive site."
|
||||
touch configure
|
||||
;;
|
||||
|
||||
autoheader)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`acconfig.h' or \`${configure_ac}'. You might want
|
||||
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
||||
from any GNU archive site."
|
||||
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
|
||||
test -z "$files" && files="config.h"
|
||||
touch_files=
|
||||
for f in $files; do
|
||||
case "$f" in
|
||||
*:*) touch_files="$touch_files "`echo "$f" |
|
||||
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
|
||||
*) touch_files="$touch_files $f.in";;
|
||||
esac
|
||||
done
|
||||
touch $touch_files
|
||||
;;
|
||||
|
||||
automake*)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
|
||||
You might want to install the \`Automake' and \`Perl' packages.
|
||||
Grab them from any GNU archive site."
|
||||
find . -type f -name Makefile.am -print |
|
||||
sed 's/\.am$/.in/' |
|
||||
while read f; do touch "$f"; done
|
||||
;;
|
||||
|
||||
autom4te)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is needed, but is $msg.
|
||||
You might have modified some files without having the
|
||||
proper tools for further handling them.
|
||||
You can get \`$1' as part of \`Autoconf' from any GNU
|
||||
archive site."
|
||||
|
||||
file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
|
||||
test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
|
||||
if test -f "$file"; then
|
||||
touch $file
|
||||
else
|
||||
test -z "$file" || exec >$file
|
||||
echo "#! /bin/sh"
|
||||
echo "# Created by GNU Automake missing as a replacement of"
|
||||
echo "# $ $@"
|
||||
echo "exit 0"
|
||||
chmod +x $file
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
bison|yacc)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' $msg. You should only need it if
|
||||
you modified a \`.y' file. You may need the \`Bison' package
|
||||
in order for those modifications to take effect. You can get
|
||||
\`Bison' from any GNU archive site."
|
||||
rm -f y.tab.c y.tab.h
|
||||
if [ $# -ne 1 ]; then
|
||||
eval LASTARG="\${$#}"
|
||||
case "$LASTARG" in
|
||||
*.y)
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
cp "$SRCFILE" y.tab.c
|
||||
fi
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
cp "$SRCFILE" y.tab.h
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if [ ! -f y.tab.h ]; then
|
||||
echo >y.tab.h
|
||||
fi
|
||||
if [ ! -f y.tab.c ]; then
|
||||
echo 'main() { return 0; }' >y.tab.c
|
||||
fi
|
||||
;;
|
||||
|
||||
lex|flex)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified a \`.l' file. You may need the \`Flex' package
|
||||
in order for those modifications to take effect. You can get
|
||||
\`Flex' from any GNU archive site."
|
||||
rm -f lex.yy.c
|
||||
if [ $# -ne 1 ]; then
|
||||
eval LASTARG="\${$#}"
|
||||
case "$LASTARG" in
|
||||
*.l)
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
cp "$SRCFILE" lex.yy.c
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if [ ! -f lex.yy.c ]; then
|
||||
echo 'main() { return 0; }' >lex.yy.c
|
||||
fi
|
||||
;;
|
||||
|
||||
help2man)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified a dependency of a manual page. You may need the
|
||||
\`Help2man' package in order for those modifications to take
|
||||
effect. You can get \`Help2man' from any GNU archive site."
|
||||
|
||||
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
||||
if test -z "$file"; then
|
||||
file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
|
||||
fi
|
||||
if [ -f "$file" ]; then
|
||||
touch $file
|
||||
else
|
||||
test -z "$file" || exec >$file
|
||||
echo ".ab help2man is required to generate this page"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
makeinfo)
|
||||
if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
|
||||
# We have makeinfo, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified a \`.texi' or \`.texinfo' file, or any other file
|
||||
indirectly affecting the aspect of the manual. The spurious
|
||||
call might also be the consequence of using a buggy \`make' (AIX,
|
||||
DU, IRIX). You might want to install the \`Texinfo' package or
|
||||
the \`GNU make' package. Grab either from any GNU archive site."
|
||||
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
||||
if test -z "$file"; then
|
||||
file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
||||
file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
|
||||
fi
|
||||
touch $file
|
||||
;;
|
||||
|
||||
tar)
|
||||
shift
|
||||
if test -n "$run"; then
|
||||
echo 1>&2 "ERROR: \`tar' requires --run"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# We have already tried tar in the generic part.
|
||||
# Look for gnutar/gtar before invocation to avoid ugly error
|
||||
# messages.
|
||||
if (gnutar --version > /dev/null 2>&1); then
|
||||
gnutar "$@" && exit 0
|
||||
fi
|
||||
if (gtar --version > /dev/null 2>&1); then
|
||||
gtar "$@" && exit 0
|
||||
fi
|
||||
firstarg="$1"
|
||||
if shift; then
|
||||
case "$firstarg" in
|
||||
*o*)
|
||||
firstarg=`echo "$firstarg" | sed s/o//`
|
||||
tar "$firstarg" "$@" && exit 0
|
||||
;;
|
||||
esac
|
||||
case "$firstarg" in
|
||||
*h*)
|
||||
firstarg=`echo "$firstarg" | sed s/h//`
|
||||
tar "$firstarg" "$@" && exit 0
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: I can't seem to be able to run \`tar' with the given arguments.
|
||||
You may want to install GNU tar or Free paxutils, or check the
|
||||
command line arguments."
|
||||
exit 1
|
||||
;;
|
||||
|
||||
*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is needed, and is $msg.
|
||||
You might have modified some files without having the
|
||||
proper tools for further handling them. Check the \`README' file,
|
||||
it often tells you about the needed prerequisites for installing
|
||||
this package. You may also peek at any GNU archive site, in case
|
||||
some other package would contain this missing \`$1' program."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
@ -1,150 +0,0 @@
|
||||
#! /bin/sh
|
||||
# mkinstalldirs --- make directory hierarchy
|
||||
|
||||
scriptversion=2004-02-15.20
|
||||
|
||||
# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
|
||||
# Created: 1993-05-16
|
||||
# Public domain.
|
||||
#
|
||||
# This file is maintained in Automake, please report
|
||||
# bugs to <bug-automake@gnu.org> or send patches to
|
||||
# <automake-patches@gnu.org>.
|
||||
|
||||
errstatus=0
|
||||
dirmode=""
|
||||
|
||||
usage="\
|
||||
Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
|
||||
|
||||
Create each directory DIR (with mode MODE, if specified), including all
|
||||
leading file name components.
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>."
|
||||
|
||||
# process command line arguments
|
||||
while test $# -gt 0 ; do
|
||||
case $1 in
|
||||
-h | --help | --h*) # -h for help
|
||||
echo "$usage"
|
||||
exit 0
|
||||
;;
|
||||
-m) # -m PERM arg
|
||||
shift
|
||||
test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
|
||||
dirmode=$1
|
||||
shift
|
||||
;;
|
||||
--version)
|
||||
echo "$0 $scriptversion"
|
||||
exit 0
|
||||
;;
|
||||
--) # stop option processing
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-*) # unknown option
|
||||
echo "$usage" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
*) # first non-opt arg
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
for file
|
||||
do
|
||||
if test -d "$file"; then
|
||||
shift
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
case $# in
|
||||
0) exit 0 ;;
|
||||
esac
|
||||
|
||||
# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and
|
||||
# mkdir -p a/c at the same time, both will detect that a is missing,
|
||||
# one will create a, then the other will try to create a and die with
|
||||
# a "File exists" error. This is a problem when calling mkinstalldirs
|
||||
# from a parallel make. We use --version in the probe to restrict
|
||||
# ourselves to GNU mkdir, which is thread-safe.
|
||||
case $dirmode in
|
||||
'')
|
||||
if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
|
||||
echo "mkdir -p -- $*"
|
||||
exec mkdir -p -- "$@"
|
||||
else
|
||||
# On NextStep and OpenStep, the `mkdir' command does not
|
||||
# recognize any option. It will interpret all options as
|
||||
# directories to create, and then abort because `.' already
|
||||
# exists.
|
||||
test -d ./-p && rmdir ./-p
|
||||
test -d ./--version && rmdir ./--version
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
|
||||
test ! -d ./--version; then
|
||||
echo "mkdir -m $dirmode -p -- $*"
|
||||
exec mkdir -m "$dirmode" -p -- "$@"
|
||||
else
|
||||
# Clean up after NextStep and OpenStep mkdir.
|
||||
for d in ./-m ./-p ./--version "./$dirmode";
|
||||
do
|
||||
test -d $d && rmdir $d
|
||||
done
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
for file
|
||||
do
|
||||
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
|
||||
shift
|
||||
|
||||
pathcomp=
|
||||
for d
|
||||
do
|
||||
pathcomp="$pathcomp$d"
|
||||
case $pathcomp in
|
||||
-*) pathcomp=./$pathcomp ;;
|
||||
esac
|
||||
|
||||
if test ! -d "$pathcomp"; then
|
||||
echo "mkdir $pathcomp"
|
||||
|
||||
mkdir "$pathcomp" || lasterr=$?
|
||||
|
||||
if test ! -d "$pathcomp"; then
|
||||
errstatus=$lasterr
|
||||
else
|
||||
if test ! -z "$dirmode"; then
|
||||
echo "chmod $dirmode $pathcomp"
|
||||
lasterr=""
|
||||
chmod "$dirmode" "$pathcomp" || lasterr=$?
|
||||
|
||||
if test ! -z "$lasterr"; then
|
||||
errstatus=$lasterr
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
pathcomp="$pathcomp/"
|
||||
done
|
||||
done
|
||||
|
||||
exit $errstatus
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
@ -1,130 +0,0 @@
|
||||
#!@PERL@
|
||||
#
|
||||
# Copyright (C) 1999 Kayvan A. Sylvan <kayvan@sylvan.com>
|
||||
# You are free to use and modify this code under the terms of
|
||||
# the GNU General Public Licence version 2 or later.
|
||||
#
|
||||
# Written with assistance from:
|
||||
# Edmar Wienskoski Jr. <edmar-w-jr@technologist.com>
|
||||
# Amir Karger <karger@post.harvard.edu>
|
||||
#
|
||||
# $Id: noweb2lyx.in,v 1.3 2005/06/09 09:58:02 leeming Exp $
|
||||
#
|
||||
# NOTE: This file was automatically generated from noweb2lyx.lyx using noweb.
|
||||
#
|
||||
&usage() if ($#ARGV < 1); # zero or one argument
|
||||
if ($ARGV[0] eq "-pre") {
|
||||
&usage unless ($#ARGV == 2);
|
||||
$input_file = $ARGV[1]; $output_file = $ARGV[2]; $pre_only = 1;
|
||||
} elsif ($ARGV[0] eq "-post") {
|
||||
&usage unless ($#ARGV == 2);
|
||||
$input_file = $ARGV[1]; $output_file = $ARGV[2]; $post_only = 1;
|
||||
} else {
|
||||
&usage unless ($#ARGV == 1);
|
||||
$input_file = $ARGV[0]; $output_file = $ARGV[1];
|
||||
$pre_only = 0; $post_only = 0;
|
||||
}
|
||||
sub setup_files {
|
||||
my($in, $out) = @_;
|
||||
open(INPUT, "<$in") || die "Can not read $in: $!\n";
|
||||
open(OUTPUT, ">$out") || die "Can not write $out: $!\n";
|
||||
}
|
||||
sub usage() {
|
||||
print "Usage: noweb2lyx [-pre | -post] input-file output-file
|
||||
|
||||
If -pre is specified, only pre-processes the input-file for reLyX.
|
||||
Similarly, in the case of -post, post-processes reLyX output.
|
||||
In case of bugs, Email Kayvan Sylvan <kayvan\@sylvan.com>.\n";
|
||||
exit;
|
||||
}
|
||||
if (!$post_only) {
|
||||
if ($pre_only) {
|
||||
&setup_files($input_file, $output_file);
|
||||
} else {
|
||||
$relyx_file = "temp$$";
|
||||
&setup_files($input_file, $relyx_file);
|
||||
}
|
||||
inputline: while(<INPUT>)
|
||||
{
|
||||
if (/^\s*\<\<.*\>\>=/) { # Beginning of a noweb scrap
|
||||
$savedScrap = $_;
|
||||
$endLine = "";
|
||||
scrapline: while (<INPUT>) {
|
||||
last scrapline if /^@\s+/;
|
||||
$savedScrap .= $_;
|
||||
};
|
||||
switch: {
|
||||
if (/^@\s+$/) {$savedScrap .= $_; last switch; }
|
||||
if (/^@\s+%def.*$/) {$savedScrap .= $_; last switch; }
|
||||
if (/^@\s+(.*)$/) {$savedScrap .= "@\n"; $endLine = "$1\n"; }
|
||||
}
|
||||
print OUTPUT "\\begin{reLyXskip}\n";
|
||||
print OUTPUT $savedScrap;
|
||||
print OUTPUT "\\end{reLyXskip}\n\n";
|
||||
print OUTPUT "$endLine";
|
||||
} elsif (/^@\s+(.*)/) { # Beginning of a documentation chunk
|
||||
print OUTPUT $1; # We do not need the ``@'' part
|
||||
} elsif (/\[\[.+\]\]/) { # noweb quoted code
|
||||
s/\[\[.+?\]{2,}/{$&}/g;
|
||||
print OUTPUT;
|
||||
} else {
|
||||
print OUTPUT; # Just let the line pass through
|
||||
}
|
||||
}
|
||||
close(INPUT);
|
||||
close(OUTPUT);
|
||||
}
|
||||
if ((!$pre_only) && (!$post_only)) {
|
||||
open(INPUT, "<$relyx_file") ||
|
||||
die "Can not read $relyx_file: $!\n";
|
||||
$class = "article"; # default if none found
|
||||
parse: while(<INPUT>) {
|
||||
if (/\\docu[m]entclass{(.*)}/) {
|
||||
$class = $1;
|
||||
last parse;
|
||||
}
|
||||
}
|
||||
close(INPUT);
|
||||
$doc_class = "literate-" . $class;
|
||||
die "reLyX returned non-zero: $!\n"
|
||||
if (system("reLyX -c $doc_class $relyx_file"));
|
||||
}
|
||||
if (!$pre_only) {
|
||||
if ($post_only) {
|
||||
&setup_files("$input_file", "$output_file");
|
||||
} else {
|
||||
&setup_files("$relyx_file.lyx", "$output_file");
|
||||
}
|
||||
line: while(<INPUT>)
|
||||
{
|
||||
if (/\\latex latex/) { # Beginning of some latex code
|
||||
if (($line = <INPUT>) =~ /^\s*<</) { # code scrap
|
||||
$savedScrap = "\\layout Scrap\n\n$line";
|
||||
codeline: while (<INPUT>) {
|
||||
$savedScrap .= $_;
|
||||
last codeline if /^@\s+/;
|
||||
};
|
||||
print OUTPUT $savedScrap;
|
||||
slurp: while (<INPUT>) {
|
||||
last slurp if /\\latex /;
|
||||
next slurp if /\\newline/;
|
||||
next slurp if /^\s*$/;
|
||||
warn "confused by line: $_";
|
||||
}
|
||||
} else {
|
||||
# print the \latex latex line + next line
|
||||
print OUTPUT "$_$line";
|
||||
}
|
||||
next line;
|
||||
}
|
||||
if (/\[\[.+\]\]/) { # special code for [[var]]
|
||||
s/\[\[.+?\]{2,}/\n\\latex latex\n$&\n\\latex default\n/g;
|
||||
print OUTPUT;
|
||||
next line;
|
||||
}
|
||||
print OUTPUT; # default
|
||||
}
|
||||
close(INPUT);
|
||||
close(OUTPUT);
|
||||
}
|
||||
system("rm -f $relyx_file*") unless ($post_only || $pre_only);
|
@ -1,81 +0,0 @@
|
||||
#!@PERL@
|
||||
# This file is part of reLyX
|
||||
# Copyright (c) 1998-9 Amir Karger karger@post.harvard.edu
|
||||
# You are free to use and modify this code under the terms of
|
||||
# the GNU General Public Licence version 2 or later.
|
||||
|
||||
############################# reLyX wrapper
|
||||
use strict;
|
||||
use File::Basename;
|
||||
use Cwd 'abs_path';
|
||||
$^W = 1; # same as 'perl -w'
|
||||
|
||||
# Variables to make global, so subroutines can use them
|
||||
use vars qw($lyxdir $lyxname);
|
||||
|
||||
my (@maybe_dir);
|
||||
my $mainscript;
|
||||
my $relyxdir;
|
||||
|
||||
# Do this in a BEGIN block so it's done before the 'use lib' below
|
||||
BEGIN{
|
||||
# Variables may not be assigned before the BEGIN block
|
||||
$mainscript = "reLyXmain.pl";
|
||||
# This points to LyX library dir, e.g. /usr/local/share/lyx
|
||||
$lyxdir = "@LYX_DIR@";
|
||||
# This is just "." if you compiled from the source directory
|
||||
my $srcdir = "@srcdir@";
|
||||
# This is the name of the program, usually just "lyx"
|
||||
$lyxname = "@PACKAGE@";
|
||||
# The name under which reLyX was invoked
|
||||
my $name = $0;
|
||||
# resolve any links to dirname
|
||||
while (defined (readlink($name))) {$name = readlink($name)};
|
||||
my $dir = &dirname($name);
|
||||
|
||||
# Create a list of possible directories to look in. Non-existent directories
|
||||
# are OK, but empty or undefined values will make 'use lib' complain
|
||||
|
||||
# case 1: for developers, e.g. - reLyX and $mainscript in same directory
|
||||
push @maybe_dir, "$dir";
|
||||
# case 2: ran make but not make install.
|
||||
push @maybe_dir, "$dir/$srcdir";
|
||||
# case 3: environment variable LYX_DIR_14x has been set
|
||||
if (exists $ENV{LYX_DIR_14x}) { push @maybe_dir, "$ENV{LYX_DIR_14x}/reLyX"};
|
||||
# case 4: e.g., reLyX in /opt/bin, $mainscript in /opt/share/lyx/reLyX
|
||||
push @maybe_dir, "$dir/../share/$lyxname/reLyX"; # case 4
|
||||
# case 5: LyX/Mac -- reLyX is in a MacOS X application bundle
|
||||
push @maybe_dir, "$dir/../Resources/LyX/reLyX"; # case 5
|
||||
# case 6: configure figured out where $mainscript is
|
||||
push @maybe_dir, "$lyxdir/reLyX";
|
||||
|
||||
# Decide which one is the real directory, based on the existence of
|
||||
# "$dir/$mainscript"
|
||||
my $found=0;
|
||||
foreach $dir (@maybe_dir) {
|
||||
if( -e "$dir/$mainscript" ) {
|
||||
$lyxdir = abs_path("$dir/..");
|
||||
$relyxdir = abs_path($dir);
|
||||
$found = 1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$found) {
|
||||
print "reLyX directory not found.\n";
|
||||
exit(1);
|
||||
} else { ##just for debug purpose, remove for stable version
|
||||
print "reLyX directory is: $relyxdir\n";
|
||||
}
|
||||
|
||||
} # end BEGIN block
|
||||
|
||||
# Now put those directories into @INC
|
||||
use lib $relyxdir;
|
||||
|
||||
# Now run the script. Perl will look in @INC to find the script (and
|
||||
# other modules that $mainscript calls)
|
||||
require $mainscript; # require includes and runs the code...
|
||||
|
||||
exit;
|
||||
############################ end reLyX wrapper
|
@ -1,723 +0,0 @@
|
||||
=head1 NAME
|
||||
|
||||
B<reLyX> - translate well-behaved LaTeX into LyX
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
The simplest way to use B<reLyX> is via the File->Import command in LyX. (This
|
||||
option is available starting with version 1.0.0.) That runs B<reLyX> on
|
||||
the given file and loads the resulting file into LyX. You should try that
|
||||
first, and call it from the command line only if you need to use more
|
||||
complicated options.
|
||||
|
||||
B<reLyX> [ B<-c> I<textclass> ] [ B<-df> ] [ B<-o> I<outputdir> ] [B<-n>]
|
||||
S<[ B<-r> I<renv1>[,I<renv2>...]]> S<[ B<-s> I<sfile1>[,I<sfile2>...]]>
|
||||
F<inputfile>
|
||||
|
||||
B<reLyX> B<-p> B<-c> I<textclass> [ B<-df> ] [ B<-o> I<outputdir> ]
|
||||
S<[ B<-r> I<renv1>[,I<renv2>...]]> S<[ B<-s> I<sfile1>[,I<sfile2>...]]>
|
||||
F<inputfiles>
|
||||
|
||||
B<reLyX> B<-h>
|
||||
|
||||
=head1 OPTIONS
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<-c>
|
||||
|
||||
Class. By default, when B<reLyX> sees a C<\documentclass{foo}> command, it
|
||||
creates a file of textclass "foo" and reads the LyX layout file for that class
|
||||
(something like /usr/local/share/lyx/layouts/foo.layout OR
|
||||
B<HOME>/.lyx/layouts/foo.layout). Use B<-c> to declare a different textclass
|
||||
(and read a different layout file).
|
||||
|
||||
=item B<-d>
|
||||
|
||||
Debug. By default, B<reLyX> gives sparse output and deletes the temporary files
|
||||
which were created during translation. Using the B<-d> flag will create much
|
||||
more output (both to stdout and stderr) and leave the temporary files around.
|
||||
|
||||
=item B<-f>
|
||||
|
||||
Force. B<reLyX> will not run if the .lyx file it would generate already exists
|
||||
Use the B<-f> option (carefully) to clobber any existing files.
|
||||
|
||||
=item B<-h>
|
||||
|
||||
Help. Print out usage information and quit.
|
||||
|
||||
=item B<-n>
|
||||
|
||||
Noweb. Translate a noweb (aka literate programming) file. This should be
|
||||
(almost?) equivalent to running "noweb2lyx foo.tex foo.lyx". This option
|
||||
requires the B<-c> option.
|
||||
|
||||
=item B<-o>
|
||||
|
||||
Output directory. With this option, all temporary files and LyX output files
|
||||
(for the given input file, for any included files, or for any file fragments
|
||||
given with the B<-p> option) will be put into I<outputdir>. Otherwise, for
|
||||
each file F<dir/foo.tex>, the temporary files and the LyX output file will be
|
||||
created in F<dir>. This can be useful if a file includes files from other
|
||||
directories which you want to consolidate in one directory, or if you don't
|
||||
have write permission on the directory the LaTeX files are in.
|
||||
|
||||
=item B<-p>
|
||||
|
||||
Partial file. The input files are LaTeX fragments, with no preamble matter or
|
||||
C<\begin{document}> commands. This option requires the B<-c> option, since there
|
||||
are no C<\documentclass> commands in the files B<reLyX> is translating. When
|
||||
using this option, you can translate more than one file, as long as all files
|
||||
are the same class. The LyX file created by B<reLyX> can be included in an
|
||||
existing LyX file using the "Include LyX File" command from LyX's Insert menu.
|
||||
|
||||
=item B<-r>
|
||||
|
||||
Regular environments (see L<"Syntax Files">). If you give more than one
|
||||
environment, separate them with commas (not spaces). You'll probably need to
|
||||
quote the environment list, especially if it has asterisk environments (foo*)
|
||||
in it. If you use this command often, considering creating a personal syntax
|
||||
file.
|
||||
|
||||
=item B<-s>
|
||||
|
||||
Syntax files. Input (one or more quoted, comma-separated) syntax files to read
|
||||
in addition to the default. (see L<"Syntax Files"> for details).
|
||||
|
||||
=back
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
=head2 Introduction
|
||||
|
||||
B<reLyX> will create a LyX file F<dir/foo.lyx> from the LaTeX file
|
||||
F<dir/foo.tex> (unless the B<-o> option is used).
|
||||
|
||||
Suffixes .tex, .ltx and .latex are supported. If F<inputfile>
|
||||
does not exist and does not have one of these suffixes, B<reLyX> will try to
|
||||
translate F<inputfile.tex>. (This is similar to the behavior of LaTeX.)
|
||||
|
||||
The purpose of B<reLyX> is to translate I<well-behaved> LaTeX2e into LyX. If
|
||||
your LaTeX file doesn't compile---or if you do weird things, like redefining
|
||||
standard LaTex commands---it may choke. LaTeX209 will often be translated
|
||||
correctly, but it's not guaranteed.
|
||||
|
||||
B<reLyX> has some bugs and lacks a few features. However, its main goals are:
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
Get through a well-behaved LaTeX2e file without crashing
|
||||
|
||||
=item *
|
||||
|
||||
Translate a lot of that file.
|
||||
|
||||
=item *
|
||||
|
||||
Localize the parts that can't be translated and copy them in TeX mode
|
||||
|
||||
=back 4
|
||||
|
||||
It achieves these main goals pretty well on most files.
|
||||
|
||||
There are many improvements that can and will be made to B<reLyX> in the
|
||||
future. However, we wanted to get B<reLyX> out there early on, to make
|
||||
it easier for new LyX users to read in their existing LaTeX files.
|
||||
|
||||
=head2 Usage
|
||||
|
||||
Here's a more lengthy description of what you should do to translate a LaTeX
|
||||
document into LyX.
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
Run B<reLyX>.
|
||||
|
||||
B<reLyX> will inform you of its progress and give any warnings to stderr, so if
|
||||
you don't want any output at all, try (in csh) 'reLyX foo.tex >& /dev/null'.
|
||||
You should NOT redirect standard output to F<foo.lyx>.
|
||||
|
||||
=item *
|
||||
|
||||
Run LyX (version 0.12 or 1.0 or later) on the resulting .lyx file.
|
||||
|
||||
In theory, most of the file will have been translated, and anything that's
|
||||
untranslatable will be highlighted in red (TeX mode). In theory, LyX will be
|
||||
able to read in the file, and to create printed documents from it, because all
|
||||
that untranslated red stuff will be passed directly back to LaTeX, which LyX
|
||||
uses as a backend. Unfortunately, reality doesn't always reflect theory. If
|
||||
B<reLyX> crashes, or LyX cannot read the generated LyX file, see L</BUGS>,
|
||||
or the F<BUGS> file.
|
||||
|
||||
=item *
|
||||
|
||||
Change things that are highlighted in red (TeX mode) by hand in LyX.
|
||||
|
||||
As mentioned above, you should be able to print out the LyX file even without
|
||||
doing this. However, changing a command in TeX mode to the corresponding LyX
|
||||
object will allow you to take advantage of LyX's WYSIWYM editing.
|
||||
|
||||
B<reLyX> is not guaranteed to create a LyX file which generates exactly the same
|
||||
output as the LaTeX file, but it should come close. B<relyX> will generally err
|
||||
on the side of translating less to ensure that dvi or ps files are accurate,
|
||||
even though this leads to more "evil red text" and less WYSIWYM.
|
||||
|
||||
=item *
|
||||
|
||||
PROOFREAD THE DOCUMENT!!
|
||||
|
||||
I'm sure you were planning on doing this anyway, but it's particularly
|
||||
important after translating a LaTeX document. B<reLyX> is, at least now, better
|
||||
at "macro-translating" (translating the whole document) than
|
||||
"micro-translating" (translating every little detail). For example, you may see
|
||||
extra spaces or deleted spaces. Space handling has improved, but it's
|
||||
not perfect.
|
||||
|
||||
=back
|
||||
|
||||
=head2 What reLyX Can Handle
|
||||
|
||||
B<reLyX> understands many LaTeX commands. It will translate:
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
regular text, including mini-commands like ~, '', C<\@>, C<\TeX>, as well as
|
||||
accented characters like C<\'{a}>, and the special cases ?` and !`
|
||||
|
||||
=item *
|
||||
|
||||
title commands like C<\author>, C<\date>, C<\title>, C<\thanks> and the
|
||||
abstract environment
|
||||
|
||||
=item *
|
||||
|
||||
heading commands like C<\section> including starred commands (C<\section*>)
|
||||
|
||||
=item *
|
||||
|
||||
Environments: quote, quotation, and verse; center, flushright, and flushleft
|
||||
|
||||
=item *
|
||||
|
||||
itemize, enumerate, and description environments, and their C<\item> commands.
|
||||
Also, well-behaved nested lists
|
||||
|
||||
=item *
|
||||
|
||||
cross-referencing commands: C<\ref>, C<\pageref>, C<\label>, and C<\cite>
|
||||
|
||||
=item *
|
||||
|
||||
C<\footnote> and C<\margin>
|
||||
|
||||
=item *
|
||||
|
||||
font-changing commands including C<\em>, C<\emph>, C<\textit>, and
|
||||
corresponding commands to change family, size, series, and shape
|
||||
|
||||
=item *
|
||||
|
||||
C<\input{foo}> (or C<\input{foo.blah}>) and C<\include{foo}>. Plain TeX
|
||||
C<\input> command "C<\input foo.tex>" is also supported.
|
||||
|
||||
=item *
|
||||
|
||||
tabular environment, and commands that go inside it like C<\hline>, C<\cline>,
|
||||
and C<\multicolumn> (but see below)
|
||||
|
||||
=item *
|
||||
|
||||
float environments table and table*, as well as C<\caption> commands within
|
||||
them
|
||||
|
||||
=item *
|
||||
|
||||
float environments figure and figure*, as well as graphics inclusion commands
|
||||
\epsf, \epsffile, \epsfbox, \epsfxsize, \epsfig, \psfig, and \includegraphics.
|
||||
Both the graphics and graphicx forms of \includegraphics are supported.
|
||||
Note, however, that many figures will not be translatable into LyX. See
|
||||
the section on "What LyX Can't Handle" below.
|
||||
|
||||
=item *
|
||||
|
||||
thebibliography environment and C<\bibitem> command, as well as BibTeX's
|
||||
C<\bibliography> and C<\bibliographystyle> commands
|
||||
|
||||
=item *
|
||||
|
||||
miscellaneous commands: C<\hfill>, C<\>C<\>, C<\noindent>, C<\ldots>...
|
||||
|
||||
=item *
|
||||
|
||||
documentclass-specific environments (and some commands) which can be
|
||||
translated to LyX layouts
|
||||
|
||||
=item *
|
||||
|
||||
arguments to certain untranslatable commands (e.g. C<\mbox>)
|
||||
|
||||
=back
|
||||
|
||||
Some of this support may not be 100% yet. See below for details
|
||||
|
||||
B<reLyX> copies math (almost) verbatim from your LaTeX file. Luckily, LyX reads
|
||||
in LaTeX math, so (almost) any math which is supported by LyX should work just
|
||||
fine. A few math commands which are not supported by LyX will be replaced with
|
||||
their equivalents, e.g., C<\to> is converted to C<\rightarrow>. See
|
||||
L<"Syntax Files"> for more details.
|
||||
|
||||
B<reLyX> will also copy any preamble commands (i.e., anything before
|
||||
C<\begin{document}>) verbatim, so fancy stuff you've got in your preamble
|
||||
should be conserved in dvi and printed documents, although it will not of
|
||||
course show up in the LyX window. Check Layout->LaTeX Preamble to make sure.
|
||||
|
||||
=head2 What reLyX Can't Handle --- But it's OK
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
tabular* tables
|
||||
|
||||
=item *
|
||||
|
||||
minipages
|
||||
|
||||
=item *
|
||||
|
||||
spacing commands (C<\vspace>, C<\pagebreak>, C<\par>, ...)
|
||||
|
||||
=item *
|
||||
|
||||
C<\centering>, C<\raggedleft>, C<\raggedright>
|
||||
|
||||
=item *
|
||||
|
||||
C<\verb> and verbatim environment. B<reLyX> is careful to copy I<exactly> in
|
||||
this case, including comments and whitespace.
|
||||
|
||||
=item *
|
||||
|
||||
some unknown (e.g., user-defined) environments and commands
|
||||
|
||||
=back
|
||||
|
||||
B<reLyX> copies unknown commands, along with their arguments, verbatim into the
|
||||
LyX file. Also, if it sees a C<\begin{foo}> where it doesn't recognize the
|
||||
"foo" environment, it will copy verbatim until it sees C<\end{foo}> (unless
|
||||
you use the B<-r> option). Hopefully, then, most of these unknown commands
|
||||
won't cause B<reLyX> to break; they'll merely require you to do some editing
|
||||
once you've loaded the file up in LyX. That should be less painful than
|
||||
editing either the .tex or the .lyx file using a text editor.
|
||||
|
||||
=head2 What reLyX Handles Badly --- aka BUGS
|
||||
|
||||
Since B<reLyX> is relatively new, it's got a number of problems. As it
|
||||
matures, these bugs will be squished.
|
||||
|
||||
If B<reLyX> is choking on something, or LyX can't read it after B<reLyX>
|
||||
translates it, the best thing to do is to put C<\begin{reLyXskip}> before the
|
||||
offending text, and C<\end{reLyXskip}> after it. I call this a "skip" block.
|
||||
B<reLyX> will copy this block exactly, in TeX mode. Then edit the resulting
|
||||
LyX file, and translate the unknown stuff by hand. The reLyXskip environment
|
||||
is magical; the C<\begin> and C<\end> commands will not be put into the LyX
|
||||
file.
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
"Exact" copying of unknown environments and commands isn't quite exact.
|
||||
Specifically, newlines and comments may be lost. This will yield ugly LyX, but
|
||||
in almost all cases the output will be the same. However, certain parts of the
|
||||
file will be copied perfectly, including whitespace and comments. This
|
||||
includes: the LaTeX preamble, verbatim environments and C<\verb> commands, and
|
||||
skip blocks.
|
||||
|
||||
=item *
|
||||
|
||||
B<reLyX> translates only a few options to the C<\documentclass> command.
|
||||
(Specifically 1[012]pt, [letter|legal|executive|a4|a5|b5]paper,
|
||||
[one|two]side, landscape, and [one|two]column.) Other options are placed in
|
||||
the "options" field in the Layout->Document popup.
|
||||
|
||||
More importantly, B<reLyX> doesn't translate C<\usepackage> commands, margin
|
||||
commands, C<\newcommands>, or, in fact, anything else from the preamble. It
|
||||
simply copies them into the LaTeX preamble. If you have margin commands in
|
||||
your preamble, then the LyX file will generate the right margins. However,
|
||||
these margins will override any margins you set in the LyX Layout->Paper
|
||||
popup. So you should remove the options from the preamble
|
||||
(Layout->Latex Preamble) to be safe. The same goes for setting your language
|
||||
with babel, C<\inputencoding>, C<\pagestyle>, etc.
|
||||
|
||||
=item *
|
||||
|
||||
The foil class has a couple bugs. B<reLyX> may do weird things with optional
|
||||
arguments to C<\foilhead> commands. Also, it may handle C<\begin{dinglist}>
|
||||
incorrectly (although the stuff in the environment should translate normally).
|
||||
|
||||
=back
|
||||
|
||||
Less significant bugs can be found in the F<BUGS> file.
|
||||
|
||||
B<reLyX> is hopefully rather robust. As mentioned above, it may not translate
|
||||
your file perfectly, but it shouldn't crash. If it does crash---and the
|
||||
problem is not one of those mentioned above or in the F<BUGS> file---see
|
||||
L<"Bug Reports">.
|
||||
|
||||
=head2 What LyX Can't Handle
|
||||
|
||||
LyX itself is missing a couple features, such that even if B<reLyX> translates
|
||||
things perfectly, LyX may still have trouble reading it. If you really need
|
||||
these features, you can export your final document as LaTeX, and put them
|
||||
back in. See F<BUGS> for more details on these bugs.
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
For a number of commands, LyX does not support the optional argument. Examples
|
||||
include C<\chapter> (and other sectioning commands), and C<\\>.
|
||||
B<reLyX> will automatically discard the optional arguments with a warning to
|
||||
stdout. LyX also ignores the width argument for the thebibliography
|
||||
environment.
|
||||
|
||||
=item *
|
||||
|
||||
Centering (or right or left justifying) works on full paragraphs.
|
||||
|
||||
=item *
|
||||
|
||||
LyX support for tables isn't perfect. For complicated tables, use a "skip"
|
||||
block, so that they will be copied in TeX mode.
|
||||
|
||||
=item *
|
||||
|
||||
The LyX math editor can't handle the AMS-LaTeX math environments align, split,
|
||||
etc. So those environments will be copied in TeX mode. You can change
|
||||
equation* environments to the exactly equivalent displaymath, and then they
|
||||
will be translated correctly.
|
||||
|
||||
=item *
|
||||
|
||||
Lyx does not support clipping or bounding boxes for included graphics files.
|
||||
Therefore, many graphics inclusion commands will be untranslatable, and
|
||||
copied in TeX mode. In certain cases, you might be able to translate the
|
||||
command by hand within LyX---for example, if you included a bounding box but
|
||||
the bounding box is already in the .eps file.
|
||||
|
||||
LyX only allows figures to have sizes in in,cm, or percentages of \textwidth
|
||||
or \textheight (or \columnwidth). B<reLyX> will translate from other units, like
|
||||
pt or mm, but it cannot translate other lengths (e.g. if you wanted to scale a
|
||||
figure to size \topmargin for some reason). B<reLyX> will copy figures with
|
||||
untranslatable sizes in TeX mode. Again, you might be able to fix that within
|
||||
LyX.
|
||||
|
||||
=back
|
||||
|
||||
=head2 The Future of reLyX
|
||||
|
||||
In the future, more commands and environments will be supported by B<reLyX>.
|
||||
Bugs will be eradicated.
|
||||
|
||||
See the TODO file for details.
|
||||
|
||||
=head1 EXAMPLES
|
||||
|
||||
reLyX B<-df> B<-o> "my/dir" B<-r> "myenv" foo.tex > foo.debug
|
||||
|
||||
The above will create a file my/dir/foo.lyx from foo.tex, overwriting if
|
||||
necessary. When it finds a C<\begin{myenv} ... \end{myenv}> block, it will
|
||||
translate the stuff within the block, but copy the C<\begin> and C<\end>
|
||||
commands in TeX mode. Finally, I'm going to keep the temporary files around
|
||||
(they will also be in my/dir/) and output lots of debugging information into
|
||||
the file foo.debug.
|
||||
|
||||
reLyX B<-n> B<-c> "literate-article" foo.tex
|
||||
|
||||
The above will change a noweb document into a LyX literate-article
|
||||
document. A user would do this if the noweb document had documentclass
|
||||
article.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
=head2 Bug Reports
|
||||
|
||||
If B<reLyX> is crashing or otherwise acting strangely---in ways
|
||||
other than those described in L<"BUGS"> or the F<BUGS> file---then please run
|
||||
B<reLyX -d>. That will allow you to figure out where in the reLyXing process
|
||||
it crashed. That, in turn, will allow you to write a better bug report, which
|
||||
will allow the developers to fix it more quickly and easily.
|
||||
|
||||
Bug reports should be sent to the LyX developers' mailing list. Its address
|
||||
is currently lyx-devel@lists.lyx.org, but you can check the LyX home page,
|
||||
http://www.lyx.org if that bounces. If you are running B<reLyX> on a huge file,
|
||||
please do not send all of the output in your bug report. Just include the last
|
||||
ten or twenty lines of output, along with the piece of the LaTeX file it
|
||||
crashed on. Or, even better, attach a small but complete file which causes
|
||||
the same problem as your original file.
|
||||
|
||||
=head2 Implementation Details:
|
||||
|
||||
B<reLyX> makes several "passes" in order to translate a TeX file. On each pass,
|
||||
it creates one or two files.
|
||||
|
||||
=over 4
|
||||
|
||||
=item Pass 0
|
||||
|
||||
Before doing anything, read the syntax file (or files).
|
||||
|
||||
=item Pass 1a
|
||||
|
||||
Split preamble (anything before a C<\begin{document}> command) off the rest
|
||||
of the file. It saves the two pieces in separate files. This is necessary
|
||||
because there may be very strange stuff in a preamble. It also ignores
|
||||
anything after the C<\end{document}>, on the assumption that it isn't LaTeX.
|
||||
|
||||
=item Pass 1b
|
||||
|
||||
Translate the preamble. Currently, that just means translating the
|
||||
C<\documentclass> command and copying the rest exactly into the LyX preamble.
|
||||
|
||||
Once you know what class the document is, read the LyX layout file for that
|
||||
class.
|
||||
|
||||
=item Pass 2
|
||||
|
||||
"Clean" the TeX file, generating slightly stricter LaTeX. This includes:
|
||||
|
||||
=over 8
|
||||
|
||||
=item *
|
||||
|
||||
Change, e.g., x^2 to the equivalent but clearer x^{2}
|
||||
|
||||
=item *
|
||||
|
||||
Removing optional arguments that LyX can't handle (e.g., from C<\chapter>)
|
||||
|
||||
=item *
|
||||
|
||||
Changing C<{\em foo}> to C<\emph{foo}>, etc. This is necessary because LyX
|
||||
always writes out the non-local forms anyway. This should very rarely make a
|
||||
difference.
|
||||
|
||||
=back
|
||||
|
||||
=item Pass 3
|
||||
|
||||
Translate LaTeX text, commands, and environments to LyX.
|
||||
|
||||
=item Pass 4
|
||||
|
||||
Put the two pieces back together, and do some final tweaking, to generate the
|
||||
LyX file
|
||||
|
||||
=back
|
||||
|
||||
If there are any C<\input> or C<\include> commands, B<reLyX> will loop back to
|
||||
the beginning and translate those. It assumes that the included files are the
|
||||
same class as the main file, and that they have no preamble matter. (If you
|
||||
have an C<\input> command in the preamble of a file, the command will be
|
||||
copied exactly into the LaTeX preamble portion of the LyX file, so the
|
||||
included file won't be translated.) So when translating included files, it
|
||||
skips passes 0 and 1.
|
||||
|
||||
If B<reLyX> doesn't find a file you wanted to include, it will give a warning,
|
||||
but will continue to translate any files it does find.
|
||||
|
||||
=head2 Layout Files
|
||||
|
||||
B<reLyX> reads a LyX layout file to know how to handle LaTeX environments and
|
||||
commands which get translated to LyX layouts. This file will include all
|
||||
"normal" non-math environments (i.e., including quote and itemize, but not
|
||||
tabular, minipage, and some other fancy environments), and commands like
|
||||
C<\section> and C<\title>. If you want to reLyX a class that doesn't have an
|
||||
existing layout file, then you'll have to create a layout file. But you have
|
||||
to do this anyway, in order to LyX the file, since LyX depends on layout files
|
||||
to know how to display and process its files. Check the LyX documentation for
|
||||
help with this task (which can be hard or easy, depending on the class you
|
||||
want to create a layout file for.) If your class is quite similar to a class
|
||||
that has a layout file, then consider using the B<-c> option.
|
||||
|
||||
=head2 Syntax Files
|
||||
|
||||
B<reLyX> always reads at least one syntax file, called the default syntax file.
|
||||
B<reLyX> will read your personal syntax file if it exists; otherwise it will
|
||||
read the system-wide file. B<reLyX> will read additional syntax files if you
|
||||
specify them with the B<-s> option. (These extra files should have the same
|
||||
format as the default file, but will tend to be shorter, since they only have
|
||||
to specify extra commands not found in the default file.) A syntax file tells
|
||||
B<reLyX> a few things.
|
||||
|
||||
First, it describes the syntax of each command, that is, how many required
|
||||
arguments and how many optional arguments the command takes. Knowing this
|
||||
makes it easier for B<reLyX> to copy (in TeX mode) commands that it doesn't
|
||||
know how to translate. The syntax file simply has a command, followed by
|
||||
braces or brackets describing its arguments in the correct order. For example,
|
||||
a syntax file entry C<\bibitem[]{}> means that the C<\bibitem> command takes
|
||||
an optional argument followed by a required one, while the entry C<\bf>
|
||||
means that the C<\bf> command takes no arguments at all. When B<reLyX>
|
||||
encounters a token that it doesn't know how to translate into LyX, it will
|
||||
copy the token---along with the correct number of arguments---exactly. If the
|
||||
token is not in the syntax file, then B<reLyX> just copies as many arguments
|
||||
as it finds. This means that it may copy too much. But since the user can
|
||||
specify additional syntax files, that shouldn't happen often.
|
||||
|
||||
Some commands that cannot be translated to LyX, like C<\mbox>, have as one of
|
||||
their arguments regular LaTeX text. If the string "translate" is put into an
|
||||
argument of an (untranslatable) command in the syntax file, then B<reLyX> will
|
||||
translate that argument instead of copying it verbatim. So, for example, the
|
||||
default syntax file has C<\raisebox{}[][]{translate}>. This means that the
|
||||
C<\raisebox> command and the first argument (and optional arguments if they
|
||||
exist) are copied in TeX mode, but the last argument (which may contain math,
|
||||
complicated LaTeX, other untranslatable commands, etc.) will be translated
|
||||
into LyX. You can't use "translate" on optional arguments.
|
||||
|
||||
User-defined syntax files are allowed to define new commands and
|
||||
their syntax, or override the number of arguments for a command given in the
|
||||
default syntax file. (E.g., if you're using a style that gives an extra
|
||||
argument to some command...) However, this will only be useful for commands
|
||||
copied in TeX mode. Commands which are actually translated by B<reLyX> (like
|
||||
C<\item>) have their argument syntax hard-coded. The hard-coded commands are
|
||||
identified in the default syntax file.
|
||||
|
||||
Second, the syntax file describes any "regular environments". Usually, an
|
||||
entire unknown environment will be copied in TeX mode. If you define a regular
|
||||
environment "foo", though, then only the C<\begin{foo}> and C<\end{foo}>
|
||||
commands will be copied in TeX mode; the text within the environment will be
|
||||
treated (i.e., translated) by B<reLyX> as regular LaTeX, rather than being
|
||||
copied into TeX mode. Don't try to declare "tabbing" and "picture" as regular
|
||||
environments, as the text within those environments will confuse B<reLyX>; use
|
||||
this capability for new environments you create that have plain text or math
|
||||
or simple commands in them. You also can't declare unknown math environments
|
||||
(like equation*) as regular environments, either, since the LyX math editor
|
||||
won't understand them. The names of regular environments appear,
|
||||
whitespace-separated, between C<\begin{reLyXre}> and C<\end{reLyXre}>
|
||||
statements in the syntax file. (If you have a regular environment which you
|
||||
won't use very often, you can use the B<-r> option rather than writing a
|
||||
syntax file.)
|
||||
|
||||
=head2 Miscellaneous
|
||||
|
||||
You need Perl version 5.002 or later to run B<reLyX>. <plug> If you don't have
|
||||
Perl, you should get it anyway (at http://www.perl.com), because it's a really
|
||||
useful tool for pretty much anything. </plug>
|
||||
|
||||
=head1 DIAGNOSTICS
|
||||
|
||||
B<reLyX> should always explain why it crashes, if it crashes. Some diagnostics
|
||||
may be very technical, though, if they come from the guts of the code.
|
||||
B<reLyX> gives much more information while running if you use the B<-d> option,
|
||||
but you shouldn't need that unless something goes wrong.
|
||||
|
||||
When it's finished, B<reLyX> will tell you if it finished successfully or
|
||||
died due to some error.
|
||||
|
||||
=head1 WARNINGS
|
||||
|
||||
Always keep a copy of your original LaTeX files either under a different
|
||||
name or in a different directory. There are a couple ways in which using LyX
|
||||
could lead to overwriting the original LaTeX file.
|
||||
|
||||
If you import foo.tex to create foo.lyx, then edit foo.lyx and want to
|
||||
re-export it, note that it will overwrite the original foo.tex. (LyX will ask
|
||||
you if you want to overwrite it.)
|
||||
|
||||
If you have the \use_tempdir variable set to false in your lyxrc, then LyX
|
||||
will create its temporary files in your current directory, which means your
|
||||
LaTeX original may be overwritten (without a warning from LyX) when you "view
|
||||
dvi" or print the LyX document.
|
||||
|
||||
=head1 FILES
|
||||
|
||||
=over 4
|
||||
|
||||
=item F<MY_LYXDIR>/layouts/*.layout
|
||||
|
||||
User's personal layout files for document classes
|
||||
|
||||
=item F<MY_LYXDIR>/reLyX/syntax.default
|
||||
|
||||
User's personal syntax file
|
||||
|
||||
=item F<LIBDIR>/layouts/*.layout
|
||||
|
||||
System-wide layout files for document classes
|
||||
|
||||
=item F<LIBDIR>/reLyX/syntax.default
|
||||
|
||||
System-wide LaTeX syntax file
|
||||
|
||||
=back
|
||||
|
||||
|
||||
F<LIBDIR> is the system-wide LyX directory, usually something like
|
||||
/usr/local/share/lyx/. F<MY_LYXDIR> is your personal LyX directory, something
|
||||
like .lyx/ in your home directory.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
lyx(1), latex(1)
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
Copyright (c) 1998-9 Amir Karger (karger@post.harvard.edu)
|
||||
|
||||
Code contributors:
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
John Weiss wrote the original CleanTeX pass.
|
||||
|
||||
=item *
|
||||
|
||||
Etienne Grossmann
|
||||
|
||||
=item *
|
||||
|
||||
JosE<eacute> AbE<iacute>lio Oliveira Matos
|
||||
|
||||
=item *
|
||||
|
||||
David Suarez de Lis
|
||||
|
||||
=item *
|
||||
|
||||
Kayvan Aghaiepour Sylvan added noweb stuff and wrote noweb2lyx
|
||||
|
||||
=back
|
||||
|
||||
Other contributors:
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
Jean-Marc Lasgouttes worked on the wrapper script and offered lots of bug
|
||||
reports, advice, and feature suggestions.
|
||||
|
||||
=item *
|
||||
|
||||
Asger K. Alstrup Nielsen and Marc Pavese provided advice.
|
||||
|
||||
=item *
|
||||
|
||||
Various members of the LyX developers' and users' lists provided bug reports
|
||||
and feature suggestions.
|
||||
|
||||
=back
|
||||
|
||||
B<reLyX> uses a modified version the Perl TeX parser Text::TeX package written
|
||||
by Ilya Zakharevich (ilya@math.ohio-state.edu), available on CPAN.
|
||||
|
@ -1,363 +0,0 @@
|
||||
#!/usr/bin/perl -w
|
||||
#
|
||||
# Main code for reLyX - the LaTeX to LyX translator
|
||||
#
|
||||
# reLyX is Copyright (c) 1998-9 Amir Karger karger@post.harvard.edu
|
||||
# You are free to use and modify this code under the terms of
|
||||
# the GNU General Public Licence version 2 or later.
|
||||
#
|
||||
# This code usually gets called by the reLyX wrapper executable
|
||||
#
|
||||
# $Id: reLyXmain.pl,v 1.6 2004/10/28 14:35:19 leeming Exp $
|
||||
#
|
||||
|
||||
require 5.002; # Perl 5.001 doesn't work. Perl 4 REALLY doesn't work.
|
||||
|
||||
# Standard Perl Library modules
|
||||
use strict; # must define all variables, no barewords, no hard references
|
||||
|
||||
# Variables from other files, like Getopt::Std, OR vars that need to be global
|
||||
# $opt_f etc. - command line options set by Getop::Std::getopts
|
||||
# $dot_lyxdir - the user's personal .lyx directory
|
||||
# $Success - keep track of whether reLyX finished successfully or died
|
||||
# @File_List - the list of files to translate. Initially this is just
|
||||
# the file input by the user, but \input or \include commands
|
||||
# will add to it.
|
||||
use vars qw($opt_c $opt_d $opt_f $opt_h $opt_n $opt_o $opt_p $opt_r $opt_s
|
||||
$dot_lyxdir
|
||||
$Success
|
||||
@File_List
|
||||
@Suffix_List
|
||||
$LyXFormat
|
||||
);
|
||||
use Cwd; # getcwd etc.
|
||||
use Getopt::Std; # read in command-line options
|
||||
use File::Basename; # &basename and &dirname
|
||||
|
||||
# Modules containing subroutines for reLyX
|
||||
# Note that @INC must include the directory that these modules are in. The
|
||||
# reLyX wrapper takes care of that.
|
||||
use Text::TeX; # TeX parser package
|
||||
use ReadCommands; # package to read LaTeX commands' syntax from a file
|
||||
use MakePreamble; # package to split off LaTeX preamble & translate it to LyX
|
||||
use CleanTeX; # package to clean TeX file for Lyxifying
|
||||
use BasicLyX; # package to translate clean TeX to Basic LyX
|
||||
use LastLyX; # package to print out LyX file once all translation is done
|
||||
|
||||
|
||||
# Hack to allow running reLyX without the wrapper
|
||||
if (!defined($lyxdir)) {$lyxdir = "/usr/local/share/lyx"}
|
||||
if (!defined($lyxname)) {$lyxname = "lyx"}
|
||||
# there's a use vars in the wrapper, so we only need these if running w/out it
|
||||
use vars qw($lyxdir $lyxname);
|
||||
|
||||
# variables that a user might want to change
|
||||
@Suffix_List = '\.(ltx|latex|tex)'; # allowed suffixes for LaTeX file
|
||||
$LyXFormat = "2.15"; #What to print in \lyxformat command in .lyx file
|
||||
my $syntaxname = "syntax.default"; # name of the default syntax file
|
||||
$dot_lyxdir = $ENV{'HOME'} . "/.$lyxname"; # personal .lyx directory
|
||||
|
||||
# This variable tells us if the program died or exited happily
|
||||
BEGIN{$Success = 0}
|
||||
|
||||
##############################################################################
|
||||
# MAIN
|
||||
#
|
||||
|
||||
# Print welcome message including version info
|
||||
my $version_info = '$Date: 2004/10/28 14:35:19 $'; # RCS puts checkin date here
|
||||
$version_info =~ s&.*?(\d+/\d+/\d+).*&$1&; # take out just the date info
|
||||
warn "reLyX, the LaTeX to LyX translator. Revision date $version_info\n\n";
|
||||
|
||||
# Usage information
|
||||
my $Usage_Short = <<"ENDSHORTUSAGE";
|
||||
|
||||
|
||||
USAGE:
|
||||
$0 [ -c textclass ] [ -fd ] [ -o outputdir ]
|
||||
[ -r renv1[,renv2...]] [ -s sfile1[,sfile2...]] inputfile
|
||||
|
||||
$0 -p -c textclass [ -fd ] [ -o outputdir ]
|
||||
[ -r renv1[,renv2...]] [ -s sfile1[,sfile2...]] inputfile(s)
|
||||
|
||||
$0 -h (to get more usage information)
|
||||
|
||||
ENDSHORTUSAGE
|
||||
|
||||
my $Usage_Long = $Usage_Short . <<"ENDLONGUSAGE";
|
||||
-c which textclass this file is (required with -p)
|
||||
Overrides \\documentclass command, if one exists
|
||||
-d print lots of debug information & save temporary files
|
||||
-f force destruction of existing lyx file or temporary files
|
||||
-h print this message and quit
|
||||
-n convert a noweb file to a literate document (requires -c)
|
||||
-o output all LyX files to directory "outputdir"
|
||||
Otherwise, LyX file is created in directory the LaTeX file is in
|
||||
-p translate LaTeX fragments or include files (requires -c)
|
||||
I.e., files without \\documentclass commands
|
||||
-r give reLyX a (list of) regular environment(s)
|
||||
-s give reLyX a (list of) additional syntax file(s) to read
|
||||
|
||||
man reLyX for lots of usage information
|
||||
|
||||
|
||||
|
||||
ENDLONGUSAGE
|
||||
|
||||
# Read command line
|
||||
# Get Options: set $opt_f etc. based on command line options
|
||||
getopts('c:dfhno:pr:s:') or die "Illegal option!$Usage_Short";
|
||||
if ($opt_h) {print $Usage_Long; $Success=1; exit}
|
||||
die "No LaTeX file was input on the command line$Usage_Short" unless @ARGV;
|
||||
|
||||
# Make each file in the file list an absolute file name (e.g., staring with '/')
|
||||
@File_List = map {&abs_file_name($_)} @ARGV;
|
||||
|
||||
# If noweb files, then we need to pre-process each file
|
||||
if (defined $opt_n) {
|
||||
die "-n option requires -c!$Usage_Short" unless defined $opt_c;
|
||||
foreach (@File_List) {
|
||||
system("noweb2lyx", "-pre", "$_", "$_.pre$$");
|
||||
$_ .= ".pre$$";
|
||||
}
|
||||
}
|
||||
|
||||
# -p option allows multiple input files
|
||||
if (defined $opt_p) {
|
||||
die "-p option requires -c!$Usage_Short" unless defined $opt_c;
|
||||
} else {
|
||||
die "Only one input file allowed unless using -p option$Usage_Short"
|
||||
unless @ARGV == 1;
|
||||
}
|
||||
|
||||
# Make sure outputdir given with -o option is valid
|
||||
# Make it an absolute path, too!
|
||||
if (defined($opt_o)) {
|
||||
die "directory $opt_o doesn't exist!\n$Usage_Short"
|
||||
unless defined(-d $opt_o);
|
||||
die "$opt_o isn't a directory!\n$Usage_Short" unless -d $opt_o;
|
||||
$opt_o = &my_fast_abs_path($opt_o);
|
||||
# may not have trailing slash.
|
||||
$opt_o .= '/' unless $opt_o =~ /\/$/;
|
||||
}
|
||||
|
||||
# Read file(s) containing LaTeX commands and their syntax
|
||||
# Read personal syntax.default, or system-wide if there isn't a personal one
|
||||
# Then read other syntax files, given by the -s option
|
||||
my $default_file = "$dot_lyxdir/reLyX/$syntaxname";
|
||||
if (! -f $default_file) {
|
||||
$default_file = "$lyxdir/reLyX/$syntaxname";
|
||||
die "cannot find default syntax file $default_file" unless -f $default_file;
|
||||
}
|
||||
my @syntaxfiles = ($default_file);
|
||||
push (@syntaxfiles, (split(/,/,$opt_s))) if defined $opt_s;
|
||||
&ReadCommands::read_syntax_files(@syntaxfiles);
|
||||
|
||||
########### Main loop over files (include files will be added to @File_List)
|
||||
my $count=0; #number of files we've done
|
||||
my @deletelist = (); # files to delete when we're done (if no '-d' flag)
|
||||
my $Doc_Class; # LaTeX documentclass
|
||||
my $LyX_Preamble = ""; # LyX Preamble not including Latex preamble part
|
||||
my $Latex_Preamble = "";
|
||||
my $File;
|
||||
while ($File = shift(@File_List)) {
|
||||
# TODO we should always die (or something) if temp files exist & !opt_f
|
||||
my $OutFileName;
|
||||
my $filenum = 0; #numbering for temporary files
|
||||
|
||||
# May need to add ".tex" to input file name.
|
||||
# PathBase is the output file name without ".lyx". It's used for building
|
||||
# temporary files' file names, too.
|
||||
# Finally, make sure the file is valid, directory is writable, etc.
|
||||
# Sub returns (undef, undef, undef) if something goes wrong.
|
||||
my ($InFileDir, $InFileName, $PathBase) = &test_file($File);
|
||||
|
||||
# Change to the input file's directory, so that if the input file has an
|
||||
# \include{../foo} in it, we'll find the included file.
|
||||
# Did something go wrong?
|
||||
unless (defined($InFileDir) && chdir($InFileDir)) {
|
||||
# main file must be ok; for included files or file fragments, just warn
|
||||
next if ($count || $opt_p);
|
||||
die "\n"; # printed error already
|
||||
}
|
||||
|
||||
# OK. Start parsing the file!
|
||||
print STDERR "In Directory $InFileDir\n" if $opt_d;
|
||||
print STDERR "($InFileName: ";
|
||||
|
||||
# Read preamble and calculate document class if necessary
|
||||
# (It's necessary when we're doing the first file.)
|
||||
unless ($count) {
|
||||
|
||||
if ($opt_p) { # it's a partial file
|
||||
$Doc_Class = $opt_c;
|
||||
} else {
|
||||
# Split the preamble off of the rest of the file
|
||||
my $PreambleName = $PathBase . ".relyx" . ++$filenum;
|
||||
$OutFileName = $PathBase . ".relyx" . ++$filenum;
|
||||
push @deletelist, $OutFileName, $PreambleName;
|
||||
&MakePreamble::split_preamble($InFileName,
|
||||
$PreambleName, $OutFileName);
|
||||
$InFileName = $OutFileName;
|
||||
|
||||
# Now read and translate the LaTeX preamble into LyX
|
||||
# Return document's class so we know which layout file(s) to read
|
||||
# Also return LyX preamble in a string, for later
|
||||
($Doc_Class, $LyX_Preamble, $Latex_Preamble) =
|
||||
&MakePreamble::translate_preamble($PreambleName, $LyXFormat);
|
||||
|
||||
} # end partial file if
|
||||
|
||||
# Read file(s) containing the valid LyX layouts for this documentclass
|
||||
# and their LaTeX command/environment equivalents
|
||||
&ReadCommands::read_layout_files($Doc_Class);
|
||||
}
|
||||
|
||||
# Clean the TeX file (not including its preamble)
|
||||
$OutFileName = $PathBase . ".relyx" . ++$filenum;
|
||||
push @deletelist, $OutFileName;
|
||||
&CleanTeX::call_parser($InFileName, $OutFileName);
|
||||
|
||||
# Now convert basic constructs in the cleaned TeX file to LyX constructs
|
||||
$InFileName = $OutFileName;
|
||||
$OutFileName = $PathBase . ".relyx" . ++$filenum;
|
||||
push @deletelist, $OutFileName;
|
||||
&BasicLyX::call_parser($InFileName, $OutFileName);
|
||||
|
||||
# Final cleanup step for noweb files
|
||||
if (defined $opt_n) {
|
||||
$InFileName = $OutFileName;
|
||||
$OutFileName = $PathBase . ".relyx" . ++$filenum;
|
||||
push @deletelist, $OutFileName;
|
||||
system("noweb2lyx", "-post", $InFileName, $OutFileName);
|
||||
}
|
||||
|
||||
# Finally, print out the actual LyX file including the preamble
|
||||
# For the *first* file, print out the LaTeX preamble too
|
||||
$InFileName = $OutFileName;
|
||||
if (defined $opt_n) {
|
||||
push @deletelist, $PathBase;
|
||||
$PathBase =~ s/.pre$$//;
|
||||
}
|
||||
$OutFileName = $PathBase . ".lyx";
|
||||
my $preamble = $count ? $LyX_Preamble : $LyX_Preamble . $Latex_Preamble;
|
||||
&LastLyX::last_lyx($InFileName, $OutFileName, $preamble);
|
||||
|
||||
warn ")\n";
|
||||
|
||||
} continue {
|
||||
$count++;
|
||||
|
||||
} # END MAIN WHILE LOOP
|
||||
|
||||
# Cleanup
|
||||
unless ($opt_d) {
|
||||
warn "Deleting temp files\n";
|
||||
unlink @deletelist;
|
||||
}
|
||||
|
||||
$Success = 1;
|
||||
exit;
|
||||
|
||||
# If we "die", output a sad message
|
||||
END{
|
||||
if ($Success) {
|
||||
warn "Finished successfully!\n";
|
||||
} else {
|
||||
warn "Exited due to fatal Error!\n";
|
||||
}
|
||||
}
|
||||
|
||||
##################### SUBROUTINES ###########################################
|
||||
# Input: File (including absolute path)
|
||||
# Output: input file directory (absolute path)
|
||||
# input file name (".tex" added if necessary) without path
|
||||
# PathBase, the output file name (including path) without ".lyx" ending
|
||||
# Returns (undef, undef, undef) if something breaks
|
||||
#
|
||||
# Only allow certain suffixes
|
||||
# Test for things, like writability of output directory, existence of
|
||||
# .lyx file we would be creating...
|
||||
sub test_file {
|
||||
my $File = shift;
|
||||
my @return_error = (undef, undef, undef);
|
||||
|
||||
# Get file names, set up for making different temporary files
|
||||
# fileparse_set_fstype("MSDOS") for DOS support!
|
||||
my ($in_basename, $in_path, $suffix) = fileparse($File, @Suffix_List);
|
||||
#$path .= '/' unless $path =~ /\/$/; # fix BUG in perl5.002 fileparse!
|
||||
|
||||
# Try adding .tex to filename if you can't find the file the user input
|
||||
unless (-f $File) {
|
||||
if (! $suffix) { # didn't have a valid suffix. Try adding one
|
||||
if (-f "$File.tex") {
|
||||
$suffix = ".tex";
|
||||
} else {
|
||||
warn "\nCan't find input file $File or $File.tex\n";
|
||||
return @return_error;
|
||||
}
|
||||
} else { # it had a valid suffix, but the file doesn't exist
|
||||
warn "\nCan't find input file $File\n";
|
||||
return @return_error;
|
||||
}
|
||||
}
|
||||
my $in_filename = $in_basename . $suffix;
|
||||
|
||||
# Make sure directory is valid
|
||||
# Note that we chdir to an input file's directory before translating it.
|
||||
# Therefore, unless the -o option is given, we want to output files in '.'
|
||||
#
|
||||
# TODO if file foo.tex includes a/bar.tex and b/bar.tex, then with the
|
||||
# -o option things will get ugly. We could test for that and create a name
|
||||
# (like relyx-1-12345-bar.tex) for the second (and later!) bar.tex file(s)
|
||||
my $out_path = defined $opt_o ? $opt_o : "./";
|
||||
unless (-w $out_path) { # Note: "" isn't writable!
|
||||
warn "\nDirectory $out_path isn't writable!\n";
|
||||
return @return_error;
|
||||
}
|
||||
$out_path =~ s(^./)(); # "foo" is more readable than "./foo"
|
||||
# This will be used for creating LyX file as well as temp files
|
||||
my $PathBase = $out_path . $in_basename;
|
||||
|
||||
# Check for files that already exist
|
||||
my $lname = $PathBase . ".lyx";
|
||||
if (-e $lname) {
|
||||
if (-d $lname) {
|
||||
warn "\nLyX file $lname already exists and is a directory.\n";
|
||||
return @return_error;
|
||||
} elsif ($opt_f) {
|
||||
warn "Will overwrite file $lname\n" if $opt_d;
|
||||
} else {
|
||||
warn "\nLyX file $lname already exists. Use -f to overwrite\n";
|
||||
return @return_error;
|
||||
}
|
||||
}
|
||||
|
||||
return ($in_path, $in_filename, $PathBase);
|
||||
} # end sub test_file
|
||||
|
||||
|
||||
sub abs_file_name {
|
||||
my $File = shift;
|
||||
my ($basename, $path, $suffix) = fileparse($File, @Suffix_List);
|
||||
my $realpath = &my_fast_abs_path($path);
|
||||
# add / at end
|
||||
$realpath .= '/' unless $realpath =~ /\/$/;
|
||||
my $name = "$realpath$basename$suffix";
|
||||
return $name;
|
||||
}
|
||||
|
||||
|
||||
# Stole this from Cwd.pm. Can't use the Cwd:: function cuz it's not in 5.003
|
||||
# I could test $] >5.004 or something, but why bother?
|
||||
sub my_fast_abs_path {
|
||||
my $cwd = fastcwd();
|
||||
my $path = shift || '.';
|
||||
chdir($path) || die "Cannot chdir to $path:$!";
|
||||
my $realpath = fastcwd();
|
||||
chdir($cwd) || die "Cannot chdir back to $cwd:$!";
|
||||
$realpath;
|
||||
}
|
||||
|
||||
|
||||
1; # return "true" to the wrapper
|
@ -1,262 +0,0 @@
|
||||
#This file was created by <karger> Sun Mar 5 12:54:24 2000
|
||||
#LyX 1.0 (C) 1995-1999 Matthias Ettrich and the LyX Team
|
||||
\lyxformat 2.15
|
||||
\textclass article
|
||||
\paperfontsize 11
|
||||
\begin_preamble
|
||||
%some comments
|
||||
|
||||
%comments
|
||||
\def\blah{\blahblah}
|
||||
% And more comments
|
||||
|
||||
%more comments
|
||||
\end_preamble
|
||||
|
||||
\layout Title
|
||||
|
||||
Test Document
|
||||
\layout Standard
|
||||
|
||||
|
||||
\begin_inset LatexCommand \tableofcontents
|
||||
|
||||
\end_inset
|
||||
|
||||
|
||||
\layout Section
|
||||
|
||||
First Section
|
||||
\layout Standard
|
||||
|
||||
This
|
||||
\size large
|
||||
a
|
||||
\size small
|
||||
b
|
||||
\size tiny
|
||||
c
|
||||
\size small
|
||||
|
||||
\size large
|
||||
|
||||
\size huge
|
||||
d
|
||||
\size large
|
||||
|
||||
\size default
|
||||
is some text.
|
||||
\latex latex
|
||||
|
||||
\backslash framebox[3in][s]{
|
||||
\latex default
|
||||
What are you doing
|
||||
\SpecialChar \ldots{}
|
||||
Dave
|
||||
\latex latex
|
||||
}
|
||||
\latex default
|
||||
.
|
||||
This is more text.
|
||||
\layout Section*
|
||||
|
||||
MySection
|
||||
\layout Standard
|
||||
|
||||
|
||||
\begin_inset LatexCommand \label{sec:mysection}
|
||||
|
||||
\end_inset
|
||||
|
||||
This is some
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
quoted
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
text in a new section.
|
||||
I
|
||||
\emph on
|
||||
am
|
||||
\begin_float footnote
|
||||
|
||||
\layout Standard
|
||||
|
||||
This is a great footnote because:
|
||||
\layout Itemize
|
||||
|
||||
The footnote is not
|
||||
\emph on
|
||||
emphasized
|
||||
\emph default
|
||||
.
|
||||
\layout Itemize
|
||||
|
||||
The text is
|
||||
\layout Standard
|
||||
|
||||
How cool is that!?
|
||||
\end_float
|
||||
|
||||
|
||||
\emph on
|
||||
emphasizing
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
text.
|
||||
\layout Standard
|
||||
|
||||
|
||||
\emph on
|
||||
I keep
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
emphasizing
|
||||
\emph default
|
||||
.
|
||||
This
|
||||
\protected_separator
|
||||
is text in a new par\SpecialChar \-
|
||||
agraph.
|
||||
\newline
|
||||
It has
|
||||
\SpecialChar \ldots{}
|
||||
an
|
||||
\begin_inset Formula \( \alpha \)
|
||||
\end_inset
|
||||
|
||||
in it, which is OK\SpecialChar \@.
|
||||
I can type special characters
|
||||
\begin_float footnote
|
||||
|
||||
\layout Standard
|
||||
|
||||
i.e., characters which must be escaped
|
||||
\end_float
|
||||
|
||||
like & and #.
|
||||
\layout Standard
|
||||
|
||||
_ is a neat token.
|
||||
Now I
|
||||
\family sans
|
||||
want
|
||||
\family typewriter
|
||||
to
|
||||
\family sans
|
||||
write
|
||||
\family default
|
||||
some math in a displayed equation.
|
||||
\begin_inset Formula \begin{eqnarray*}
|
||||
q^{(i)}_{O} & = & q^{water}_{O}+dq_{O}\times (P_{deg}^{(i-1)}-P_{deg}^{(i)})\\
|
||||
q_{H}^{(i)} & = & q^{water}_{H}+dq_{H}\times (P_{deg}^{(i-1)}-P_{deg}^{(i)})\\
|
||||
q_{p}^{(i)} & = & q^{water}_{H}+dq_{H}\times (P_{deg}^{(i-1)}-P^{(i+1)}_{deg})
|
||||
\end{eqnarray*}
|
||||
\end_inset
|
||||
|
||||
|
||||
\layout Standard
|
||||
|
||||
Here's an itemized list
|
||||
\layout Itemize
|
||||
|
||||
this is an item
|
||||
\begin_deeper
|
||||
\layout Enumerate
|
||||
|
||||
this is a numbered item
|
||||
\begin_deeper
|
||||
\layout Standard
|
||||
|
||||
But now I want to write some text.
|
||||
\end_deeper
|
||||
\layout Enumerate
|
||||
|
||||
this is another numbered item
|
||||
\begin_deeper
|
||||
\layout Standard
|
||||
|
||||
More text
|
||||
\end_deeper
|
||||
\end_deeper
|
||||
\begin_deeper
|
||||
\layout Standard
|
||||
|
||||
Yet more text
|
||||
\end_deeper
|
||||
\layout Itemize
|
||||
|
||||
this is another unnumbered item
|
||||
\begin_deeper
|
||||
\layout Standard
|
||||
|
||||
Final text
|
||||
\end_deeper
|
||||
\layout Section
|
||||
|
||||
New Section
|
||||
\layout Standard
|
||||
|
||||
Here's a
|
||||
\emph on
|
||||
quotation:
|
||||
\layout Quotation
|
||||
|
||||
|
||||
\emph on
|
||||
Hello there how are you?
|
||||
\layout Quotation
|
||||
|
||||
|
||||
\emph on
|
||||
I am fine.
|
||||
Thanks
|
||||
\layout Standard
|
||||
|
||||
|
||||
\emph on
|
||||
This
|
||||
\emph default
|
||||
is a reference to section
|
||||
\begin_inset LatexCommand \ref{sec:mysection}
|
||||
|
||||
\end_inset
|
||||
|
||||
on page
|
||||
\begin_inset LatexCommand \pageref{sec:mysection}
|
||||
|
||||
\end_inset
|
||||
|
||||
.
|
||||
\layout Standard
|
||||
|
||||
|
||||
|
||||
\LyXTable
|
||||
multicol5
|
||||
2 2 0 0 0 0 0 0
|
||||
0 0 0 0
|
||||
0 0 0 0
|
||||
2 0 0 "" ""
|
||||
2 0 0 "" ""
|
||||
0 2 0 0 0 0 0 "" ""
|
||||
0 2 0 0 0 0 0 "" ""
|
||||
0 2 0 0 0 0 0 "" ""
|
||||
0 2 0 0 0 0 0 "" ""
|
||||
|
||||
foo
|
||||
\newline
|
||||
bar
|
||||
\newline
|
||||
bar
|
||||
\newline
|
||||
foo
|
||||
|
||||
\layout Standard
|
||||
|
||||
Final Text.
|
||||
\the_end
|
@ -1,7 +1,7 @@
|
||||
% This is the default list of commands for reLyX to read
|
||||
% It tells reLyX many arguments each command takes, and which of them
|
||||
% This is the default list of commands for tex conversion programs to read
|
||||
% It tells how many arguments each command takes, and which of them
|
||||
% (if any) are optional.
|
||||
% It is taken from the list of commands written by John Weiss 970311
|
||||
% It is taken from the list of commands written by John Weiss 970311 for reLyX
|
||||
% plus the math commands from math_hash.C
|
||||
%
|
||||
% Also had to add textrm etc. commands and many size commands (like \small)
|
4
lyx.man
4
lyx.man
@ -179,7 +179,7 @@ strings in other languages.
|
||||
.I LIBDIR
|
||||
is the system directory. This is usually /usr/local/share/lyx on UNIX and %X11ROOT%\\XFree86\\lib\\X11\\lyx on OS/2 with XFree.
|
||||
.SH SEE ALSO
|
||||
reLyX(1), latex(1), xforms(5).
|
||||
tex2lyx(1), latex(1).
|
||||
|
||||
Full documentation in either native \fBLyX\fR or postscript format.
|
||||
.SH BUGS/LIMITATIONS
|
||||
@ -192,7 +192,7 @@ http://bugzilla.lyx.org/. Don't forget to mention which version you
|
||||
are having problems with!
|
||||
|
||||
\fBLaTeX\fR import is still not perfect and may produce buggy *.lyx
|
||||
files. Consult the \fBreLyX\fR documentation.
|
||||
files. Consult the \fBtex2lyx\fR documentation.
|
||||
|
||||
.SH AUTHORS
|
||||
Copyright
|
||||
|
@ -1,8 +1,9 @@
|
||||
2005-07-16 <lgb@tandberg.net>
|
||||
2005-07-16 Lars Gullik Bjønnes <larsbj@lyx.org>
|
||||
|
||||
* no.po: update a bit
|
||||
* *.po: remerge
|
||||
|
||||
2005-07-15 <lgb@tandberg.net>
|
||||
2005-07-15 Lars Gullik Bjønnes <larsbj@lyx.org>
|
||||
|
||||
* Makefile.in.in: use AWK variable
|
||||
|
||||
|
372
po/de.po
372
po/de.po
@ -77,7 +77,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: LyX 1.4.0\n"
|
||||
"Report-Msgid-Bugs-To: lyx-devel@lists.lyx.org\n"
|
||||
"POT-Creation-Date: 2005-06-28 14:09+0200\n"
|
||||
"POT-Creation-Date: 2005-07-15 20:51+0200\n"
|
||||
"PO-Revision-Date: 2005-06-04 20:56+0200\n"
|
||||
"Last-Translator: Michael Schmitt <Michael.Schmitt@teststep.org>\n"
|
||||
"Language-Team: German <de@li.org>\n"
|
||||
@ -2046,7 +2046,7 @@ msgstr "Seitenumbruch nach der aktuellen Zeile|#S"
|
||||
#: src/frontends/xforms/forms/form_tabular.fd:1638
|
||||
#: src/frontends/xforms/forms/form_tabular.fd:1656
|
||||
#: src/frontends/qt2/ui/QParagraphDialogBase.ui:60
|
||||
#: src/frontends/qt2/QDocument.C:166 src/text.C:2166
|
||||
#: src/frontends/qt2/QDocument.C:166 src/text.C:2202
|
||||
msgid "Double"
|
||||
msgstr "Doppelt"
|
||||
|
||||
@ -2581,7 +2581,7 @@ msgstr "&Dummy"
|
||||
#: src/frontends/qt2/ui/QDocumentDialogBase.ui:214 src/buffer_funcs.C:91
|
||||
#: src/buffer_funcs.C:117 src/buffer_funcs.C:158 src/bufferlist.C:84
|
||||
#: src/bufferlist.C:183 src/lyx_cb.C:115 src/lyx_cb.C:168 src/lyxfunc.C:623
|
||||
#: src/lyxfunc.C:785 src/lyxfunc.C:1793 src/lyxvc.C:168
|
||||
#: src/lyxfunc.C:785 src/lyxfunc.C:1791 src/lyxvc.C:168
|
||||
msgid "&Cancel"
|
||||
msgstr "&Abbrechen"
|
||||
|
||||
@ -3623,7 +3623,7 @@ msgstr "Gro
|
||||
msgid "Relations"
|
||||
msgstr "Relationen"
|
||||
|
||||
#: src/frontends/qt2/ui/QMathDialogBase.ui:511 lib/languages:31
|
||||
#: src/frontends/qt2/ui/QMathDialogBase.ui:511 lib/languages:32
|
||||
#: src/frontends/gtk/Dialogs.C:338 src/frontends/xforms/Dialogs.C:314
|
||||
msgid "Greek"
|
||||
msgstr "Griechisch"
|
||||
@ -3747,7 +3747,7 @@ msgid "Print as grey text"
|
||||
msgstr "Als grauen Text drucken"
|
||||
|
||||
#: src/frontends/qt2/ui/QParagraphDialogBase.ui:48
|
||||
#: src/frontends/qt2/QDocument.C:162 src/text.C:2160
|
||||
#: src/frontends/qt2/QDocument.C:162 src/text.C:2196
|
||||
msgid "Single"
|
||||
msgstr "Einfach"
|
||||
|
||||
@ -5257,7 +5257,7 @@ msgstr "Fall #:"
|
||||
#: lib/layouts/spie.layout:19 lib/layouts/agu_stdsections.inc:29
|
||||
#: lib/layouts/aguplus.inc:27 lib/layouts/db_stdsections.inc:27
|
||||
#: lib/layouts/numarticle.inc:12 lib/layouts/numreport.inc:20
|
||||
#: lib/layouts/numrevtex.inc:5 lib/layouts/scrclass.inc:59
|
||||
#: lib/layouts/numrevtex.inc:5 lib/layouts/scrclass.inc:60
|
||||
#: lib/layouts/stdsections.inc:50 lib/layouts/svjour.inc:52
|
||||
msgid "Section"
|
||||
msgstr "Abschnitt"
|
||||
@ -5275,7 +5275,7 @@ msgstr "Abschnitt"
|
||||
#: lib/layouts/revtex4.layout:54 lib/layouts/siamltex.layout:58
|
||||
#: lib/layouts/agu_stdsections.inc:39 lib/layouts/aguplus.inc:41
|
||||
#: lib/layouts/db_stdsections.inc:35 lib/layouts/numarticle.inc:21
|
||||
#: lib/layouts/numrevtex.inc:14 lib/layouts/scrclass.inc:66
|
||||
#: lib/layouts/numrevtex.inc:14 lib/layouts/scrclass.inc:67
|
||||
#: lib/layouts/stdsections.inc:71 lib/layouts/svjour.inc:61
|
||||
msgid "Subsection"
|
||||
msgstr "Unterabschnitt"
|
||||
@ -5291,7 +5291,7 @@ msgstr "Unterabschnitt"
|
||||
#: lib/layouts/revtex.layout:56 lib/layouts/revtex4.layout:62
|
||||
#: lib/layouts/siamltex.layout:64 lib/layouts/agu_stdsections.inc:49
|
||||
#: lib/layouts/db_stdsections.inc:43 lib/layouts/numarticle.inc:30
|
||||
#: lib/layouts/numrevtex.inc:23 lib/layouts/scrclass.inc:73
|
||||
#: lib/layouts/numrevtex.inc:23 lib/layouts/scrclass.inc:74
|
||||
#: lib/layouts/stdsections.inc:84 lib/layouts/svjour.inc:70
|
||||
msgid "Subsubsection"
|
||||
msgstr "Unterunterabschn."
|
||||
@ -5329,7 +5329,7 @@ msgstr "Unterunterabschn.*"
|
||||
#: lib/layouts/siamltex.layout:142 lib/layouts/spie.layout:71
|
||||
#: lib/layouts/svglobal.layout:28 lib/layouts/svjog.layout:33
|
||||
#: lib/layouts/agu_stdtitle.inc:191 lib/layouts/amsdefs.inc:124
|
||||
#: lib/layouts/db_stdstruct.inc:10 lib/layouts/scrclass.inc:214
|
||||
#: lib/layouts/db_stdstruct.inc:10 lib/layouts/scrclass.inc:215
|
||||
#: lib/layouts/stdstruct.inc:11 lib/layouts/stdstruct.inc:26
|
||||
#: lib/layouts/svjour.inc:252 src/output_plaintext.C:155
|
||||
msgid "Abstract"
|
||||
@ -5367,7 +5367,7 @@ msgstr "Stichw
|
||||
#: lib/layouts/scrreprt.layout:10 lib/layouts/scrreprt.layout:12
|
||||
#: lib/layouts/siamltex.layout:182 lib/layouts/aguplus.inc:168
|
||||
#: lib/layouts/aguplus.inc:170 lib/layouts/amsdefs.inc:225
|
||||
#: lib/layouts/scrclass.inc:221 lib/layouts/stdstruct.inc:38
|
||||
#: lib/layouts/scrclass.inc:222 lib/layouts/stdstruct.inc:38
|
||||
#: lib/layouts/svjour.inc:326 src/frontends/qt2/QDocumentDialog.C:82
|
||||
msgid "Bibliography"
|
||||
msgstr "Literaturverzeichnis"
|
||||
@ -5437,7 +5437,7 @@ msgstr "Beschreibung"
|
||||
|
||||
#: lib/layouts/aa.layout:54 lib/layouts/aapaper.layout:56
|
||||
#: lib/layouts/aastex.layout:84 lib/layouts/egs.layout:126
|
||||
#: lib/layouts/scrclass.inc:38 lib/layouts/stdlists.inc:68
|
||||
#: lib/layouts/scrclass.inc:39 lib/layouts/stdlists.inc:68
|
||||
#: lib/ui/stdtoolbars.ui:68
|
||||
msgid "List"
|
||||
msgstr "Liste"
|
||||
@ -5459,7 +5459,7 @@ msgstr "Liste"
|
||||
#: lib/layouts/scrlttr2.layout:276 lib/layouts/siamltex.layout:108
|
||||
#: lib/layouts/svprobth.layout:34 lib/layouts/agu_stdtitle.inc:244
|
||||
#: lib/layouts/amsdefs.inc:59 lib/layouts/db_stdtitle.inc:12
|
||||
#: lib/layouts/scrclass.inc:144 lib/layouts/stdtitle.inc:11
|
||||
#: lib/layouts/scrclass.inc:145 lib/layouts/stdtitle.inc:11
|
||||
#: lib/layouts/svjour.inc:129
|
||||
msgid "Title"
|
||||
msgstr "Titel"
|
||||
@ -5484,7 +5484,7 @@ msgstr "Untertitel"
|
||||
#: lib/layouts/revtex.layout:97 lib/layouts/revtex4.layout:114
|
||||
#: lib/layouts/siamltex.layout:125 lib/layouts/svprobth.layout:51
|
||||
#: lib/layouts/agu_stdtitle.inc:165 lib/layouts/amsdefs.inc:80
|
||||
#: lib/layouts/db_stdtitle.inc:20 lib/layouts/scrclass.inc:152
|
||||
#: lib/layouts/db_stdtitle.inc:20 lib/layouts/scrclass.inc:153
|
||||
#: lib/layouts/stdtitle.inc:30 lib/layouts/svjour.inc:182
|
||||
msgid "Author"
|
||||
msgstr "Autor"
|
||||
@ -5520,7 +5520,7 @@ msgstr "Post"
|
||||
#: lib/layouts/scrlettr.layout:172 lib/layouts/scrlttr2.layout:244
|
||||
#: lib/layouts/siamltex.layout:136 lib/layouts/agu_stdtitle.inc:236
|
||||
#: lib/layouts/amsdefs.inc:100 lib/layouts/db_stdtitle.inc:34
|
||||
#: lib/layouts/scrclass.inc:159 lib/layouts/stdtitle.inc:49
|
||||
#: lib/layouts/scrclass.inc:160 lib/layouts/stdtitle.inc:49
|
||||
#: lib/layouts/svjour.inc:230
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
@ -5578,7 +5578,7 @@ msgstr "Thesaurus"
|
||||
#: lib/layouts/revtex4.layout:70 lib/layouts/siamltex.layout:70
|
||||
#: lib/layouts/agu_stdsections.inc:59 lib/layouts/aguplus.inc:55
|
||||
#: lib/layouts/db_stdsections.inc:51 lib/layouts/numarticle.inc:39
|
||||
#: lib/layouts/numrevtex.inc:32 lib/layouts/scrclass.inc:80
|
||||
#: lib/layouts/numrevtex.inc:32 lib/layouts/scrclass.inc:81
|
||||
#: lib/layouts/stdsections.inc:96 lib/layouts/svjour.inc:79
|
||||
msgid "Paragraph"
|
||||
msgstr "Paragraph"
|
||||
@ -6064,7 +6064,7 @@ msgstr ""
|
||||
#: lib/layouts/paper.layout:31 lib/layouts/scrartcl.layout:20
|
||||
#: lib/layouts/seminar.layout:24 lib/layouts/agu_stdsections.inc:11
|
||||
#: lib/layouts/db_stdsections.inc:11 lib/layouts/numarticle.inc:4
|
||||
#: lib/layouts/numreport.inc:6 lib/layouts/scrclass.inc:44
|
||||
#: lib/layouts/numreport.inc:6 lib/layouts/scrclass.inc:45
|
||||
#: lib/layouts/stdsections.inc:10
|
||||
msgid "Part"
|
||||
msgstr "Teil"
|
||||
@ -6397,7 +6397,7 @@ msgstr "Datum"
|
||||
#: lib/layouts/linuxdoc.layout:153 lib/layouts/llncs.layout:77
|
||||
#: lib/layouts/memoir.layout:69 lib/layouts/paper.layout:80
|
||||
#: lib/layouts/agu_stdsections.inc:69 lib/layouts/db_stdsections.inc:59
|
||||
#: lib/layouts/numarticle.inc:48 lib/layouts/scrclass.inc:87
|
||||
#: lib/layouts/numarticle.inc:48 lib/layouts/scrclass.inc:88
|
||||
#: lib/layouts/stdsections.inc:104 lib/layouts/svjour.inc:88
|
||||
msgid "Subparagraph"
|
||||
msgstr "Unterparagraph"
|
||||
@ -7529,7 +7529,7 @@ msgstr "SGML"
|
||||
#: lib/layouts/llncs.layout:38 lib/layouts/memoir.layout:44
|
||||
#: lib/layouts/scrbook.layout:15 lib/layouts/agu_stdsections.inc:20
|
||||
#: lib/layouts/db_stdsections.inc:19 lib/layouts/numreport.inc:11
|
||||
#: lib/layouts/scrclass.inc:51 lib/layouts/stdsections.inc:30
|
||||
#: lib/layouts/scrclass.inc:52 lib/layouts/stdsections.inc:30
|
||||
msgid "Chapter"
|
||||
msgstr "Kapitel"
|
||||
|
||||
@ -7823,7 +7823,7 @@ msgid "Title:"
|
||||
msgstr "Titel"
|
||||
|
||||
#: lib/layouts/scrlettr.layout:207 lib/layouts/scrlttr2.layout:284
|
||||
#: lib/layouts/scrclass.inc:166
|
||||
#: lib/layouts/scrclass.inc:167
|
||||
msgid "Subject"
|
||||
msgstr "Betreff"
|
||||
|
||||
@ -8643,63 +8643,63 @@ msgstr "Unterunterabschn."
|
||||
msgid " \\alph{paragraph}."
|
||||
msgstr ""
|
||||
|
||||
#: lib/layouts/scrclass.inc:96
|
||||
#: lib/layouts/scrclass.inc:97
|
||||
msgid "Addpart"
|
||||
msgstr "Teil (Inhaltsverz.)"
|
||||
|
||||
#: lib/layouts/scrclass.inc:102
|
||||
#: lib/layouts/scrclass.inc:103
|
||||
msgid "Addchap"
|
||||
msgstr "Kapitel (Inhaltsverz.)"
|
||||
|
||||
#: lib/layouts/scrclass.inc:108
|
||||
#: lib/layouts/scrclass.inc:109
|
||||
msgid "Addsec"
|
||||
msgstr "Abschnitt (Inhaltsverz.)"
|
||||
|
||||
#: lib/layouts/scrclass.inc:114
|
||||
#: lib/layouts/scrclass.inc:115
|
||||
msgid "Addchap*"
|
||||
msgstr "Kapitel* (Inhaltsverz.)"
|
||||
|
||||
#: lib/layouts/scrclass.inc:120
|
||||
#: lib/layouts/scrclass.inc:121
|
||||
msgid "Addsec*"
|
||||
msgstr "Abschnitt* (Inhaltsverz.)"
|
||||
|
||||
#: lib/layouts/scrclass.inc:126
|
||||
#: lib/layouts/scrclass.inc:127
|
||||
msgid "Minisec"
|
||||
msgstr "Miniabschnitt"
|
||||
|
||||
#: lib/layouts/scrclass.inc:172
|
||||
#: lib/layouts/scrclass.inc:173
|
||||
msgid "Publishers"
|
||||
msgstr "Verleger"
|
||||
|
||||
#: lib/layouts/scrclass.inc:178 lib/layouts/svjour.inc:121
|
||||
#: lib/layouts/scrclass.inc:179 lib/layouts/svjour.inc:121
|
||||
msgid "Dedication"
|
||||
msgstr "Widmung"
|
||||
|
||||
#: lib/layouts/scrclass.inc:184
|
||||
#: lib/layouts/scrclass.inc:185
|
||||
msgid "Titlehead"
|
||||
msgstr "Titelkopf"
|
||||
|
||||
#: lib/layouts/scrclass.inc:195
|
||||
#: lib/layouts/scrclass.inc:196
|
||||
msgid "Uppertitleback"
|
||||
msgstr "Innenseite oben"
|
||||
|
||||
#: lib/layouts/scrclass.inc:201
|
||||
#: lib/layouts/scrclass.inc:202
|
||||
msgid "Lowertitleback"
|
||||
msgstr "Innenseite unten"
|
||||
|
||||
#: lib/layouts/scrclass.inc:207
|
||||
#: lib/layouts/scrclass.inc:208
|
||||
msgid "Extratitle"
|
||||
msgstr "Zusatztitel"
|
||||
|
||||
#: lib/layouts/scrclass.inc:229
|
||||
#: lib/layouts/scrclass.inc:230
|
||||
msgid "Captionabove"
|
||||
msgstr "Legende oben"
|
||||
|
||||
#: lib/layouts/scrclass.inc:235
|
||||
#: lib/layouts/scrclass.inc:236
|
||||
msgid "Captionbelow"
|
||||
msgstr "Legende unten"
|
||||
|
||||
#: lib/layouts/scrclass.inc:241
|
||||
#: lib/layouts/scrclass.inc:242
|
||||
msgid "Dictum"
|
||||
msgstr "Spruch"
|
||||
|
||||
@ -8858,119 +8858,119 @@ msgstr "Estnisch"
|
||||
msgid "Finnish"
|
||||
msgstr "Finnisch"
|
||||
|
||||
#: lib/languages:25
|
||||
#: lib/languages:26
|
||||
msgid "French"
|
||||
msgstr "Französisch"
|
||||
|
||||
#: lib/languages:26
|
||||
#: lib/languages:27
|
||||
msgid "Galician"
|
||||
msgstr "Galizisch"
|
||||
|
||||
#: lib/languages:29
|
||||
#: lib/languages:30
|
||||
msgid "German"
|
||||
msgstr "Deutsch"
|
||||
|
||||
#: lib/languages:30
|
||||
#: lib/languages:31
|
||||
msgid "German (new spelling)"
|
||||
msgstr "Deutsch (neue Rechtschreibung)"
|
||||
|
||||
#: lib/languages:32
|
||||
#: lib/languages:33
|
||||
msgid "Hebrew"
|
||||
msgstr "Hebräisch"
|
||||
|
||||
#: lib/languages:34
|
||||
#: lib/languages:35
|
||||
msgid "Irish"
|
||||
msgstr "Irisch"
|
||||
|
||||
#: lib/languages:35
|
||||
#: lib/languages:36
|
||||
msgid "Italian"
|
||||
msgstr "Italienisch"
|
||||
|
||||
#: lib/languages:36
|
||||
#: lib/languages:37
|
||||
msgid "Kazakh"
|
||||
msgstr "Kasachisch"
|
||||
|
||||
#: lib/languages:39
|
||||
#: lib/languages:40
|
||||
msgid "Lithuanian"
|
||||
msgstr "Litauisch"
|
||||
|
||||
#: lib/languages:40
|
||||
#: lib/languages:41
|
||||
msgid "Latvian"
|
||||
msgstr "Lettisch"
|
||||
|
||||
#: lib/languages:41
|
||||
#: lib/languages:42
|
||||
msgid "Icelandic"
|
||||
msgstr "Isländisch"
|
||||
|
||||
#: lib/languages:42
|
||||
#: lib/languages:43
|
||||
msgid "Magyar"
|
||||
msgstr "Ungarisch"
|
||||
|
||||
#: lib/languages:43
|
||||
#: lib/languages:44
|
||||
msgid "Norsk"
|
||||
msgstr "Norwegisch"
|
||||
|
||||
#: lib/languages:44
|
||||
#: lib/languages:45
|
||||
msgid "Nynorsk"
|
||||
msgstr "Neu-Norwegisch"
|
||||
|
||||
#: lib/languages:45
|
||||
#: lib/languages:46
|
||||
msgid "Polish"
|
||||
msgstr "Polnisch"
|
||||
|
||||
#: lib/languages:46
|
||||
#: lib/languages:47
|
||||
msgid "Portugese"
|
||||
msgstr "Portugiesisch"
|
||||
|
||||
#: lib/languages:47
|
||||
#: lib/languages:48
|
||||
msgid "Romanian"
|
||||
msgstr "Rumänisch"
|
||||
|
||||
#: lib/languages:48
|
||||
#: lib/languages:49
|
||||
msgid "Russian"
|
||||
msgstr "Russisch"
|
||||
|
||||
#: lib/languages:49
|
||||
#: lib/languages:50
|
||||
msgid "Scottish"
|
||||
msgstr "Schottisch"
|
||||
|
||||
#: lib/languages:50
|
||||
#: lib/languages:51
|
||||
msgid "Serbian"
|
||||
msgstr "Serbisch"
|
||||
|
||||
#: lib/languages:51
|
||||
#: lib/languages:52
|
||||
msgid "Serbo-Croatian"
|
||||
msgstr "Serbokroatisch"
|
||||
|
||||
#: lib/languages:52
|
||||
#: lib/languages:53
|
||||
msgid "Spanish"
|
||||
msgstr "Spanisch"
|
||||
|
||||
#: lib/languages:53
|
||||
#: lib/languages:54
|
||||
msgid "Slovak"
|
||||
msgstr "Slowakisch"
|
||||
|
||||
#: lib/languages:54
|
||||
#: lib/languages:55
|
||||
msgid "Slovene"
|
||||
msgstr "Slowenisch"
|
||||
|
||||
#: lib/languages:55
|
||||
#: lib/languages:56
|
||||
msgid "Swedish"
|
||||
msgstr "Schwedisch"
|
||||
|
||||
#: lib/languages:56
|
||||
#: lib/languages:57
|
||||
msgid "Thai"
|
||||
msgstr "Thailändisch"
|
||||
|
||||
#: lib/languages:57
|
||||
#: lib/languages:58
|
||||
msgid "Turkish"
|
||||
msgstr "Türkisch"
|
||||
|
||||
#: lib/languages:58
|
||||
#: lib/languages:59
|
||||
msgid "Ukrainian"
|
||||
msgstr "Ukrainisch"
|
||||
|
||||
#: lib/languages:61
|
||||
#: lib/languages:62
|
||||
msgid "Welsh"
|
||||
msgstr "Walisisch"
|
||||
|
||||
@ -10444,54 +10444,54 @@ msgstr "Parsen"
|
||||
msgid "Formatting document..."
|
||||
msgstr "Formatieren des Dokuments..."
|
||||
|
||||
#: src/BufferView_pimpl.C:702
|
||||
#: src/BufferView_pimpl.C:703
|
||||
#, c-format
|
||||
msgid "Saved bookmark %1$d"
|
||||
msgstr "Lesezeichen %1$d gespeichert"
|
||||
|
||||
#: src/BufferView_pimpl.C:735
|
||||
#: src/BufferView_pimpl.C:736
|
||||
#, c-format
|
||||
msgid "Moved to bookmark %1$d"
|
||||
msgstr "Zu Lesezeichen %1$d gewechselt"
|
||||
|
||||
#: src/BufferView_pimpl.C:794
|
||||
#: src/BufferView_pimpl.C:795
|
||||
msgid "Select LyX document to insert"
|
||||
msgstr "Wählen Sie das einzufügende LyX-Dokument"
|
||||
|
||||
#: src/BufferView_pimpl.C:796 src/frontends/controllers/ControlBibtex.C:48
|
||||
#: src/BufferView_pimpl.C:797 src/frontends/controllers/ControlBibtex.C:48
|
||||
#: src/frontends/controllers/ControlBibtex.C:59
|
||||
#: src/frontends/controllers/ControlExternal.C:160
|
||||
#: src/frontends/controllers/ControlGraphics.C:94
|
||||
#: src/frontends/controllers/ControlInclude.C:90 src/lyx_cb.C:133
|
||||
#: src/lyxfunc.C:1634 src/lyxfunc.C:1671 src/lyxfunc.C:1746
|
||||
#: src/lyxfunc.C:1632 src/lyxfunc.C:1669 src/lyxfunc.C:1744
|
||||
msgid "Documents|#o#O"
|
||||
msgstr "Dokumente|#k"
|
||||
|
||||
#: src/BufferView_pimpl.C:798 src/lyxfunc.C:1673 src/lyxfunc.C:1748
|
||||
#: src/BufferView_pimpl.C:799 src/lyxfunc.C:1671 src/lyxfunc.C:1746
|
||||
msgid "Examples|#E#e"
|
||||
msgstr "Beispiele|#B"
|
||||
|
||||
#: src/BufferView_pimpl.C:803 src/lyx_cb.C:141 src/lyxfunc.C:1641
|
||||
#: src/lyxfunc.C:1678
|
||||
#: src/BufferView_pimpl.C:804 src/lyx_cb.C:141 src/lyxfunc.C:1639
|
||||
#: src/lyxfunc.C:1676
|
||||
msgid "LyX Documents (*.lyx)"
|
||||
msgstr "LyX-Dokumente (*.lyx)"
|
||||
|
||||
#: src/BufferView_pimpl.C:813 src/lyxfunc.C:1688 src/lyxfunc.C:1766
|
||||
#: src/lyxfunc.C:1780 src/lyxfunc.C:1796
|
||||
#: src/BufferView_pimpl.C:814 src/lyxfunc.C:1686 src/lyxfunc.C:1764
|
||||
#: src/lyxfunc.C:1778 src/lyxfunc.C:1794
|
||||
msgid "Canceled."
|
||||
msgstr "Abgebrochen."
|
||||
|
||||
#: src/BufferView_pimpl.C:823
|
||||
#: src/BufferView_pimpl.C:824
|
||||
#, c-format
|
||||
msgid "Inserting document %1$s..."
|
||||
msgstr "Füge Dokument %1$s ein..."
|
||||
|
||||
#: src/BufferView_pimpl.C:834
|
||||
#: src/BufferView_pimpl.C:835
|
||||
#, c-format
|
||||
msgid "Document %1$s inserted."
|
||||
msgstr "Dokument %1$s ist eingefügt."
|
||||
|
||||
#: src/BufferView_pimpl.C:835
|
||||
#: src/BufferView_pimpl.C:836
|
||||
#, c-format
|
||||
msgid "Could not insert document %1$s"
|
||||
msgstr "Das Dokument %1$s konnte nicht eingefügt werden"
|
||||
@ -10861,7 +10861,7 @@ msgstr "Unbekannte Dokumentklasse"
|
||||
msgid "Using the default document class, because the class %1$s is unknown."
|
||||
msgstr ""
|
||||
|
||||
#: src/buffer.C:443 src/text.C:335
|
||||
#: src/buffer.C:443 src/text.C:339
|
||||
#, c-format
|
||||
msgid "Unknown token: %1$s %2$s\n"
|
||||
msgstr "Unbekanntes Token: %1$s %2$s\n"
|
||||
@ -11088,7 +11088,7 @@ msgstr "Die Dokumentklasse ist nicht verf
|
||||
msgid "LyX will not be able to produce output."
|
||||
msgstr "LyX wird keine Ausgabe erzeugen können."
|
||||
|
||||
#: src/bufferview_funcs.C:281
|
||||
#: src/bufferview_funcs.C:285
|
||||
msgid "No more insets"
|
||||
msgstr "Keine weiteren Einfügungen"
|
||||
|
||||
@ -11279,7 +11279,7 @@ msgstr ""
|
||||
msgid "Over-write file?"
|
||||
msgstr "Datei überschreiben?"
|
||||
|
||||
#: src/exporter.C:77 src/lyx_cb.C:168 src/lyxfunc.C:1793
|
||||
#: src/exporter.C:77 src/lyx_cb.C:168 src/lyxfunc.C:1791
|
||||
msgid "&Over-write"
|
||||
msgstr "&Überschreiben"
|
||||
|
||||
@ -11572,22 +11572,45 @@ msgstr "Es wurde keine Protokolldatei der Versionskontrolle gefunden."
|
||||
msgid "Choose bind file"
|
||||
msgstr "Wählen Sie eine Tastaturkürzel-Datei"
|
||||
|
||||
#: src/frontends/controllers/ControlPrefs.C:125
|
||||
msgid "LyX bind files (*.bind)"
|
||||
msgstr ""
|
||||
|
||||
#: src/frontends/controllers/ControlPrefs.C:131
|
||||
msgid "Choose UI file"
|
||||
msgstr "Wählen Sie eine 'UI'-Datei"
|
||||
|
||||
#: src/frontends/controllers/ControlPrefs.C:132
|
||||
#, fuzzy
|
||||
msgid "LyX UI files (*.ui)"
|
||||
msgstr "Alle Dateien (*)"
|
||||
|
||||
#: src/frontends/controllers/ControlPrefs.C:138
|
||||
msgid "Choose keyboard map"
|
||||
msgstr "Wählen Sie eine Tastaturtabelle"
|
||||
|
||||
#: src/frontends/controllers/ControlPrefs.C:139
|
||||
#, fuzzy
|
||||
msgid "LyX keyboard maps (*.kmap)"
|
||||
msgstr "&Tastaturtabelle verwenden"
|
||||
|
||||
#: src/frontends/controllers/ControlPrefs.C:145
|
||||
msgid "Choose personal dictionary"
|
||||
msgstr "Wählen Sie ein persönliches Wörterbuch"
|
||||
|
||||
#: src/frontends/controllers/ControlPrefs.C:146
|
||||
#, fuzzy
|
||||
msgid "*.ispell"
|
||||
msgstr "ispell"
|
||||
|
||||
#: src/frontends/controllers/ControlPrint.C:73
|
||||
msgid "Print to file"
|
||||
msgstr "Ausgabe in Datei"
|
||||
|
||||
#: src/frontends/controllers/ControlPrint.C:74
|
||||
msgid "PostScript files (*.ps)"
|
||||
msgstr ""
|
||||
|
||||
#: src/frontends/controllers/ControlSpellchecker.C:111
|
||||
msgid "The spell-checker could not be started"
|
||||
msgstr "Die Rechtschreibprüfung konnte nicht gestartet werden"
|
||||
@ -11796,7 +11819,7 @@ msgstr "AMS Operatoren"
|
||||
msgid "Box Settings"
|
||||
msgstr "Box-Einstellungen"
|
||||
|
||||
#: src/frontends/gtk/GChanges.C:33 src/frontends/qt2/QChanges.C:33
|
||||
#: src/frontends/gtk/GChanges.C:33 src/frontends/qt2/QChanges.C:36
|
||||
#: src/frontends/xforms/FormChanges.C:32
|
||||
msgid "Merge Changes"
|
||||
msgstr "Änderungen zusammenfassen"
|
||||
@ -11982,12 +12005,12 @@ msgstr "TeX-Informationen|X"
|
||||
msgid "Table of Contents"
|
||||
msgstr "Inhaltsverzeichnis"
|
||||
|
||||
#: src/frontends/gtk/GToc.C:117 src/frontends/xforms/FormErrorList.C:83
|
||||
#: src/frontends/gtk/GToc.C:116 src/frontends/xforms/FormErrorList.C:83
|
||||
#: src/frontends/xforms/FormToc.C:103 src/frontends/xforms/FormToc.C:121
|
||||
msgid "*** No Lists ***"
|
||||
msgstr "*** Keine Listen ***"
|
||||
|
||||
#: src/frontends/gtk/GToc.C:136
|
||||
#: src/frontends/gtk/GToc.C:135
|
||||
msgid "*** No Items ***"
|
||||
msgstr "*** Keine Einträge ***"
|
||||
|
||||
@ -12056,6 +12079,18 @@ msgstr "BibTeX-Literaturverzeichnis"
|
||||
msgid "Branch Settings"
|
||||
msgstr "Zweig-Einstellungen"
|
||||
|
||||
#: src/frontends/qt2/QChanges.C:66
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"Change by %1$s\n"
|
||||
"\n"
|
||||
msgstr "Geändert durch:"
|
||||
|
||||
#: src/frontends/qt2/QChanges.C:68
|
||||
#, c-format
|
||||
msgid "Change made at %1$s\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/frontends/qt2/QCommandBuffer.C:79
|
||||
msgid "Previous command"
|
||||
msgstr "Vorheriger Befehl"
|
||||
@ -12132,7 +12167,7 @@ msgstr "mit
|
||||
msgid "fancy"
|
||||
msgstr "ausgefallen"
|
||||
|
||||
#: src/frontends/qt2/QDocument.C:164 src/text.C:2163
|
||||
#: src/frontends/qt2/QDocument.C:164 src/text.C:2199
|
||||
msgid "OneHalf"
|
||||
msgstr "Eineinhalb"
|
||||
|
||||
@ -12284,30 +12319,34 @@ msgid "Bold\t\\mathbf"
|
||||
msgstr "Fett\t\\mathbf"
|
||||
|
||||
#: src/frontends/qt2/QMathDialog.C:142
|
||||
msgid "Bold symbol\t\\boldsymbol"
|
||||
msgstr ""
|
||||
|
||||
#: src/frontends/qt2/QMathDialog.C:143
|
||||
msgid "Sans serif\t\\mathsf"
|
||||
msgstr "Serifenfrei\t\\mathsf"
|
||||
|
||||
#: src/frontends/qt2/QMathDialog.C:143
|
||||
#: src/frontends/qt2/QMathDialog.C:144
|
||||
msgid "Italic\t\\mathit"
|
||||
msgstr "Kursiv\t\\mathit"
|
||||
|
||||
#: src/frontends/qt2/QMathDialog.C:144
|
||||
#: src/frontends/qt2/QMathDialog.C:145
|
||||
msgid "Typewriter\t\\mathtt"
|
||||
msgstr "Schreibmaschine\t\\mathtt"
|
||||
|
||||
#: src/frontends/qt2/QMathDialog.C:145
|
||||
#: src/frontends/qt2/QMathDialog.C:146
|
||||
msgid "Blackboard\t\\mathbb"
|
||||
msgstr "Blackboard\t\\mathbb"
|
||||
|
||||
#: src/frontends/qt2/QMathDialog.C:146
|
||||
#: src/frontends/qt2/QMathDialog.C:147
|
||||
msgid "Fraktur\t\\mathfrak"
|
||||
msgstr "Fraktur\t\\mathfrak"
|
||||
|
||||
#: src/frontends/qt2/QMathDialog.C:147
|
||||
#: src/frontends/qt2/QMathDialog.C:148
|
||||
msgid "Calligraphic\t\\mathcal"
|
||||
msgstr "Kalligraphisch\t\\mathcal"
|
||||
|
||||
#: src/frontends/qt2/QMathDialog.C:148
|
||||
#: src/frontends/qt2/QMathDialog.C:149
|
||||
msgid "Normal text mode\t\\textrm"
|
||||
msgstr "Normaler Textmodus\t\\textrm"
|
||||
|
||||
@ -13734,10 +13773,20 @@ msgstr "wurde eingef
|
||||
msgid "Opened inset"
|
||||
msgstr "Einfügung geöffnet"
|
||||
|
||||
#: src/insets/insetbibtex.C:95
|
||||
#: src/insets/insetbibtex.C:104
|
||||
msgid "BibTeX Generated Bibliography"
|
||||
msgstr "BibTeX-erzeugtes Literaturverzeichnis"
|
||||
|
||||
#: src/insets/insetbibtex.C:189
|
||||
msgid "Export Warning!"
|
||||
msgstr ""
|
||||
|
||||
#: src/insets/insetbibtex.C:190
|
||||
msgid ""
|
||||
"There are spaces in the paths to your BibTeX databases.\n"
|
||||
"BibTeX will be unable to find them."
|
||||
msgstr ""
|
||||
|
||||
#: src/insets/insetbox.C:57
|
||||
msgid "Boxed"
|
||||
msgstr ""
|
||||
@ -13770,6 +13819,11 @@ msgstr "Box-Einf
|
||||
msgid "Opened Branch Inset"
|
||||
msgstr "Zweig-Einfügung geöffnet"
|
||||
|
||||
#: src/insets/insetbranch.C:97
|
||||
#, fuzzy
|
||||
msgid "Branch: "
|
||||
msgstr "Zweig:|#Z"
|
||||
|
||||
#: src/insets/insetcaption.C:77
|
||||
msgid "Opened Caption Inset"
|
||||
msgstr "Legenden-Einfügung geöffnet"
|
||||
@ -13842,12 +13896,12 @@ msgid ""
|
||||
"into the temporary directory."
|
||||
msgstr ""
|
||||
|
||||
#: src/insets/insetgraphics.C:689
|
||||
#: src/insets/insetgraphics.C:693
|
||||
#, c-format
|
||||
msgid "No conversion of %1$s is needed after all"
|
||||
msgstr ""
|
||||
|
||||
#: src/insets/insetgraphics.C:787
|
||||
#: src/insets/insetgraphics.C:791
|
||||
#, c-format
|
||||
msgid "Graphics file: %1$s"
|
||||
msgstr "Grafikdatei: %1$s"
|
||||
@ -13956,11 +14010,11 @@ msgstr "PrettyRef: "
|
||||
msgid "Opened table"
|
||||
msgstr "Tabelle geöffnet"
|
||||
|
||||
#: src/insets/insettabular.C:1561
|
||||
#: src/insets/insettabular.C:1552
|
||||
msgid "Error setting multicolumn"
|
||||
msgstr "Fehler beim Festlegen der Mehrfachspalte"
|
||||
|
||||
#: src/insets/insettabular.C:1562
|
||||
#: src/insets/insettabular.C:1553
|
||||
msgid "You cannot set multicolumn vertically."
|
||||
msgstr ""
|
||||
|
||||
@ -14179,11 +14233,11 @@ msgstr "&Umbenennen"
|
||||
msgid "Choose a filename to save document as"
|
||||
msgstr "Wählen Sie einen Dateinamen für das Dokument"
|
||||
|
||||
#: src/lyx_cb.C:135 src/lyxfunc.C:1636
|
||||
#: src/lyx_cb.C:135 src/lyxfunc.C:1634
|
||||
msgid "Templates|#T#t"
|
||||
msgstr "Vorlagen|#V"
|
||||
|
||||
#: src/lyx_cb.C:165 src/lyxfunc.C:1790
|
||||
#: src/lyx_cb.C:165 src/lyxfunc.C:1788
|
||||
#, c-format
|
||||
msgid ""
|
||||
"The document %1$s already exists.\n"
|
||||
@ -14191,7 +14245,7 @@ msgid ""
|
||||
"Do you want to over-write that document?"
|
||||
msgstr ""
|
||||
|
||||
#: src/lyx_cb.C:167 src/lyxfunc.C:1792
|
||||
#: src/lyx_cb.C:167 src/lyxfunc.C:1790
|
||||
msgid "Over-write document?"
|
||||
msgstr "Dokument überschreiben?"
|
||||
|
||||
@ -14573,7 +14627,7 @@ msgstr "Erstellung"
|
||||
msgid "ChkTeX"
|
||||
msgstr "ChkTeX"
|
||||
|
||||
#: src/lyxfunc.C:981 src/text3.C:1254
|
||||
#: src/lyxfunc.C:981 src/text3.C:1241
|
||||
msgid "Missing argument"
|
||||
msgstr "Fehlendes Argument"
|
||||
|
||||
@ -14605,43 +14659,43 @@ msgstr ""
|
||||
msgid "Unable to save document defaults"
|
||||
msgstr ""
|
||||
|
||||
#: src/lyxfunc.C:1476
|
||||
#: src/lyxfunc.C:1477
|
||||
msgid "Converting document to new document class..."
|
||||
msgstr "Das Dokument wird an die neue Dokumentklasse angepasst..."
|
||||
|
||||
#: src/lyxfunc.C:1483
|
||||
#: src/lyxfunc.C:1484
|
||||
msgid "Class switch"
|
||||
msgstr ""
|
||||
|
||||
#: src/lyxfunc.C:1632
|
||||
#: src/lyxfunc.C:1630
|
||||
msgid "Select template file"
|
||||
msgstr "Wählen Sie eine Vorlagendatei"
|
||||
|
||||
#: src/lyxfunc.C:1669
|
||||
#: src/lyxfunc.C:1667
|
||||
msgid "Select document to open"
|
||||
msgstr "Wählen Sie das zu öffnende Dokument"
|
||||
|
||||
#: src/lyxfunc.C:1710
|
||||
#: src/lyxfunc.C:1708
|
||||
#, c-format
|
||||
msgid "Opening document %1$s..."
|
||||
msgstr "Öffne Dokument %1$s..."
|
||||
|
||||
#: src/lyxfunc.C:1714
|
||||
#: src/lyxfunc.C:1712
|
||||
#, c-format
|
||||
msgid "Document %1$s opened."
|
||||
msgstr "Dokument %1$s ist geöffnet."
|
||||
|
||||
#: src/lyxfunc.C:1716
|
||||
#: src/lyxfunc.C:1714
|
||||
#, c-format
|
||||
msgid "Could not open document %1$s"
|
||||
msgstr "Das Dokument %1$s konnte nicht geöffnet werden"
|
||||
|
||||
#: src/lyxfunc.C:1741
|
||||
#: src/lyxfunc.C:1739
|
||||
#, c-format
|
||||
msgid "Select %1$s file to import"
|
||||
msgstr "Wählen Sie die einzufügende %1$s-Datei"
|
||||
|
||||
#: src/lyxfunc.C:1851
|
||||
#: src/lyxfunc.C:1849
|
||||
msgid "Welcome to LyX!"
|
||||
msgstr "Willkommen bei LyX!"
|
||||
|
||||
@ -15210,7 +15264,7 @@ msgstr "Zur gespeicherten Version des Dokuments zur
|
||||
msgid " Macro: %1$s: "
|
||||
msgstr " Makro: %1$s: "
|
||||
|
||||
#: src/mathed/math_amsarrayinset.C:110 src/mathed/math_hullinset.C:1137
|
||||
#: src/mathed/math_amsarrayinset.C:110 src/mathed/math_hullinset.C:1153
|
||||
#: src/mathed/math_splitinset.C:73 src/mathed/math_substackinset.C:69
|
||||
#, c-format
|
||||
msgid "Can't add vertical grid lines in '%1$s'"
|
||||
@ -15221,67 +15275,67 @@ msgstr ""
|
||||
msgid "No vertical grid lines in '%1$s'"
|
||||
msgstr ""
|
||||
|
||||
#: src/mathed/math_gridinset.C:1252
|
||||
#: src/mathed/math_gridinset.C:1272
|
||||
msgid "Only one row"
|
||||
msgstr ""
|
||||
|
||||
#: src/mathed/math_gridinset.C:1258
|
||||
#: src/mathed/math_gridinset.C:1278
|
||||
msgid "Only one column"
|
||||
msgstr ""
|
||||
|
||||
#: src/mathed/math_gridinset.C:1266
|
||||
#: src/mathed/math_gridinset.C:1286
|
||||
msgid "No hline to delete"
|
||||
msgstr ""
|
||||
|
||||
#: src/mathed/math_gridinset.C:1275
|
||||
#: src/mathed/math_gridinset.C:1295
|
||||
msgid "No vline to delete"
|
||||
msgstr ""
|
||||
|
||||
#: src/mathed/math_gridinset.C:1293
|
||||
#: src/mathed/math_gridinset.C:1313
|
||||
#, c-format
|
||||
msgid "Unknown tabular feature '%1$s'"
|
||||
msgstr ""
|
||||
|
||||
#: src/mathed/math_hullinset.C:1012 src/mathed/math_hullinset.C:1021
|
||||
#: src/mathed/math_hullinset.C:1026 src/mathed/math_hullinset.C:1035
|
||||
msgid "No number"
|
||||
msgstr "Keine Nummer"
|
||||
|
||||
#: src/mathed/math_hullinset.C:1012 src/mathed/math_hullinset.C:1021
|
||||
#: src/mathed/math_hullinset.C:1026 src/mathed/math_hullinset.C:1035
|
||||
msgid "Number"
|
||||
msgstr "Nummer"
|
||||
|
||||
#: src/mathed/math_hullinset.C:1036
|
||||
#: src/mathed/math_hullinset.C:1050
|
||||
msgid "Enter new label to insert:"
|
||||
msgstr "Name der einzufügenden Marke:"
|
||||
|
||||
#: src/mathed/math_hullinset.C:1037
|
||||
#: src/mathed/math_hullinset.C:1051
|
||||
msgid "Enter label:"
|
||||
msgstr "Marke eingeben:"
|
||||
|
||||
#: src/mathed/math_hullinset.C:1110
|
||||
#: src/mathed/math_hullinset.C:1126
|
||||
#, c-format
|
||||
msgid "Can't change number of rows in '%1$s'"
|
||||
msgstr ""
|
||||
|
||||
#: src/mathed/math_hullinset.C:1120
|
||||
#: src/mathed/math_hullinset.C:1136
|
||||
#, c-format
|
||||
msgid "Can't change number of columns in '%1$s'"
|
||||
msgstr ""
|
||||
|
||||
#: src/mathed/math_hullinset.C:1130
|
||||
#: src/mathed/math_hullinset.C:1146
|
||||
#, c-format
|
||||
msgid "Can't add horizontal grid lines in '%1$s'"
|
||||
msgstr ""
|
||||
|
||||
#: src/mathed/math_hullinset.C:1233 src/text3.C:166
|
||||
#: src/mathed/math_hullinset.C:1249 src/text3.C:167
|
||||
msgid "Math editor mode"
|
||||
msgstr "Mathe-Editor-Modus"
|
||||
|
||||
#: src/mathed/math_nestinset.C:755
|
||||
#: src/mathed/math_nestinset.C:763
|
||||
msgid "create new math text environment ($...$)"
|
||||
msgstr ""
|
||||
|
||||
#: src/mathed/math_nestinset.C:758
|
||||
#: src/mathed/math_nestinset.C:766
|
||||
msgid "entered math text mode (textrm)"
|
||||
msgstr ""
|
||||
|
||||
@ -15374,15 +15428,15 @@ msgid ""
|
||||
"Trying to use the default instead.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/text.C:210
|
||||
#: src/text.C:214
|
||||
msgid "Unknown Inset"
|
||||
msgstr "Unbekannte Einfügung"
|
||||
|
||||
#: src/text.C:334
|
||||
#: src/text.C:338
|
||||
msgid "Unknown token"
|
||||
msgstr "Unbekanntes Token"
|
||||
|
||||
#: src/text.C:1165
|
||||
#: src/text.C:1173
|
||||
msgid ""
|
||||
"You cannot insert a space at the beginning of a paragraph. Please read the "
|
||||
"Tutorial."
|
||||
@ -15390,55 +15444,55 @@ msgstr ""
|
||||
"Sie können am Anfang eines Absatzes kein Leerzeichen einfügen. Bitte lesen "
|
||||
"Sie das Tutorium."
|
||||
|
||||
#: src/text.C:1176
|
||||
#: src/text.C:1184
|
||||
msgid "You cannot type two spaces this way. Please read the Tutorial."
|
||||
msgstr ""
|
||||
"Sie können zwei Leerzeichen nicht auf diese Weise eingeben. Bitte lesen Sie "
|
||||
"das Tutorium."
|
||||
|
||||
#: src/text.C:2129
|
||||
#: src/text.C:2165
|
||||
msgid "Change: "
|
||||
msgstr "Änderung: "
|
||||
|
||||
#: src/text.C:2133
|
||||
#: src/text.C:2169
|
||||
msgid " at "
|
||||
msgstr " am "
|
||||
|
||||
#: src/text.C:2144
|
||||
#: src/text.C:2180
|
||||
#, c-format
|
||||
msgid "Font: %1$s"
|
||||
msgstr "Schrift: %1$s"
|
||||
|
||||
#: src/text.C:2151
|
||||
#: src/text.C:2187
|
||||
#, c-format
|
||||
msgid ", Depth: %1$d"
|
||||
msgstr ", Tiefe: %1$d"
|
||||
|
||||
#: src/text.C:2157
|
||||
#: src/text.C:2193
|
||||
msgid ", Spacing: "
|
||||
msgstr ", Abstand: "
|
||||
|
||||
#: src/text.C:2169
|
||||
#: src/text.C:2205
|
||||
msgid "Other ("
|
||||
msgstr "Andere ("
|
||||
|
||||
#: src/text.C:2178
|
||||
#: src/text.C:2214
|
||||
msgid ", Inset: "
|
||||
msgstr ", Einfügung: "
|
||||
|
||||
#: src/text.C:2179
|
||||
#: src/text.C:2215
|
||||
msgid ", Paragraph: "
|
||||
msgstr ", Absatz: "
|
||||
|
||||
#: src/text.C:2180
|
||||
#: src/text.C:2216
|
||||
msgid ", Id: "
|
||||
msgstr ", Id: "
|
||||
|
||||
#: src/text.C:2181
|
||||
#: src/text.C:2217
|
||||
msgid ", Position: "
|
||||
msgstr ", Position: "
|
||||
|
||||
#: src/text2.C:503
|
||||
#: src/text2.C:519
|
||||
msgid ""
|
||||
"No font change defined. Use Character under the Layout menu to define font "
|
||||
"change."
|
||||
@ -15446,11 +15500,11 @@ msgstr ""
|
||||
"Es wurde keine Schriftänderung definiert. Benutzen Sie dafür das Menü Format-"
|
||||
">Zeichen..."
|
||||
|
||||
#: src/text2.C:545
|
||||
#: src/text2.C:561
|
||||
msgid "Nothing to index!"
|
||||
msgstr "Nichts zu indizieren!"
|
||||
|
||||
#: src/text2.C:547
|
||||
#: src/text2.C:563
|
||||
msgid "Cannot index more than one paragraph!"
|
||||
msgstr "Es ist nicht möglich, mehr als einen Absatz zu indizieren!"
|
||||
|
||||
@ -15470,14 +15524,48 @@ msgstr "Format "
|
||||
msgid " not known"
|
||||
msgstr " unbekannt"
|
||||
|
||||
#: src/text3.C:1359 src/text3.C:1371
|
||||
#: src/text3.C:1346 src/text3.C:1358
|
||||
msgid "Character set"
|
||||
msgstr "Zeichensatz"
|
||||
|
||||
#: src/text3.C:1504
|
||||
#: src/text3.C:1491
|
||||
msgid "Paragraph layout set"
|
||||
msgstr "Absatzformat festgelegt"
|
||||
|
||||
#: src/toc.C:64 src/toc.C:133
|
||||
msgid "TOC"
|
||||
msgstr ""
|
||||
|
||||
#: src/vspace.C:487
|
||||
#, fuzzy
|
||||
msgid "Default skip"
|
||||
msgstr "Standard-Abstand:|#d"
|
||||
|
||||
#: src/vspace.C:490
|
||||
#, fuzzy
|
||||
msgid "Small skip"
|
||||
msgstr "Klein"
|
||||
|
||||
#: src/vspace.C:493
|
||||
#, fuzzy
|
||||
msgid "Medium skip"
|
||||
msgstr "Mittel"
|
||||
|
||||
#: src/vspace.C:496
|
||||
#, fuzzy
|
||||
msgid "Big skip"
|
||||
msgstr "Groß"
|
||||
|
||||
#: src/vspace.C:499
|
||||
#, fuzzy
|
||||
msgid "Vertical fill"
|
||||
msgstr "&Vertikal:"
|
||||
|
||||
#: src/vspace.C:506
|
||||
#, fuzzy
|
||||
msgid "protected"
|
||||
msgstr "&Schützen:"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Recieved:"
|
||||
#~ msgstr "Empfangen"
|
||||
|
375
po/pl.po
375
po/pl.po
@ -11,7 +11,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: pl\n"
|
||||
"Report-Msgid-Bugs-To: lyx-devel@lists.lyx.org\n"
|
||||
"POT-Creation-Date: 2005-06-28 14:09+0200\n"
|
||||
"POT-Creation-Date: 2005-07-15 20:51+0200\n"
|
||||
"PO-Revision-Date: 2005-03-31 00:28+0200\n"
|
||||
"Last-Translator: Tomasz £uczak <tlu@technodat.com.pl>\n"
|
||||
"Language-Team: Polish <pl@li.org>\n"
|
||||
@ -1980,7 +1980,7 @@ msgstr "Z
|
||||
#: src/frontends/xforms/forms/form_tabular.fd:1638
|
||||
#: src/frontends/xforms/forms/form_tabular.fd:1656
|
||||
#: src/frontends/qt2/ui/QParagraphDialogBase.ui:60
|
||||
#: src/frontends/qt2/QDocument.C:166 src/text.C:2166
|
||||
#: src/frontends/qt2/QDocument.C:166 src/text.C:2202
|
||||
msgid "Double"
|
||||
msgstr "Podwójna"
|
||||
|
||||
@ -2516,7 +2516,7 @@ msgstr ""
|
||||
#: src/frontends/qt2/ui/QDocumentDialogBase.ui:214 src/buffer_funcs.C:91
|
||||
#: src/buffer_funcs.C:117 src/buffer_funcs.C:158 src/bufferlist.C:84
|
||||
#: src/bufferlist.C:183 src/lyx_cb.C:115 src/lyx_cb.C:168 src/lyxfunc.C:623
|
||||
#: src/lyxfunc.C:785 src/lyxfunc.C:1793 src/lyxvc.C:168
|
||||
#: src/lyxfunc.C:785 src/lyxfunc.C:1791 src/lyxvc.C:168
|
||||
msgid "&Cancel"
|
||||
msgstr "&Anuluj"
|
||||
|
||||
@ -3566,7 +3566,7 @@ msgstr "Du
|
||||
msgid "Relations"
|
||||
msgstr "Relacje"
|
||||
|
||||
#: src/frontends/qt2/ui/QMathDialogBase.ui:511 lib/languages:31
|
||||
#: src/frontends/qt2/ui/QMathDialogBase.ui:511 lib/languages:32
|
||||
#: src/frontends/gtk/Dialogs.C:338 src/frontends/xforms/Dialogs.C:314
|
||||
msgid "Greek"
|
||||
msgstr "Greka"
|
||||
@ -3690,7 +3690,7 @@ msgid "Print as grey text"
|
||||
msgstr "Drukuj jako szary tekst"
|
||||
|
||||
#: src/frontends/qt2/ui/QParagraphDialogBase.ui:48
|
||||
#: src/frontends/qt2/QDocument.C:162 src/text.C:2160
|
||||
#: src/frontends/qt2/QDocument.C:162 src/text.C:2196
|
||||
msgid "Single"
|
||||
msgstr "Pojedyñczy"
|
||||
|
||||
@ -5219,7 +5219,7 @@ msgstr "Zmiana:"
|
||||
#: lib/layouts/spie.layout:19 lib/layouts/agu_stdsections.inc:29
|
||||
#: lib/layouts/aguplus.inc:27 lib/layouts/db_stdsections.inc:27
|
||||
#: lib/layouts/numarticle.inc:12 lib/layouts/numreport.inc:20
|
||||
#: lib/layouts/numrevtex.inc:5 lib/layouts/scrclass.inc:59
|
||||
#: lib/layouts/numrevtex.inc:5 lib/layouts/scrclass.inc:60
|
||||
#: lib/layouts/stdsections.inc:50 lib/layouts/svjour.inc:52
|
||||
msgid "Section"
|
||||
msgstr "Sekcja"
|
||||
@ -5237,7 +5237,7 @@ msgstr "Sekcja"
|
||||
#: lib/layouts/revtex4.layout:54 lib/layouts/siamltex.layout:58
|
||||
#: lib/layouts/agu_stdsections.inc:39 lib/layouts/aguplus.inc:41
|
||||
#: lib/layouts/db_stdsections.inc:35 lib/layouts/numarticle.inc:21
|
||||
#: lib/layouts/numrevtex.inc:14 lib/layouts/scrclass.inc:66
|
||||
#: lib/layouts/numrevtex.inc:14 lib/layouts/scrclass.inc:67
|
||||
#: lib/layouts/stdsections.inc:71 lib/layouts/svjour.inc:61
|
||||
msgid "Subsection"
|
||||
msgstr "Podsekcja"
|
||||
@ -5253,7 +5253,7 @@ msgstr "Podsekcja"
|
||||
#: lib/layouts/revtex.layout:56 lib/layouts/revtex4.layout:62
|
||||
#: lib/layouts/siamltex.layout:64 lib/layouts/agu_stdsections.inc:49
|
||||
#: lib/layouts/db_stdsections.inc:43 lib/layouts/numarticle.inc:30
|
||||
#: lib/layouts/numrevtex.inc:23 lib/layouts/scrclass.inc:73
|
||||
#: lib/layouts/numrevtex.inc:23 lib/layouts/scrclass.inc:74
|
||||
#: lib/layouts/stdsections.inc:84 lib/layouts/svjour.inc:70
|
||||
msgid "Subsubsection"
|
||||
msgstr "Podpodsekcja"
|
||||
@ -5291,7 +5291,7 @@ msgstr "Podpodsekcja*"
|
||||
#: lib/layouts/siamltex.layout:142 lib/layouts/spie.layout:71
|
||||
#: lib/layouts/svglobal.layout:28 lib/layouts/svjog.layout:33
|
||||
#: lib/layouts/agu_stdtitle.inc:191 lib/layouts/amsdefs.inc:124
|
||||
#: lib/layouts/db_stdstruct.inc:10 lib/layouts/scrclass.inc:214
|
||||
#: lib/layouts/db_stdstruct.inc:10 lib/layouts/scrclass.inc:215
|
||||
#: lib/layouts/stdstruct.inc:11 lib/layouts/stdstruct.inc:26
|
||||
#: lib/layouts/svjour.inc:252 src/output_plaintext.C:155
|
||||
msgid "Abstract"
|
||||
@ -5331,7 +5331,7 @@ msgstr "S
|
||||
#: lib/layouts/scrreprt.layout:10 lib/layouts/scrreprt.layout:12
|
||||
#: lib/layouts/siamltex.layout:182 lib/layouts/aguplus.inc:168
|
||||
#: lib/layouts/aguplus.inc:170 lib/layouts/amsdefs.inc:225
|
||||
#: lib/layouts/scrclass.inc:221 lib/layouts/stdstruct.inc:38
|
||||
#: lib/layouts/scrclass.inc:222 lib/layouts/stdstruct.inc:38
|
||||
#: lib/layouts/svjour.inc:326 src/frontends/qt2/QDocumentDialog.C:82
|
||||
msgid "Bibliography"
|
||||
msgstr "Bibliografia"
|
||||
@ -5401,7 +5401,7 @@ msgstr "Opis"
|
||||
|
||||
#: lib/layouts/aa.layout:54 lib/layouts/aapaper.layout:56
|
||||
#: lib/layouts/aastex.layout:84 lib/layouts/egs.layout:126
|
||||
#: lib/layouts/scrclass.inc:38 lib/layouts/stdlists.inc:68
|
||||
#: lib/layouts/scrclass.inc:39 lib/layouts/stdlists.inc:68
|
||||
#: lib/ui/stdtoolbars.ui:68
|
||||
msgid "List"
|
||||
msgstr "Lista"
|
||||
@ -5423,7 +5423,7 @@ msgstr "Lista"
|
||||
#: lib/layouts/scrlttr2.layout:276 lib/layouts/siamltex.layout:108
|
||||
#: lib/layouts/svprobth.layout:34 lib/layouts/agu_stdtitle.inc:244
|
||||
#: lib/layouts/amsdefs.inc:59 lib/layouts/db_stdtitle.inc:12
|
||||
#: lib/layouts/scrclass.inc:144 lib/layouts/stdtitle.inc:11
|
||||
#: lib/layouts/scrclass.inc:145 lib/layouts/stdtitle.inc:11
|
||||
#: lib/layouts/svjour.inc:129
|
||||
msgid "Title"
|
||||
msgstr "Tytu³"
|
||||
@ -5448,7 +5448,7 @@ msgstr "Podtytu
|
||||
#: lib/layouts/revtex.layout:97 lib/layouts/revtex4.layout:114
|
||||
#: lib/layouts/siamltex.layout:125 lib/layouts/svprobth.layout:51
|
||||
#: lib/layouts/agu_stdtitle.inc:165 lib/layouts/amsdefs.inc:80
|
||||
#: lib/layouts/db_stdtitle.inc:20 lib/layouts/scrclass.inc:152
|
||||
#: lib/layouts/db_stdtitle.inc:20 lib/layouts/scrclass.inc:153
|
||||
#: lib/layouts/stdtitle.inc:30 lib/layouts/svjour.inc:182
|
||||
msgid "Author"
|
||||
msgstr "Autor"
|
||||
@ -5484,7 +5484,7 @@ msgstr ""
|
||||
#: lib/layouts/scrlettr.layout:172 lib/layouts/scrlttr2.layout:244
|
||||
#: lib/layouts/siamltex.layout:136 lib/layouts/agu_stdtitle.inc:236
|
||||
#: lib/layouts/amsdefs.inc:100 lib/layouts/db_stdtitle.inc:34
|
||||
#: lib/layouts/scrclass.inc:159 lib/layouts/stdtitle.inc:49
|
||||
#: lib/layouts/scrclass.inc:160 lib/layouts/stdtitle.inc:49
|
||||
#: lib/layouts/svjour.inc:230
|
||||
msgid "Date"
|
||||
msgstr "Data"
|
||||
@ -5542,7 +5542,7 @@ msgstr "S
|
||||
#: lib/layouts/revtex4.layout:70 lib/layouts/siamltex.layout:70
|
||||
#: lib/layouts/agu_stdsections.inc:59 lib/layouts/aguplus.inc:55
|
||||
#: lib/layouts/db_stdsections.inc:51 lib/layouts/numarticle.inc:39
|
||||
#: lib/layouts/numrevtex.inc:32 lib/layouts/scrclass.inc:80
|
||||
#: lib/layouts/numrevtex.inc:32 lib/layouts/scrclass.inc:81
|
||||
#: lib/layouts/stdsections.inc:96 lib/layouts/svjour.inc:79
|
||||
msgid "Paragraph"
|
||||
msgstr "Akapit"
|
||||
@ -6022,7 +6022,7 @@ msgstr ""
|
||||
#: lib/layouts/paper.layout:31 lib/layouts/scrartcl.layout:20
|
||||
#: lib/layouts/seminar.layout:24 lib/layouts/agu_stdsections.inc:11
|
||||
#: lib/layouts/db_stdsections.inc:11 lib/layouts/numarticle.inc:4
|
||||
#: lib/layouts/numreport.inc:6 lib/layouts/scrclass.inc:44
|
||||
#: lib/layouts/numreport.inc:6 lib/layouts/scrclass.inc:45
|
||||
#: lib/layouts/stdsections.inc:10
|
||||
msgid "Part"
|
||||
msgstr "Czê¶æ"
|
||||
@ -6353,7 +6353,7 @@ msgstr "Data"
|
||||
#: lib/layouts/linuxdoc.layout:153 lib/layouts/llncs.layout:77
|
||||
#: lib/layouts/memoir.layout:69 lib/layouts/paper.layout:80
|
||||
#: lib/layouts/agu_stdsections.inc:69 lib/layouts/db_stdsections.inc:59
|
||||
#: lib/layouts/numarticle.inc:48 lib/layouts/scrclass.inc:87
|
||||
#: lib/layouts/numarticle.inc:48 lib/layouts/scrclass.inc:88
|
||||
#: lib/layouts/stdsections.inc:104 lib/layouts/svjour.inc:88
|
||||
msgid "Subparagraph"
|
||||
msgstr "Podakapit"
|
||||
@ -7491,7 +7491,7 @@ msgstr "SGML"
|
||||
#: lib/layouts/llncs.layout:38 lib/layouts/memoir.layout:44
|
||||
#: lib/layouts/scrbook.layout:15 lib/layouts/agu_stdsections.inc:20
|
||||
#: lib/layouts/db_stdsections.inc:19 lib/layouts/numreport.inc:11
|
||||
#: lib/layouts/scrclass.inc:51 lib/layouts/stdsections.inc:30
|
||||
#: lib/layouts/scrclass.inc:52 lib/layouts/stdsections.inc:30
|
||||
msgid "Chapter"
|
||||
msgstr "Rozdzia³"
|
||||
|
||||
@ -7786,7 +7786,7 @@ msgid "Title:"
|
||||
msgstr "Tytu³"
|
||||
|
||||
#: lib/layouts/scrlettr.layout:207 lib/layouts/scrlttr2.layout:284
|
||||
#: lib/layouts/scrclass.inc:166
|
||||
#: lib/layouts/scrclass.inc:167
|
||||
msgid "Subject"
|
||||
msgstr "Temat"
|
||||
|
||||
@ -8623,63 +8623,63 @@ msgstr "Podpodsekcja"
|
||||
msgid " \\alph{paragraph}."
|
||||
msgstr ""
|
||||
|
||||
#: lib/layouts/scrclass.inc:96
|
||||
#: lib/layouts/scrclass.inc:97
|
||||
msgid "Addpart"
|
||||
msgstr ""
|
||||
|
||||
#: lib/layouts/scrclass.inc:102
|
||||
#: lib/layouts/scrclass.inc:103
|
||||
msgid "Addchap"
|
||||
msgstr ""
|
||||
|
||||
#: lib/layouts/scrclass.inc:108
|
||||
#: lib/layouts/scrclass.inc:109
|
||||
msgid "Addsec"
|
||||
msgstr ""
|
||||
|
||||
#: lib/layouts/scrclass.inc:114
|
||||
#: lib/layouts/scrclass.inc:115
|
||||
msgid "Addchap*"
|
||||
msgstr ""
|
||||
|
||||
#: lib/layouts/scrclass.inc:120
|
||||
#: lib/layouts/scrclass.inc:121
|
||||
msgid "Addsec*"
|
||||
msgstr ""
|
||||
|
||||
#: lib/layouts/scrclass.inc:126
|
||||
#: lib/layouts/scrclass.inc:127
|
||||
msgid "Minisec"
|
||||
msgstr ""
|
||||
|
||||
#: lib/layouts/scrclass.inc:172
|
||||
#: lib/layouts/scrclass.inc:173
|
||||
msgid "Publishers"
|
||||
msgstr "Wydawcy"
|
||||
|
||||
#: lib/layouts/scrclass.inc:178 lib/layouts/svjour.inc:121
|
||||
#: lib/layouts/scrclass.inc:179 lib/layouts/svjour.inc:121
|
||||
msgid "Dedication"
|
||||
msgstr "Dedykacja"
|
||||
|
||||
#: lib/layouts/scrclass.inc:184
|
||||
#: lib/layouts/scrclass.inc:185
|
||||
msgid "Titlehead"
|
||||
msgstr ""
|
||||
|
||||
#: lib/layouts/scrclass.inc:195
|
||||
#: lib/layouts/scrclass.inc:196
|
||||
msgid "Uppertitleback"
|
||||
msgstr ""
|
||||
|
||||
#: lib/layouts/scrclass.inc:201
|
||||
#: lib/layouts/scrclass.inc:202
|
||||
msgid "Lowertitleback"
|
||||
msgstr ""
|
||||
|
||||
#: lib/layouts/scrclass.inc:207
|
||||
#: lib/layouts/scrclass.inc:208
|
||||
msgid "Extratitle"
|
||||
msgstr ""
|
||||
|
||||
#: lib/layouts/scrclass.inc:229
|
||||
#: lib/layouts/scrclass.inc:230
|
||||
msgid "Captionabove"
|
||||
msgstr "PodpisPowy¿ej"
|
||||
|
||||
#: lib/layouts/scrclass.inc:235
|
||||
#: lib/layouts/scrclass.inc:236
|
||||
msgid "Captionbelow"
|
||||
msgstr "PodpisPoni¿ej"
|
||||
|
||||
#: lib/layouts/scrclass.inc:241
|
||||
#: lib/layouts/scrclass.inc:242
|
||||
msgid "Dictum"
|
||||
msgstr ""
|
||||
|
||||
@ -8841,119 +8841,119 @@ msgstr "Esto
|
||||
msgid "Finnish"
|
||||
msgstr "Fiñski"
|
||||
|
||||
#: lib/languages:25
|
||||
#: lib/languages:26
|
||||
msgid "French"
|
||||
msgstr "Francuski"
|
||||
|
||||
#: lib/languages:26
|
||||
#: lib/languages:27
|
||||
msgid "Galician"
|
||||
msgstr "Galicyjski"
|
||||
|
||||
#: lib/languages:29
|
||||
#: lib/languages:30
|
||||
msgid "German"
|
||||
msgstr "Niemiecki"
|
||||
|
||||
#: lib/languages:30
|
||||
#: lib/languages:31
|
||||
msgid "German (new spelling)"
|
||||
msgstr "Niemiecki (nowa ortografia)"
|
||||
|
||||
#: lib/languages:32
|
||||
#: lib/languages:33
|
||||
msgid "Hebrew"
|
||||
msgstr "Hebrajski"
|
||||
|
||||
#: lib/languages:34
|
||||
#: lib/languages:35
|
||||
msgid "Irish"
|
||||
msgstr "Irlandzki"
|
||||
|
||||
#: lib/languages:35
|
||||
#: lib/languages:36
|
||||
msgid "Italian"
|
||||
msgstr "W³oski"
|
||||
|
||||
#: lib/languages:36
|
||||
#: lib/languages:37
|
||||
msgid "Kazakh"
|
||||
msgstr "Kazachski"
|
||||
|
||||
#: lib/languages:39
|
||||
#: lib/languages:40
|
||||
msgid "Lithuanian"
|
||||
msgstr "Litewski"
|
||||
|
||||
#: lib/languages:40
|
||||
#: lib/languages:41
|
||||
msgid "Latvian"
|
||||
msgstr "£otewski"
|
||||
|
||||
#: lib/languages:41
|
||||
#: lib/languages:42
|
||||
msgid "Icelandic"
|
||||
msgstr "Islandzki"
|
||||
|
||||
#: lib/languages:42
|
||||
#: lib/languages:43
|
||||
msgid "Magyar"
|
||||
msgstr "Wêgierski"
|
||||
|
||||
#: lib/languages:43
|
||||
#: lib/languages:44
|
||||
msgid "Norsk"
|
||||
msgstr "Norweski"
|
||||
|
||||
#: lib/languages:44
|
||||
#: lib/languages:45
|
||||
msgid "Nynorsk"
|
||||
msgstr "Norweski (Nynorsk)"
|
||||
|
||||
#: lib/languages:45
|
||||
#: lib/languages:46
|
||||
msgid "Polish"
|
||||
msgstr "Polski"
|
||||
|
||||
#: lib/languages:46
|
||||
#: lib/languages:47
|
||||
msgid "Portugese"
|
||||
msgstr "Portugalski"
|
||||
|
||||
#: lib/languages:47
|
||||
#: lib/languages:48
|
||||
msgid "Romanian"
|
||||
msgstr "Rumuñski"
|
||||
|
||||
#: lib/languages:48
|
||||
#: lib/languages:49
|
||||
msgid "Russian"
|
||||
msgstr "Rosyjski"
|
||||
|
||||
#: lib/languages:49
|
||||
#: lib/languages:50
|
||||
msgid "Scottish"
|
||||
msgstr "Szkocki"
|
||||
|
||||
#: lib/languages:50
|
||||
#: lib/languages:51
|
||||
msgid "Serbian"
|
||||
msgstr "Serbski"
|
||||
|
||||
#: lib/languages:51
|
||||
#: lib/languages:52
|
||||
msgid "Serbo-Croatian"
|
||||
msgstr "Serbsko-Chorwacki"
|
||||
|
||||
#: lib/languages:52
|
||||
#: lib/languages:53
|
||||
msgid "Spanish"
|
||||
msgstr "Hiszpañski"
|
||||
|
||||
#: lib/languages:53
|
||||
#: lib/languages:54
|
||||
msgid "Slovak"
|
||||
msgstr "S³owacki"
|
||||
|
||||
#: lib/languages:54
|
||||
#: lib/languages:55
|
||||
msgid "Slovene"
|
||||
msgstr "S³oweñski"
|
||||
|
||||
#: lib/languages:55
|
||||
#: lib/languages:56
|
||||
msgid "Swedish"
|
||||
msgstr "Szwedzki"
|
||||
|
||||
#: lib/languages:56
|
||||
#: lib/languages:57
|
||||
msgid "Thai"
|
||||
msgstr "Tajski"
|
||||
|
||||
#: lib/languages:57
|
||||
#: lib/languages:58
|
||||
msgid "Turkish"
|
||||
msgstr "Turecki"
|
||||
|
||||
#: lib/languages:58
|
||||
#: lib/languages:59
|
||||
msgid "Ukrainian"
|
||||
msgstr "Ukraiñski"
|
||||
|
||||
#: lib/languages:61
|
||||
#: lib/languages:62
|
||||
msgid "Welsh"
|
||||
msgstr "Walijski"
|
||||
|
||||
@ -10445,54 +10445,54 @@ msgstr ""
|
||||
msgid "Formatting document..."
|
||||
msgstr "Formatowanie dokumentu"
|
||||
|
||||
#: src/BufferView_pimpl.C:702
|
||||
#: src/BufferView_pimpl.C:703
|
||||
#, c-format
|
||||
msgid "Saved bookmark %1$d"
|
||||
msgstr "Zapisano zak³adkê %1$d"
|
||||
|
||||
#: src/BufferView_pimpl.C:735
|
||||
#: src/BufferView_pimpl.C:736
|
||||
#, c-format
|
||||
msgid "Moved to bookmark %1$d"
|
||||
msgstr "Przeniesiono do zak³adki %1$d"
|
||||
|
||||
#: src/BufferView_pimpl.C:794
|
||||
#: src/BufferView_pimpl.C:795
|
||||
msgid "Select LyX document to insert"
|
||||
msgstr "Wybierz dokument LyX-a do wstawienia"
|
||||
|
||||
#: src/BufferView_pimpl.C:796 src/frontends/controllers/ControlBibtex.C:48
|
||||
#: src/BufferView_pimpl.C:797 src/frontends/controllers/ControlBibtex.C:48
|
||||
#: src/frontends/controllers/ControlBibtex.C:59
|
||||
#: src/frontends/controllers/ControlExternal.C:160
|
||||
#: src/frontends/controllers/ControlGraphics.C:94
|
||||
#: src/frontends/controllers/ControlInclude.C:90 src/lyx_cb.C:133
|
||||
#: src/lyxfunc.C:1634 src/lyxfunc.C:1671 src/lyxfunc.C:1746
|
||||
#: src/lyxfunc.C:1632 src/lyxfunc.C:1669 src/lyxfunc.C:1744
|
||||
msgid "Documents|#o#O"
|
||||
msgstr "Dokumenty|#o"
|
||||
|
||||
#: src/BufferView_pimpl.C:798 src/lyxfunc.C:1673 src/lyxfunc.C:1748
|
||||
#: src/BufferView_pimpl.C:799 src/lyxfunc.C:1671 src/lyxfunc.C:1746
|
||||
msgid "Examples|#E#e"
|
||||
msgstr "Przyk³ady|#P"
|
||||
|
||||
#: src/BufferView_pimpl.C:803 src/lyx_cb.C:141 src/lyxfunc.C:1641
|
||||
#: src/lyxfunc.C:1678
|
||||
#: src/BufferView_pimpl.C:804 src/lyx_cb.C:141 src/lyxfunc.C:1639
|
||||
#: src/lyxfunc.C:1676
|
||||
msgid "LyX Documents (*.lyx)"
|
||||
msgstr "Dokumenty LyX-a (*.lyx)"
|
||||
|
||||
#: src/BufferView_pimpl.C:813 src/lyxfunc.C:1688 src/lyxfunc.C:1766
|
||||
#: src/lyxfunc.C:1780 src/lyxfunc.C:1796
|
||||
#: src/BufferView_pimpl.C:814 src/lyxfunc.C:1686 src/lyxfunc.C:1764
|
||||
#: src/lyxfunc.C:1778 src/lyxfunc.C:1794
|
||||
msgid "Canceled."
|
||||
msgstr "Zaniechane."
|
||||
|
||||
#: src/BufferView_pimpl.C:823
|
||||
#: src/BufferView_pimpl.C:824
|
||||
#, c-format
|
||||
msgid "Inserting document %1$s..."
|
||||
msgstr "Wstawianie dokumentu %1$s"
|
||||
|
||||
#: src/BufferView_pimpl.C:834
|
||||
#: src/BufferView_pimpl.C:835
|
||||
#, c-format
|
||||
msgid "Document %1$s inserted."
|
||||
msgstr "Wstawiono dokument %1$s"
|
||||
|
||||
#: src/BufferView_pimpl.C:835
|
||||
#: src/BufferView_pimpl.C:836
|
||||
#, c-format
|
||||
msgid "Could not insert document %1$s"
|
||||
msgstr "Nie mo¿na wstawiæ dokumentu %1$s"
|
||||
@ -10864,7 +10864,7 @@ msgstr "Nieznana klasa dokumentu"
|
||||
msgid "Using the default document class, because the class %1$s is unknown."
|
||||
msgstr "U¿yto domy¶lnej klasy dokumentu, poniewa¿ klasa %1$s jest nieznana."
|
||||
|
||||
#: src/buffer.C:443 src/text.C:335
|
||||
#: src/buffer.C:443 src/text.C:339
|
||||
#, c-format
|
||||
msgid "Unknown token: %1$s %2$s\n"
|
||||
msgstr "Nieznany token %1$s %2$s\n"
|
||||
@ -11092,7 +11092,7 @@ msgstr "Niedost
|
||||
msgid "LyX will not be able to produce output."
|
||||
msgstr "LyX nie jest zdolny do wyprodukowania wyniku"
|
||||
|
||||
#: src/bufferview_funcs.C:281
|
||||
#: src/bufferview_funcs.C:285
|
||||
msgid "No more insets"
|
||||
msgstr "Brak innych wstawek"
|
||||
|
||||
@ -11286,7 +11286,7 @@ msgstr ""
|
||||
msgid "Over-write file?"
|
||||
msgstr "Zast±piæ plik?"
|
||||
|
||||
#: src/exporter.C:77 src/lyx_cb.C:168 src/lyxfunc.C:1793
|
||||
#: src/exporter.C:77 src/lyx_cb.C:168 src/lyxfunc.C:1791
|
||||
msgid "&Over-write"
|
||||
msgstr "&Zastêpowanie"
|
||||
|
||||
@ -11578,22 +11578,45 @@ msgstr "Nie znaleziono historii kontroli wersji"
|
||||
msgid "Choose bind file"
|
||||
msgstr "Wybierz plik skrótów"
|
||||
|
||||
#: src/frontends/controllers/ControlPrefs.C:125
|
||||
msgid "LyX bind files (*.bind)"
|
||||
msgstr ""
|
||||
|
||||
#: src/frontends/controllers/ControlPrefs.C:131
|
||||
msgid "Choose UI file"
|
||||
msgstr "Wybierz plik menu"
|
||||
|
||||
#: src/frontends/controllers/ControlPrefs.C:132
|
||||
#, fuzzy
|
||||
msgid "LyX UI files (*.ui)"
|
||||
msgstr "Wszystkie pliki (*)"
|
||||
|
||||
#: src/frontends/controllers/ControlPrefs.C:138
|
||||
msgid "Choose keyboard map"
|
||||
msgstr "Wybierz mapê klawiatury"
|
||||
|
||||
#: src/frontends/controllers/ControlPrefs.C:139
|
||||
#, fuzzy
|
||||
msgid "LyX keyboard maps (*.kmap)"
|
||||
msgstr "U¿yj mapy &klawiatury"
|
||||
|
||||
#: src/frontends/controllers/ControlPrefs.C:145
|
||||
msgid "Choose personal dictionary"
|
||||
msgstr "Wybierz s³ownik osobisty"
|
||||
|
||||
#: src/frontends/controllers/ControlPrefs.C:146
|
||||
#, fuzzy
|
||||
msgid "*.ispell"
|
||||
msgstr "ispell"
|
||||
|
||||
#: src/frontends/controllers/ControlPrint.C:73
|
||||
msgid "Print to file"
|
||||
msgstr "Drukuj do pliku"
|
||||
|
||||
#: src/frontends/controllers/ControlPrint.C:74
|
||||
msgid "PostScript files (*.ps)"
|
||||
msgstr ""
|
||||
|
||||
#: src/frontends/controllers/ControlSpellchecker.C:111
|
||||
msgid "The spell-checker could not be started"
|
||||
msgstr "Nie mo¿na uruchomiæ sprawdzania pisowni"
|
||||
@ -11803,7 +11826,7 @@ msgstr "Operatory AMS"
|
||||
msgid "Box Settings"
|
||||
msgstr "Ustawienia pude³ka"
|
||||
|
||||
#: src/frontends/gtk/GChanges.C:33 src/frontends/qt2/QChanges.C:33
|
||||
#: src/frontends/gtk/GChanges.C:33 src/frontends/qt2/QChanges.C:36
|
||||
#: src/frontends/xforms/FormChanges.C:32
|
||||
msgid "Merge Changes"
|
||||
msgstr "£±czenie zmian"
|
||||
@ -11989,12 +12012,12 @@ msgstr "Konfiguracja TeX-a|X"
|
||||
msgid "Table of Contents"
|
||||
msgstr "Spis tre¶ci"
|
||||
|
||||
#: src/frontends/gtk/GToc.C:117 src/frontends/xforms/FormErrorList.C:83
|
||||
#: src/frontends/gtk/GToc.C:116 src/frontends/xforms/FormErrorList.C:83
|
||||
#: src/frontends/xforms/FormToc.C:103 src/frontends/xforms/FormToc.C:121
|
||||
msgid "*** No Lists ***"
|
||||
msgstr "*** Brak spisu ***"
|
||||
|
||||
#: src/frontends/gtk/GToc.C:136
|
||||
#: src/frontends/gtk/GToc.C:135
|
||||
msgid "*** No Items ***"
|
||||
msgstr "*** Brak elementów ***"
|
||||
|
||||
@ -12065,6 +12088,18 @@ msgstr "Bibliografia"
|
||||
msgid "Branch Settings"
|
||||
msgstr "Ustawienia ga³êzi"
|
||||
|
||||
#: src/frontends/qt2/QChanges.C:66
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"Change by %1$s\n"
|
||||
"\n"
|
||||
msgstr "Zmieniony przez:"
|
||||
|
||||
#: src/frontends/qt2/QChanges.C:68
|
||||
#, c-format
|
||||
msgid "Change made at %1$s\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/frontends/qt2/QCommandBuffer.C:79
|
||||
msgid "Previous command"
|
||||
msgstr "Poprzednie polecenie"
|
||||
@ -12141,7 +12176,7 @@ msgstr "headings"
|
||||
msgid "fancy"
|
||||
msgstr "fancy"
|
||||
|
||||
#: src/frontends/qt2/QDocument.C:164 src/text.C:2163
|
||||
#: src/frontends/qt2/QDocument.C:164 src/text.C:2199
|
||||
msgid "OneHalf"
|
||||
msgstr "Pó³tora"
|
||||
|
||||
@ -12296,30 +12331,34 @@ msgid "Bold\t\\mathbf"
|
||||
msgstr "Pogrubiona\t\\mathbf"
|
||||
|
||||
#: src/frontends/qt2/QMathDialog.C:142
|
||||
msgid "Bold symbol\t\\boldsymbol"
|
||||
msgstr ""
|
||||
|
||||
#: src/frontends/qt2/QMathDialog.C:143
|
||||
msgid "Sans serif\t\\mathsf"
|
||||
msgstr "Bezszeryfowa\t\\mathsf"
|
||||
|
||||
#: src/frontends/qt2/QMathDialog.C:143
|
||||
#: src/frontends/qt2/QMathDialog.C:144
|
||||
msgid "Italic\t\\mathit"
|
||||
msgstr "Kursywa\t\\mathit"
|
||||
|
||||
#: src/frontends/qt2/QMathDialog.C:144
|
||||
#: src/frontends/qt2/QMathDialog.C:145
|
||||
msgid "Typewriter\t\\mathtt"
|
||||
msgstr "Maszynowa\t\\mathtt"
|
||||
|
||||
#: src/frontends/qt2/QMathDialog.C:145
|
||||
#: src/frontends/qt2/QMathDialog.C:146
|
||||
msgid "Blackboard\t\\mathbb"
|
||||
msgstr ""
|
||||
|
||||
#: src/frontends/qt2/QMathDialog.C:146
|
||||
#: src/frontends/qt2/QMathDialog.C:147
|
||||
msgid "Fraktur\t\\mathfrak"
|
||||
msgstr ""
|
||||
|
||||
#: src/frontends/qt2/QMathDialog.C:147
|
||||
#: src/frontends/qt2/QMathDialog.C:148
|
||||
msgid "Calligraphic\t\\mathcal"
|
||||
msgstr "Kaligraficzna\t\\mathcal"
|
||||
|
||||
#: src/frontends/qt2/QMathDialog.C:148
|
||||
#: src/frontends/qt2/QMathDialog.C:149
|
||||
msgid "Normal text mode\t\\textrm"
|
||||
msgstr "Normalny tryb tekstowy\t\\textrm"
|
||||
|
||||
@ -13730,11 +13769,21 @@ msgstr "zaimportowany."
|
||||
msgid "Opened inset"
|
||||
msgstr "Otwarta wstawka"
|
||||
|
||||
#: src/insets/insetbibtex.C:95
|
||||
#: src/insets/insetbibtex.C:104
|
||||
#, fuzzy
|
||||
msgid "BibTeX Generated Bibliography"
|
||||
msgstr "Odno¶niki wygenerowane przez BibTeXa"
|
||||
|
||||
#: src/insets/insetbibtex.C:189
|
||||
msgid "Export Warning!"
|
||||
msgstr ""
|
||||
|
||||
#: src/insets/insetbibtex.C:190
|
||||
msgid ""
|
||||
"There are spaces in the paths to your BibTeX databases.\n"
|
||||
"BibTeX will be unable to find them."
|
||||
msgstr ""
|
||||
|
||||
#: src/insets/insetbox.C:57
|
||||
msgid "Boxed"
|
||||
msgstr "Pude³ko"
|
||||
@ -13767,6 +13816,11 @@ msgstr "Otwarta wstawka pude
|
||||
msgid "Opened Branch Inset"
|
||||
msgstr "Otwarta wstawka ga³êzi"
|
||||
|
||||
#: src/insets/insetbranch.C:97
|
||||
#, fuzzy
|
||||
msgid "Branch: "
|
||||
msgstr "Ga³±¼"
|
||||
|
||||
#: src/insets/insetcaption.C:77
|
||||
msgid "Opened Caption Inset"
|
||||
msgstr "Otwarta wstawka podpisu"
|
||||
@ -13841,12 +13895,12 @@ msgstr ""
|
||||
"%1$s\n"
|
||||
"do katalogu tymczasowego."
|
||||
|
||||
#: src/insets/insetgraphics.C:689
|
||||
#: src/insets/insetgraphics.C:693
|
||||
#, c-format
|
||||
msgid "No conversion of %1$s is needed after all"
|
||||
msgstr ""
|
||||
|
||||
#: src/insets/insetgraphics.C:787
|
||||
#: src/insets/insetgraphics.C:791
|
||||
#, c-format
|
||||
msgid "Graphics file: %1$s"
|
||||
msgstr "Plik rysunku: %1$s"
|
||||
@ -13957,11 +14011,11 @@ msgstr ""
|
||||
msgid "Opened table"
|
||||
msgstr "Otwarta tabela"
|
||||
|
||||
#: src/insets/insettabular.C:1561
|
||||
#: src/insets/insettabular.C:1552
|
||||
msgid "Error setting multicolumn"
|
||||
msgstr "B³±d ustawienia wielokolumnowej komórki"
|
||||
|
||||
#: src/insets/insettabular.C:1562
|
||||
#: src/insets/insettabular.C:1553
|
||||
msgid "You cannot set multicolumn vertically."
|
||||
msgstr "Nie mo¿na ustawiæ wielokolumnowej komórki pionowo"
|
||||
|
||||
@ -14176,11 +14230,11 @@ msgstr "&Zmie
|
||||
msgid "Choose a filename to save document as"
|
||||
msgstr "Wprowad¼ nazwê pliku pod jak± dokument ma byæ zapisany"
|
||||
|
||||
#: src/lyx_cb.C:135 src/lyxfunc.C:1636
|
||||
#: src/lyx_cb.C:135 src/lyxfunc.C:1634
|
||||
msgid "Templates|#T#t"
|
||||
msgstr "Szablony|#S"
|
||||
|
||||
#: src/lyx_cb.C:165 src/lyxfunc.C:1790
|
||||
#: src/lyx_cb.C:165 src/lyxfunc.C:1788
|
||||
#, c-format
|
||||
msgid ""
|
||||
"The document %1$s already exists.\n"
|
||||
@ -14191,7 +14245,7 @@ msgstr ""
|
||||
"\n"
|
||||
"Czy chcesz go zast±piæ?"
|
||||
|
||||
#: src/lyx_cb.C:167 src/lyxfunc.C:1792
|
||||
#: src/lyx_cb.C:167 src/lyxfunc.C:1790
|
||||
msgid "Over-write document?"
|
||||
msgstr "Zastapiæ dokument?"
|
||||
|
||||
@ -14566,7 +14620,7 @@ msgstr ""
|
||||
msgid "ChkTeX"
|
||||
msgstr "ChkTeX"
|
||||
|
||||
#: src/lyxfunc.C:981 src/text3.C:1254
|
||||
#: src/lyxfunc.C:981 src/text3.C:1241
|
||||
msgid "Missing argument"
|
||||
msgstr "Brakuje argumentu"
|
||||
|
||||
@ -14598,43 +14652,43 @@ msgstr "Ustawienia domy
|
||||
msgid "Unable to save document defaults"
|
||||
msgstr "Nie mo¿na zapisaæ ustawieñ domy¶lnych"
|
||||
|
||||
#: src/lyxfunc.C:1476
|
||||
#: src/lyxfunc.C:1477
|
||||
msgid "Converting document to new document class..."
|
||||
msgstr "Konwersja dokumentu do nowej klasy"
|
||||
|
||||
#: src/lyxfunc.C:1483
|
||||
#: src/lyxfunc.C:1484
|
||||
msgid "Class switch"
|
||||
msgstr ""
|
||||
|
||||
#: src/lyxfunc.C:1632
|
||||
#: src/lyxfunc.C:1630
|
||||
msgid "Select template file"
|
||||
msgstr "Wybierz plik szablonu"
|
||||
|
||||
#: src/lyxfunc.C:1669
|
||||
#: src/lyxfunc.C:1667
|
||||
msgid "Select document to open"
|
||||
msgstr "Wybierz dokument do otwarcia"
|
||||
|
||||
#: src/lyxfunc.C:1710
|
||||
#: src/lyxfunc.C:1708
|
||||
#, c-format
|
||||
msgid "Opening document %1$s..."
|
||||
msgstr "Otwieranie dokumentu %1$s"
|
||||
|
||||
#: src/lyxfunc.C:1714
|
||||
#: src/lyxfunc.C:1712
|
||||
#, c-format
|
||||
msgid "Document %1$s opened."
|
||||
msgstr "Dokument %1$s jest ju¿ otwarty."
|
||||
|
||||
#: src/lyxfunc.C:1716
|
||||
#: src/lyxfunc.C:1714
|
||||
#, c-format
|
||||
msgid "Could not open document %1$s"
|
||||
msgstr "Nie mo¿na otworzyæ dokumentu %1$s"
|
||||
|
||||
#: src/lyxfunc.C:1741
|
||||
#: src/lyxfunc.C:1739
|
||||
#, c-format
|
||||
msgid "Select %1$s file to import"
|
||||
msgstr "Wybierz dokument %1$s do importu"
|
||||
|
||||
#: src/lyxfunc.C:1851
|
||||
#: src/lyxfunc.C:1849
|
||||
msgid "Welcome to LyX!"
|
||||
msgstr "Witaj w LyXie!"
|
||||
|
||||
@ -15148,7 +15202,7 @@ msgstr "Przywr
|
||||
msgid " Macro: %1$s: "
|
||||
msgstr "Makro: %1$s: "
|
||||
|
||||
#: src/mathed/math_amsarrayinset.C:110 src/mathed/math_hullinset.C:1137
|
||||
#: src/mathed/math_amsarrayinset.C:110 src/mathed/math_hullinset.C:1153
|
||||
#: src/mathed/math_splitinset.C:73 src/mathed/math_substackinset.C:69
|
||||
#, c-format
|
||||
msgid "Can't add vertical grid lines in '%1$s'"
|
||||
@ -15159,67 +15213,67 @@ msgstr ""
|
||||
msgid "No vertical grid lines in '%1$s'"
|
||||
msgstr ""
|
||||
|
||||
#: src/mathed/math_gridinset.C:1252
|
||||
#: src/mathed/math_gridinset.C:1272
|
||||
msgid "Only one row"
|
||||
msgstr "Tylko jeden wiersz"
|
||||
|
||||
#: src/mathed/math_gridinset.C:1258
|
||||
#: src/mathed/math_gridinset.C:1278
|
||||
msgid "Only one column"
|
||||
msgstr "Tylko jedna kolumna"
|
||||
|
||||
#: src/mathed/math_gridinset.C:1266
|
||||
#: src/mathed/math_gridinset.C:1286
|
||||
msgid "No hline to delete"
|
||||
msgstr "Brak pionowej linii do usuniêcia"
|
||||
|
||||
#: src/mathed/math_gridinset.C:1275
|
||||
#: src/mathed/math_gridinset.C:1295
|
||||
msgid "No vline to delete"
|
||||
msgstr "Brak poziomej linii do usuniêcia"
|
||||
|
||||
#: src/mathed/math_gridinset.C:1293
|
||||
#: src/mathed/math_gridinset.C:1313
|
||||
#, c-format
|
||||
msgid "Unknown tabular feature '%1$s'"
|
||||
msgstr ""
|
||||
|
||||
#: src/mathed/math_hullinset.C:1012 src/mathed/math_hullinset.C:1021
|
||||
#: src/mathed/math_hullinset.C:1026 src/mathed/math_hullinset.C:1035
|
||||
msgid "No number"
|
||||
msgstr "Bez numeracji"
|
||||
|
||||
#: src/mathed/math_hullinset.C:1012 src/mathed/math_hullinset.C:1021
|
||||
#: src/mathed/math_hullinset.C:1026 src/mathed/math_hullinset.C:1035
|
||||
msgid "Number"
|
||||
msgstr "Numeracja"
|
||||
|
||||
#: src/mathed/math_hullinset.C:1036
|
||||
#: src/mathed/math_hullinset.C:1050
|
||||
msgid "Enter new label to insert:"
|
||||
msgstr "Podaj now± etykietê do wstawienia:"
|
||||
|
||||
#: src/mathed/math_hullinset.C:1037
|
||||
#: src/mathed/math_hullinset.C:1051
|
||||
msgid "Enter label:"
|
||||
msgstr "Podaj etykietê:"
|
||||
|
||||
#: src/mathed/math_hullinset.C:1110
|
||||
#: src/mathed/math_hullinset.C:1126
|
||||
#, c-format
|
||||
msgid "Can't change number of rows in '%1$s'"
|
||||
msgstr ""
|
||||
|
||||
#: src/mathed/math_hullinset.C:1120
|
||||
#: src/mathed/math_hullinset.C:1136
|
||||
#, c-format
|
||||
msgid "Can't change number of columns in '%1$s'"
|
||||
msgstr ""
|
||||
|
||||
#: src/mathed/math_hullinset.C:1130
|
||||
#: src/mathed/math_hullinset.C:1146
|
||||
#, c-format
|
||||
msgid "Can't add horizontal grid lines in '%1$s'"
|
||||
msgstr ""
|
||||
|
||||
#: src/mathed/math_hullinset.C:1233 src/text3.C:166
|
||||
#: src/mathed/math_hullinset.C:1249 src/text3.C:167
|
||||
msgid "Math editor mode"
|
||||
msgstr "Tryb edytora matematycznego"
|
||||
|
||||
#: src/mathed/math_nestinset.C:755
|
||||
#: src/mathed/math_nestinset.C:763
|
||||
msgid "create new math text environment ($...$)"
|
||||
msgstr ""
|
||||
|
||||
#: src/mathed/math_nestinset.C:758
|
||||
#: src/mathed/math_nestinset.C:766
|
||||
msgid "entered math text mode (textrm)"
|
||||
msgstr "podano matematyczny tryb tekstowy (textrm)"
|
||||
|
||||
@ -15298,69 +15352,69 @@ msgid ""
|
||||
"Trying to use the default instead.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/text.C:210
|
||||
#: src/text.C:214
|
||||
msgid "Unknown Inset"
|
||||
msgstr "Nieznana wstawka"
|
||||
|
||||
#: src/text.C:334
|
||||
#: src/text.C:338
|
||||
msgid "Unknown token"
|
||||
msgstr "Nieznany token"
|
||||
|
||||
#: src/text.C:1165
|
||||
#: src/text.C:1173
|
||||
msgid ""
|
||||
"You cannot insert a space at the beginning of a paragraph. Please read the "
|
||||
"Tutorial."
|
||||
msgstr ""
|
||||
"Nie mo¿na wstawiæ spacji na pocz±tku akapitu. Przeczytaj, proszê, Samouczek."
|
||||
|
||||
#: src/text.C:1176
|
||||
#: src/text.C:1184
|
||||
msgid "You cannot type two spaces this way. Please read the Tutorial."
|
||||
msgstr ""
|
||||
"Nie mo¿na wstawiæ dwu spacji w ten sposób. Przeczytaj, proszê, Samouczek."
|
||||
|
||||
#: src/text.C:2129
|
||||
#: src/text.C:2165
|
||||
msgid "Change: "
|
||||
msgstr "Zmiana: "
|
||||
|
||||
#: src/text.C:2133
|
||||
#: src/text.C:2169
|
||||
msgid " at "
|
||||
msgstr " na "
|
||||
|
||||
#: src/text.C:2144
|
||||
#: src/text.C:2180
|
||||
#, c-format
|
||||
msgid "Font: %1$s"
|
||||
msgstr "Czcionka: %1$s"
|
||||
|
||||
#: src/text.C:2151
|
||||
#: src/text.C:2187
|
||||
#, c-format
|
||||
msgid ", Depth: %1$d"
|
||||
msgstr ", G³êboko¶æ: %1$d"
|
||||
|
||||
#: src/text.C:2157
|
||||
#: src/text.C:2193
|
||||
msgid ", Spacing: "
|
||||
msgstr ", Odstêp: "
|
||||
|
||||
#: src/text.C:2169
|
||||
#: src/text.C:2205
|
||||
msgid "Other ("
|
||||
msgstr "Inny ("
|
||||
|
||||
#: src/text.C:2178
|
||||
#: src/text.C:2214
|
||||
msgid ", Inset: "
|
||||
msgstr ""
|
||||
|
||||
#: src/text.C:2179
|
||||
#: src/text.C:2215
|
||||
msgid ", Paragraph: "
|
||||
msgstr ", Akapit: "
|
||||
|
||||
#: src/text.C:2180
|
||||
#: src/text.C:2216
|
||||
msgid ", Id: "
|
||||
msgstr ", Id: "
|
||||
|
||||
#: src/text.C:2181
|
||||
#: src/text.C:2217
|
||||
msgid ", Position: "
|
||||
msgstr ", Pozycja: "
|
||||
|
||||
#: src/text2.C:503
|
||||
#: src/text2.C:519
|
||||
msgid ""
|
||||
"No font change defined. Use Character under the Layout menu to define font "
|
||||
"change."
|
||||
@ -15368,11 +15422,11 @@ msgstr ""
|
||||
"Operacja zmiany czcionki nie jest zdefiniowana. Podaj j± w menu Formatowanie/"
|
||||
"Czcionki."
|
||||
|
||||
#: src/text2.C:545
|
||||
#: src/text2.C:561
|
||||
msgid "Nothing to index!"
|
||||
msgstr "Brak obiektów do indeksowania!"
|
||||
|
||||
#: src/text2.C:547
|
||||
#: src/text2.C:563
|
||||
msgid "Cannot index more than one paragraph!"
|
||||
msgstr "Nie mo¿na indeksowaæ wiêcej ni¿ jednego akapitu"
|
||||
|
||||
@ -15392,14 +15446,48 @@ msgstr "Ustawienia "
|
||||
msgid " not known"
|
||||
msgstr " nieznane"
|
||||
|
||||
#: src/text3.C:1359 src/text3.C:1371
|
||||
#: src/text3.C:1346 src/text3.C:1358
|
||||
msgid "Character set"
|
||||
msgstr "Kodowanie"
|
||||
|
||||
#: src/text3.C:1504
|
||||
#: src/text3.C:1491
|
||||
msgid "Paragraph layout set"
|
||||
msgstr "Styl akapitu ustawiony"
|
||||
|
||||
#: src/toc.C:64 src/toc.C:133
|
||||
msgid "TOC"
|
||||
msgstr ""
|
||||
|
||||
#: src/vspace.C:487
|
||||
#, fuzzy
|
||||
msgid "Default skip"
|
||||
msgstr "Domy¶lny odstêp:|#m"
|
||||
|
||||
#: src/vspace.C:490
|
||||
#, fuzzy
|
||||
msgid "Small skip"
|
||||
msgstr "Ma³y odstêp"
|
||||
|
||||
#: src/vspace.C:493
|
||||
#, fuzzy
|
||||
msgid "Medium skip"
|
||||
msgstr "¦redni odstêp"
|
||||
|
||||
#: src/vspace.C:496
|
||||
#, fuzzy
|
||||
msgid "Big skip"
|
||||
msgstr "Du¿y odstêp"
|
||||
|
||||
#: src/vspace.C:499
|
||||
#, fuzzy
|
||||
msgid "Vertical fill"
|
||||
msgstr "&Pionowe:"
|
||||
|
||||
#: src/vspace.C:506
|
||||
#, fuzzy
|
||||
msgid "protected"
|
||||
msgstr "Twarda spacja|T"
|
||||
|
||||
#~ msgid "ASCII roff:|#r"
|
||||
#~ msgstr "ASCII roff:|#r"
|
||||
|
||||
@ -15721,9 +15809,6 @@ msgstr "Styl akapitu ustawiony"
|
||||
#~ msgid "BibTeX Database"
|
||||
#~ msgstr "Baza danych BibTeX"
|
||||
|
||||
#~ msgid "Branch"
|
||||
#~ msgstr "Ga³±¼"
|
||||
|
||||
#~ msgid "Add the selected entry to the current citation reference."
|
||||
#~ msgstr "Dodaj wybrany klucz do bie¿±cego cytowania"
|
||||
|
||||
|
@ -1,3 +1,7 @@
|
||||
2005-07-16 Lars Gullik Bjønnes <larsbj@lyx.org>
|
||||
|
||||
* lyx_main.C (init): change some reLyX reference to tex2lyx
|
||||
|
||||
2005-07-16 Juergen Vigna <jug@lyx.org>
|
||||
|
||||
* dociterator.C (DocIterator): initialize boundary
|
||||
|
@ -1,9 +1,13 @@
|
||||
2005-07-16 Lars Gullik Bjønnes <larsbj@lyx.org>
|
||||
|
||||
* FormPreferences.h: remove a reLyX reference
|
||||
|
||||
2005-07-16 Jean-Marc Lasgouttes <lasgouttes@lyx.org>
|
||||
|
||||
* xfont_loader.C (getFontinfo): do not call addFontPath.
|
||||
(addFontPath): remove.
|
||||
|
||||
2005-07-13 <lgb@tandberg.net>
|
||||
2005-07-13 Lars Gullik Bjønnes <larsbj@lyx.org>
|
||||
|
||||
* forms/Makefile.am (distclean-local): pretend success also if
|
||||
srcdir != builddir
|
||||
|
@ -79,7 +79,7 @@ private:
|
||||
|
||||
/// Converters tabfolder
|
||||
boost::scoped_ptr<FD_preferences_inner_tab> converters_tab_;
|
||||
/// reLyX and other import/input stuff
|
||||
/// import/input stuff
|
||||
boost::scoped_ptr<FD_preferences_inner_tab> inputs_tab_;
|
||||
/// HCI configuration
|
||||
boost::scoped_ptr<FD_preferences_inner_tab> look_n_feel_tab_;
|
||||
|
@ -482,7 +482,7 @@ void LyX::init(bool gui)
|
||||
|
||||
#if !defined (USE_POSIX_PACKAGING)
|
||||
// Add the directory containing the LyX executable to the path
|
||||
// so that LyX can find things like reLyX.
|
||||
// so that LyX can find things like tex2lyx.
|
||||
if (package().build_support().empty())
|
||||
prependEnvPath("PATH", package().binary_dir());
|
||||
#endif
|
||||
|
@ -5,6 +5,7 @@ Makefile.in
|
||||
*.lo
|
||||
libtexparser.la
|
||||
tex2lyx
|
||||
tex2lyx.1
|
||||
FloatList.C
|
||||
Floating.C
|
||||
boost.C
|
||||
|
@ -1,3 +1,11 @@
|
||||
2005-07-16 Lars Gullik Bjønnes <larsbj@lyx.org>
|
||||
|
||||
* .cvsignore: add tex2lyx.1
|
||||
* tex2lyx.C (main): dont search for syntax.default in reLyX dir
|
||||
* test.ltx: new test file
|
||||
* tex2lyx.man: new file
|
||||
* Makefile.am: add man file directives
|
||||
|
||||
2005-07-15 Georg Baum <Georg.Baum@post.rwth-aachen.de>
|
||||
|
||||
* text.C (parse_environment): handle context of unknown environments
|
||||
|
@ -2,7 +2,7 @@ include $(top_srcdir)/config/common.am
|
||||
|
||||
EXTRA_DIST = pch.h test-structure.tex test-insets.tex
|
||||
|
||||
DISTCLEANFILES += $(LINKED_SOURCES)
|
||||
DISTCLEANFILES += tex2lyx.1 $(LINKED_SOURCES)
|
||||
|
||||
#noinst_LTLIBRARIES = libtexparser.la
|
||||
#
|
||||
@ -12,6 +12,8 @@ DISTCLEANFILES += $(LINKED_SOURCES)
|
||||
#
|
||||
#tex2lyx_LDADD = libtexparser.la
|
||||
|
||||
man_MANS = tex2lyx.1
|
||||
|
||||
bin_PROGRAMS = tex2lyx
|
||||
|
||||
AM_CPPFLAGS += $(PCH_FLAGS) -I$(srcdir)/.. $(BOOST_INCLUDES)
|
||||
@ -65,3 +67,6 @@ $(LINKED_SOURCES) :
|
||||
|
||||
rm_link_files:
|
||||
rm -f $(LINKED_SOURCES)
|
||||
|
||||
tex2lyx.1:
|
||||
cp -p $(srcdir)/tex2lyx.man tex2lyx.1
|
||||
|
@ -217,7 +217,7 @@ void read_environment(Parser & p, string const & begin,
|
||||
/*!
|
||||
* Read a list of TeX commands from a reLyX compatible syntax file.
|
||||
* Since this list is used after all commands that have a LyX counterpart
|
||||
* are handled, it does not matter that the "syntax.default" file from reLyX
|
||||
* are handled, it does not matter that the "syntax.default" file
|
||||
* has almost all of them listed. For the same reason the reLyX-specific
|
||||
* reLyXre environment is ignored.
|
||||
*/
|
||||
@ -491,7 +491,7 @@ int main(int argc, char * argv[])
|
||||
lyx::support::init_package(argv[0], cl_system_support, cl_user_support,
|
||||
lyx::support::top_build_dir_is_two_levels_up);
|
||||
|
||||
string const system_syntaxfile = lyx::support::LibFileSearch("reLyX", "syntax.default");
|
||||
string const system_syntaxfile = lyx::support::LibFileSearch("", "syntax.default");
|
||||
if (system_syntaxfile.empty()) {
|
||||
cerr << "Error: Could not find syntax file \"syntax.default\"." << endl;
|
||||
exit(1);
|
||||
|
@ -1,15 +1,9 @@
|
||||
.rn '' }`
|
||||
''' $RCSfile: reLyX.man,v $$Revision: 1.4 $$Date: 2004/10/28 14:35:19 $
|
||||
''' $RCSfile: tex2lyx.man,v $$Revision: 1.1 $$Date: 2005/07/16 15:18:14 $
|
||||
'''
|
||||
''' $Log: reLyX.man,v $
|
||||
''' Revision 1.4 2004/10/28 14:35:19 leeming
|
||||
''' Whitespace, only whitespace. Part II.
|
||||
'''
|
||||
''' Revision 1.3 2002/10/28 09:52:39 poenitz
|
||||
''' the relyx changes
|
||||
'''
|
||||
''' Revision 1.2 2000/03/29 23:02:36 karger
|
||||
''' Very minor changes (sorry kayvan!)
|
||||
''' $Log: tex2lyx.man,v $
|
||||
''' Revision 1.1 2005/07/16 15:18:14 larsbj
|
||||
''' drop reLyX like it is hot, and setup to use tex2lyx instead (and remerged po files + no.po small update)
|
||||
'''
|
||||
'''
|
||||
.de Sh
|
||||
@ -102,7 +96,7 @@
|
||||
.nr % 0
|
||||
.rr F
|
||||
.\}
|
||||
.TH RELYX 1 "Version 2.9.2.2 2.9.2.2" "11/Aug/99" "User Contributed Perl Documentation"
|
||||
.TH TEX2LYX 1 "Version 2.9.2.2 2.9.2.2" "16/Jul/2005" ""
|
||||
.UC
|
||||
.if n .hy 0
|
||||
.if n .na
|
||||
@ -197,36 +191,35 @@
|
||||
.\}
|
||||
.rm #[ #] #H #V #F C
|
||||
.SH "NAME"
|
||||
\fBreLyX\fR \- translate well-behaved LaTeX into LyX
|
||||
\fBtex2lyx\fR \- translate well-behaved LaTeX into LyX
|
||||
.SH "SYNOPSIS"
|
||||
The simplest way to use \fBreLyX\fR is via the File->Import command in LyX. (This
|
||||
option is available starting with version 1.0.0.) That runs \fBreLyX\fR on
|
||||
the given file and loads the resulting file into LyX. You should try that
|
||||
first, and call it from the command line only if you need to use more
|
||||
complicated options.
|
||||
The simplest way to use \fBtex2lyx\fR is via the File->Import command
|
||||
in LyX. That runs \fBtex2lyx\fR on the given file and loads the
|
||||
resulting file into LyX. You should try that first, and call it from
|
||||
the command line only if you need to use more complicated options.
|
||||
.PP
|
||||
\fBreLyX\fR [ \fB\-c\fR \fItextclass\fR ] [ \fB\-df\fR ] [ \fB\-o\fR \fIoutputdir\fR ] [\fB\-n\fR]
|
||||
\fBtex2lyx\fR [ \fB\-c\fR \fItextclass\fR ] [ \fB\-df\fR ] [ \fB\-o\fR \fIoutputdir\fR ] [\fB\-n\fR]
|
||||
[\ \fB\-r\fR\ \fIrenv1\fR[,\fIrenv2\fR...]] [\ \fB\-s\fR\ \fIsfile1\fR[,\fIsfile2\fR...]]
|
||||
\fIinputfile\fR
|
||||
.PP
|
||||
\fBreLyX\fR \fB\-p\fR \fB\-c\fR \fItextclass\fR [ \fB\-df\fR ] [ \fB\-o\fR \fIoutputdir\fR ]
|
||||
\fBtex2lyx\fR \fB\-p\fR \fB\-c\fR \fItextclass\fR [ \fB\-df\fR ] [ \fB\-o\fR \fIoutputdir\fR ]
|
||||
[\ \fB\-r\fR\ \fIrenv1\fR[,\fIrenv2\fR...]] [\ \fB\-s\fR\ \fIsfile1\fR[,\fIsfile2\fR...]]
|
||||
\fIinputfiles\fR
|
||||
.PP
|
||||
\fBreLyX\fR \fB\-h\fR
|
||||
\fBtex2lyx\fR \fB\-h\fR
|
||||
.SH "OPTIONS"
|
||||
.Ip "\fB\-c\fR" 4
|
||||
Class. By default, when \fBreLyX\fR sees a \f(CW\edocumentclass{foo}\fR command, it
|
||||
Class. By default, when \fBtex2lyx\fR sees a \f(CW\edocumentclass{foo}\fR command, it
|
||||
creates a file of textclass \*(L"foo\*(R" and reads the LyX layout file for that class
|
||||
(something like /usr/local/share/lyx/layouts/foo.layout \s-1OR\s0
|
||||
\fB\s-1HOME\s0\fR/.lyx/layouts/foo.layout). Use \fB\-c\fR to declare a different textclass
|
||||
(and read a different layout file).
|
||||
.Ip "\fB\-d\fR" 4
|
||||
Debug. By default, \fBreLyX\fR gives sparse output and deletes the temporary files
|
||||
Debug. By default, \fBtex2lyx\fR gives sparse output and deletes the temporary files
|
||||
which were created during translation. Using the \fB\-d\fR flag will create much
|
||||
more output (both to stdout and stderr) and leave the temporary files around.
|
||||
.Ip "\fB\-f\fR" 4
|
||||
Force. \fBreLyX\fR will not run if the .lyx file it would generate already exists
|
||||
Force. \fBtex2lyx\fR will not run if the .lyx file it would generate already exists
|
||||
Use the \fB\-f\fR option (carefully) to clobber any existing files.
|
||||
.Ip "\fB\-h\fR" 4
|
||||
Help. Print out usage information and quit.
|
||||
@ -245,9 +238,9 @@ have write permission on the directory the LaTeX files are in.
|
||||
.Ip "\fB\-p\fR" 4
|
||||
Partial file. The input files are LaTeX fragments, with no preamble matter or
|
||||
\f(CW\ebegin{document}\fR commands. This option requires the \fB\-c\fR option, since there
|
||||
are no \f(CW\edocumentclass\fR commands in the files \fBreLyX\fR is translating. When
|
||||
are no \f(CW\edocumentclass\fR commands in the files \fBtex2lyx\fR is translating. When
|
||||
using this option, you can translate more than one file, as long as all files
|
||||
are the same class. The LyX file created by \fBreLyX\fR can be included in an
|
||||
are the same class. The LyX file created by \fBtex2lyx\fR can be included in an
|
||||
existing LyX file using the \*(L"Include LyX File\*(R" command from LyX's Insert menu.
|
||||
.Ip "\fB\-r\fR" 4
|
||||
Regular environments (see the section on \fISyntax Files\fR). If you give more than one
|
||||
@ -260,19 +253,19 @@ Syntax files. Input (one or more quoted, comma-separated) syntax files to read
|
||||
in addition to the default. (see the section on \fISyntax Files\fR for details).
|
||||
.SH "DESCRIPTION"
|
||||
.Sh "Introduction"
|
||||
\fBreLyX\fR will create a LyX file \fIdir/foo.lyx\fR from the LaTeX file
|
||||
\fBtex2lyx\fR will create a LyX file \fIdir/foo.lyx\fR from the LaTeX file
|
||||
\fIdir/foo.tex\fR (unless the \fB\-o\fR option is used).
|
||||
.PP
|
||||
Suffixes .tex, .ltx and .latex are supported. If \fIinputfile\fR
|
||||
does not exist and does not have one of these suffixes, \fBreLyX\fR will try to
|
||||
does not exist and does not have one of these suffixes, \fBtex2lyx\fR will try to
|
||||
translate \fIinputfile.tex\fR. (This is similar to the behavior of LaTeX.)
|
||||
.PP
|
||||
The purpose of \fBreLyX\fR is to translate \fIwell-behaved\fR LaTeX2e into LyX. If
|
||||
The purpose of \fBtex2lyx\fR is to translate \fIwell-behaved\fR LaTeX2e into LyX. If
|
||||
your LaTeX file doesn't compile---or if you do weird things, like redefining
|
||||
standard LaTex commands---it may choke. LaTeX209 will often be translated
|
||||
correctly, but it's not guaranteed.
|
||||
.PP
|
||||
\fBreLyX\fR has some bugs and lacks a few features. However, its main goals are:
|
||||
\fBtex2lyx\fR has some bugs and lacks a few features. However, its main goals are:
|
||||
.Ip "\(bu" 4
|
||||
Get through a well-behaved LaTeX2e file without crashing
|
||||
.Ip "\(bu" 4
|
||||
@ -282,17 +275,17 @@ Localize the parts that can't be translated and copy them in TeX mode
|
||||
.PP
|
||||
It achieves these main goals pretty well on most files.
|
||||
.PP
|
||||
There are many improvements that can and will be made to \fBreLyX\fR in the
|
||||
future. However, we wanted to get \fBreLyX\fR out there early on, to make
|
||||
There are many improvements that can and will be made to \fBtex2lyx\fR in the
|
||||
future. However, we wanted to get \fBtex2lyx\fR out there early on, to make
|
||||
it easier for new LyX users to read in their existing LaTeX files.
|
||||
.Sh "Usage"
|
||||
Here's a more lengthy description of what you should do to translate a LaTeX
|
||||
document into LyX.
|
||||
.Ip "\(bu" 4
|
||||
Run \fBreLyX\fR.
|
||||
Run \fBtex2lyx\fR.
|
||||
.Sp
|
||||
\fBreLyX\fR will inform you of its progress and give any warnings to stderr, so if
|
||||
you don't want any output at all, try (in csh) \*(L'reLyX foo.tex >& /dev/null\*(R'.
|
||||
\fBtex2lyx\fR will inform you of its progress and give any warnings to stderr, so if
|
||||
you don't want any output at all, try (in csh) \*(L'tex2lyx foo.tex >& /dev/null\*(R'.
|
||||
You should \s-1NOT\s0 redirect standard output to \fIfoo.lyx\fR.
|
||||
.Ip "\(bu" 4
|
||||
Run LyX (version 0.12 or 1.0 or later) on the resulting .lyx file.
|
||||
@ -302,7 +295,7 @@ untranslatable will be highlighted in red (TeX mode). In theory, LyX will be
|
||||
able to read in the file, and to create printed documents from it, because all
|
||||
that untranslated red stuff will be passed directly back to LaTeX, which LyX
|
||||
uses as a backend. Unfortunately, reality doesn't always reflect theory. If
|
||||
\fBreLyX\fR crashes, or LyX cannot read the generated LyX file, see the \f(CWBUGS\fR entry elsewhere in this document or the \fI\s-1BUGS\s0\fR file.
|
||||
\fBtex2lyx\fR crashes, or LyX cannot read the generated LyX file, see the \f(CWBUGS\fR entry elsewhere in this document or the \fI\s-1BUGS\s0\fR file.
|
||||
.Ip "\(bu" 4
|
||||
Change things that are highlighted in red (TeX mode) by hand in LyX.
|
||||
.Sp
|
||||
@ -310,7 +303,7 @@ As mentioned above, you should be able to print out the LyX file even without
|
||||
doing this. However, changing a command in TeX mode to the corresponding LyX
|
||||
object will allow you to take advantage of LyX's \s-1WYSIWYM\s0 editing.
|
||||
.Sp
|
||||
\fBreLyX\fR is not guaranteed to create a LyX file which generates exactly the same
|
||||
\fBtex2lyx\fR is not guaranteed to create a LyX file which generates exactly the same
|
||||
output as the LaTeX file, but it should come close. \fBrelyX\fR will generally err
|
||||
on the side of translating less to ensure that dvi or ps files are accurate,
|
||||
even though this leads to more \*(L"evil red text\*(R" and less \s-1WYSIWYM\s0.
|
||||
@ -318,13 +311,13 @@ even though this leads to more \*(L"evil red text\*(R" and less \s-1WYSIWYM\s0.
|
||||
\s-1PROOFREAD\s0 \s-1THE\s0 \s-1DOCUMENT\s0!!
|
||||
.Sp
|
||||
I'm sure you were planning on doing this anyway, but it's particularly
|
||||
important after translating a LaTeX document. \fBreLyX\fR is, at least now, better
|
||||
important after translating a LaTeX document. \fBtex2lyx\fR is, at least now, better
|
||||
at \*(L"macro-translating\*(R" (translating the whole document) than
|
||||
\*(L"micro-translating\*(R" (translating every little detail). For example, you may see
|
||||
extra spaces or deleted spaces. Space handling has improved, but it's
|
||||
not perfect.
|
||||
.Sh "What reLyX Can Handle"
|
||||
\fBreLyX\fR understands many LaTeX commands. It will translate:
|
||||
.Sh "What tex2lyx Can Handle"
|
||||
\fBtex2lyx\fR understands many LaTeX commands. It will translate:
|
||||
.Ip "\(bu" 4
|
||||
regular text, including mini-commands like ~, \*(L'\*(R', \f(CW\e@\fR, \f(CW\eTeX\fR, as well as
|
||||
accented characters like \f(CW\e'{a}\fR, and the special cases ?` and !`
|
||||
@ -373,17 +366,17 @@ arguments to certain untranslatable commands (e.g. \f(CW\embox\fR)
|
||||
.PP
|
||||
Some of this support may not be 100% yet. See below for details
|
||||
.PP
|
||||
\fBreLyX\fR copies math (almost) verbatim from your LaTeX file. Luckily, LyX reads
|
||||
\fBtex2lyx\fR copies math (almost) verbatim from your LaTeX file. Luckily, LyX reads
|
||||
in LaTeX math, so (almost) any math which is supported by LyX should work just
|
||||
fine. A few math commands which are not supported by LyX will be replaced with
|
||||
their equivalents, e.g., \f(CW\eto\fR is converted to \f(CW\erightarrow\fR. See
|
||||
the section on \fISyntax Files\fR for more details.
|
||||
.PP
|
||||
\fBreLyX\fR will also copy any preamble commands (i.e., anything before
|
||||
\fBtex2lyx\fR will also copy any preamble commands (i.e., anything before
|
||||
\f(CW\ebegin{document}\fR) verbatim, so fancy stuff you've got in your preamble
|
||||
should be conserved in dvi and printed documents, although it will not of
|
||||
course show up in the LyX window. Check Layout->LaTeX Preamble to make sure.
|
||||
.Sh "What reLyX Can't Handle --- But it's \s-1OK\s0"
|
||||
.Sh "What tex2lyx Can't Handle --- But it's \s-1OK\s0"
|
||||
.Ip "\(bu" 4
|
||||
tabular* tables
|
||||
.Ip "\(bu" 4
|
||||
@ -393,27 +386,27 @@ spacing commands (\f(CW\evspace\fR, \f(CW\epagebreak\fR, \f(CW\epar\fR, ...)
|
||||
.Ip "\(bu" 4
|
||||
\f(CW\ecentering\fR, \f(CW\eraggedleft\fR, \f(CW\eraggedright\fR
|
||||
.Ip "\(bu" 4
|
||||
\f(CW\everb\fR and verbatim environment. \fBreLyX\fR is careful to copy \fIexactly\fR in
|
||||
\f(CW\everb\fR and verbatim environment. \fBtex2lyx\fR is careful to copy \fIexactly\fR in
|
||||
this case, including comments and whitespace.
|
||||
.Ip "\(bu" 4
|
||||
some unknown (e.g., user-defined) environments and commands
|
||||
.PP
|
||||
\fBreLyX\fR copies unknown commands, along with their arguments, verbatim into the
|
||||
\fBtex2lyx\fR copies unknown commands, along with their arguments, verbatim into the
|
||||
LyX file. Also, if it sees a \f(CW\ebegin{foo}\fR where it doesn't recognize the
|
||||
\*(L"foo\*(R" environment, it will copy verbatim until it sees \f(CW\eend{foo}\fR (unless
|
||||
you use the \fB\-r\fR option). Hopefully, then, most of these unknown commands
|
||||
won't cause \fBreLyX\fR to break; they'll merely require you to do some editing
|
||||
won't cause \fBtex2lyx\fR to break; they'll merely require you to do some editing
|
||||
once you've loaded the file up in LyX. That should be less painful than
|
||||
editing either the .tex or the .lyx file using a text editor.
|
||||
.Sh "What reLyX Handles Badly --- aka \s-1BUGS\s0"
|
||||
Since \fBreLyX\fR is relatively new, it's got a number of problems. As it
|
||||
.Sh "What tex2lyx Handles Badly --- aka \s-1BUGS\s0"
|
||||
Since \fBtex2lyx\fR is relatively new, it's got a number of problems. As it
|
||||
matures, these bugs will be squished.
|
||||
.PP
|
||||
If \fBreLyX\fR is choking on something, or LyX can't read it after \fBreLyX\fR
|
||||
translates it, the best thing to do is to put \f(CW\ebegin{reLyXskip}\fR before the
|
||||
offending text, and \f(CW\eend{reLyXskip}\fR after it. I call this a \*(L"skip\*(R" block.
|
||||
\fBreLyX\fR will copy this block exactly, in TeX mode. Then edit the resulting
|
||||
LyX file, and translate the unknown stuff by hand. The reLyXskip environment
|
||||
If \fBtex2lyx\fR is choking on something, or LyX can't read it after \fBtex2lyx\fR
|
||||
translates it, the best thing to do is to put \f(CW\ebegin{tex2lyxskip}\fR before the
|
||||
offending text, and \f(CW\eend{tex2lyxskip}\fR after it. I call this a \*(L"skip\*(R" block.
|
||||
\fBtex2lyx\fR will copy this block exactly, in TeX mode. Then edit the resulting
|
||||
LyX file, and translate the unknown stuff by hand. The tex2lyxskip environment
|
||||
is magical; the \f(CW\ebegin\fR and \f(CW\eend\fR commands will not be put into the LyX
|
||||
file.
|
||||
.Ip "\(bu" 4
|
||||
@ -424,12 +417,12 @@ file will be copied perfectly, including whitespace and comments. This
|
||||
includes: the LaTeX preamble, verbatim environments and \f(CW\everb\fR commands, and
|
||||
skip blocks.
|
||||
.Ip "\(bu" 4
|
||||
\fBreLyX\fR translates only a few options to the \f(CW\edocumentclass\fR command.
|
||||
\fBtex2lyx\fR translates only a few options to the \f(CW\edocumentclass\fR command.
|
||||
(Specifically 1[012]pt, [letter|legal|executive|a4|a5|b5]paper,
|
||||
[one|two]side, landscape, and [one|two]column.) Other options are placed in
|
||||
the \*(L"options\*(R" field in the Layout->Document popup.
|
||||
.Sp
|
||||
More importantly, \fBreLyX\fR doesn't translate \f(CW\eusepackage\fR commands, margin
|
||||
More importantly, \fBtex2lyx\fR doesn't translate \f(CW\eusepackage\fR commands, margin
|
||||
commands, \f(CW\enewcommands\fR, or, in fact, anything else from the preamble. It
|
||||
simply copies them into the LaTeX preamble. If you have margin commands in
|
||||
your preamble, then the LyX file will generate the right margins. However,
|
||||
@ -438,25 +431,25 @@ popup. So you should remove the options from the preamble
|
||||
(Layout->Latex Preamble) to be safe. The same goes for setting your language
|
||||
with babel, \f(CW\einputencoding\fR, \f(CW\epagestyle\fR, etc.
|
||||
.Ip "\(bu" 4
|
||||
The foil class has a couple bugs. \fBreLyX\fR may do weird things with optional
|
||||
The foil class has a couple bugs. \fBtex2lyx\fR may do weird things with optional
|
||||
arguments to \f(CW\efoilhead\fR commands. Also, it may handle \f(CW\ebegin{dinglist}\fR
|
||||
incorrectly (although the stuff in the environment should translate normally).
|
||||
.PP
|
||||
Less significant bugs can be found in the \fI\s-1BUGS\s0\fR file.
|
||||
.PP
|
||||
\fBreLyX\fR is hopefully rather robust. As mentioned above, it may not translate
|
||||
\fBtex2lyx\fR is hopefully rather robust. As mentioned above, it may not translate
|
||||
your file perfectly, but it shouldn't crash. If it does crash---and the
|
||||
problem is not one of those mentioned above or in the \fI\s-1BUGS\s0\fR file---see
|
||||
the section on \fIBug Reports\fR.
|
||||
.Sh "What LyX Can't Handle"
|
||||
LyX itself is missing a couple features, such that even if \fBreLyX\fR translates
|
||||
LyX itself is missing a couple features, such that even if \fBtex2lyx\fR translates
|
||||
things perfectly, LyX may still have trouble reading it. If you really need
|
||||
these features, you can export your final document as LaTeX, and put them
|
||||
back in. See \fI\s-1BUGS\s0\fR for more details on these bugs.
|
||||
.Ip "\(bu" 4
|
||||
For a number of commands, LyX does not support the optional argument. Examples
|
||||
include \f(CW\echapter\fR (and other sectioning commands), and \f(CW\e\e\fR.
|
||||
\fBreLyX\fR will automatically discard the optional arguments with a warning to
|
||||
\fBtex2lyx\fR will automatically discard the optional arguments with a warning to
|
||||
stdout. LyX also ignores the width argument for the thebibliography
|
||||
environment.
|
||||
.Ip "\(bu" 4
|
||||
@ -477,18 +470,18 @@ command by hand within LyX---for example, if you included a bounding box but
|
||||
the bounding box is already in the .eps file.
|
||||
.Sp
|
||||
LyX only allows figures to have sizes in in,cm, or percentages of \etextwidth
|
||||
or \etextheight (or \ecolumnwidth). \fBreLyX\fR will translate from other units, like
|
||||
or \etextheight (or \ecolumnwidth). \fBtex2lyx\fR will translate from other units, like
|
||||
pt or mm, but it cannot translate other lengths (e.g. if you wanted to scale a
|
||||
figure to size \etopmargin for some reason). \fBreLyX\fR will copy figures with
|
||||
figure to size \etopmargin for some reason). \fBtex2lyx\fR will copy figures with
|
||||
untranslatable sizes in TeX mode. Again, you might be able to fix that within
|
||||
LyX.
|
||||
.Sh "The Future of reLyX"
|
||||
In the future, more commands and environments will be supported by \fBreLyX\fR.
|
||||
.Sh "The Future of tex2lyx"
|
||||
In the future, more commands and environments will be supported by \fBtex2lyx\fR.
|
||||
Bugs will be eradicated.
|
||||
.PP
|
||||
See the \s-1TODO\s0 file for details.
|
||||
.SH "EXAMPLES"
|
||||
reLyX \fB\-df\fR \fB\-o\fR \*(L"my/dir\*(R" \fB\-r\fR \*(L"myenv\*(R" foo.tex > foo.debug
|
||||
tex2lyx \fB\-df\fR \fB\-o\fR \*(L"my/dir\*(R" \fB\-r\fR \*(L"myenv\*(R" foo.tex > foo.debug
|
||||
.PP
|
||||
The above will create a file my/dir/foo.lyx from foo.tex, overwriting if
|
||||
necessary. When it finds a \f(CW\ebegin{myenv} ... \eend{myenv}\fR block, it will
|
||||
@ -497,28 +490,28 @@ commands in TeX mode. Finally, I'm going to keep the temporary files around
|
||||
(they will also be in my/dir/) and output lots of debugging information into
|
||||
the file foo.debug.
|
||||
.PP
|
||||
reLyX \fB\-n\fR \fB\-c\fR \*(L"literate-article\*(R" foo.tex
|
||||
tex2lyx \fB\-n\fR \fB\-c\fR \*(L"literate-article\*(R" foo.tex
|
||||
.PP
|
||||
The above will change a noweb document into a LyX literate-article
|
||||
document. A user would do this if the noweb document had documentclass
|
||||
article.
|
||||
.SH "NOTES"
|
||||
.Sh "Bug Reports"
|
||||
If \fBreLyX\fR is crashing or otherwise acting strangely---in ways
|
||||
If \fBtex2lyx\fR is crashing or otherwise acting strangely---in ways
|
||||
other than those described in the section on \fI\s-1BUGS\s0\fR or the \fI\s-1BUGS\s0\fR file---then please run
|
||||
\fBreLyX \-d\fR. That will allow you to figure out where in the reLyXing process
|
||||
\fBtex2lyx \-d\fR. That will allow you to figure out where in the tex2lyxing process
|
||||
it crashed. That, in turn, will allow you to write a better bug report, which
|
||||
will allow the developers to fix it more quickly and easily.
|
||||
.PP
|
||||
Bug reports should be sent to the LyX developers\*(R' mailing list. Its address
|
||||
is currently lyx-devel@lists.lyx.org, but you can check the LyX home page,
|
||||
http://www.lyx.org if that bounces. If you are running \fBreLyX\fR on a huge file,
|
||||
http://www.lyx.org if that bounces. If you are running \fBtex2lyx\fR on a huge file,
|
||||
please do not send all of the output in your bug report. Just include the last
|
||||
ten or twenty lines of output, along with the piece of the LaTeX file it
|
||||
crashed on. Or, even better, attach a small but complete file which causes
|
||||
the same problem as your original file.
|
||||
.Sh "Implementation Details:"
|
||||
\fBreLyX\fR makes several \*(L"passes\*(R" in order to translate a TeX file. On each pass,
|
||||
\fBtex2lyx\fR makes several \*(L"passes\*(R" in order to translate a TeX file. On each pass,
|
||||
it creates one or two files.
|
||||
.Ip "Pass 0" 4
|
||||
Before doing anything, read the syntax file (or files).
|
||||
@ -549,7 +542,7 @@ Translate LaTeX text, commands, and environments to LyX.
|
||||
Put the two pieces back together, and do some final tweaking, to generate the
|
||||
LyX file
|
||||
.PP
|
||||
If there are any \f(CW\einput\fR or \f(CW\einclude\fR commands, \fBreLyX\fR will loop back to
|
||||
If there are any \f(CW\einput\fR or \f(CW\einclude\fR commands, \fBtex2lyx\fR will loop back to
|
||||
the beginning and translate those. It assumes that the included files are the
|
||||
same class as the main file, and that they have no preamble matter. (If you
|
||||
have an \f(CW\einput\fR command in the preamble of a file, the command will be
|
||||
@ -557,14 +550,14 @@ copied exactly into the LaTeX preamble portion of the LyX file, so the
|
||||
included file won't be translated.) So when translating included files, it
|
||||
skips passes 0 and 1.
|
||||
.PP
|
||||
If \fBreLyX\fR doesn't find a file you wanted to include, it will give a warning,
|
||||
If \fBtex2lyx\fR doesn't find a file you wanted to include, it will give a warning,
|
||||
but will continue to translate any files it does find.
|
||||
.Sh "Layout Files"
|
||||
\fBreLyX\fR reads a LyX layout file to know how to handle LaTeX environments and
|
||||
\fBtex2lyx\fR reads a LyX layout file to know how to handle LaTeX environments and
|
||||
commands which get translated to LyX layouts. This file will include all
|
||||
\*(L"normal\*(R" non-math environments (i.e., including quote and itemize, but not
|
||||
tabular, minipage, and some other fancy environments), and commands like
|
||||
\f(CW\esection\fR and \f(CW\etitle\fR. If you want to reLyX a class that doesn't have an
|
||||
\f(CW\esection\fR and \f(CW\etitle\fR. If you want to tex2lyx a class that doesn't have an
|
||||
existing layout file, then you'll have to create a layout file. But you have
|
||||
to do this anyway, in order to LyX the file, since LyX depends on layout files
|
||||
to know how to display and process its files. Check the LyX documentation for
|
||||
@ -572,31 +565,31 @@ help with this task (which can be hard or easy, depending on the class you
|
||||
want to create a layout file for.) If your class is quite similar to a class
|
||||
that has a layout file, then consider using the \fB\-c\fR option.
|
||||
.Sh "Syntax Files"
|
||||
\fBreLyX\fR always reads at least one syntax file, called the default syntax file.
|
||||
\fBreLyX\fR will read your personal syntax file if it exists; otherwise it will
|
||||
read the system-wide file. \fBreLyX\fR will read additional syntax files if you
|
||||
\fBtex2lyx\fR always reads at least one syntax file, called the default syntax file.
|
||||
\fBtex2lyx\fR will read your personal syntax file if it exists; otherwise it will
|
||||
read the system-wide file. \fBtex2lyx\fR will read additional syntax files if you
|
||||
specify them with the \fB\-s\fR option. (These extra files should have the same
|
||||
format as the default file, but will tend to be shorter, since they only have
|
||||
to specify extra commands not found in the default file.) A syntax file tells
|
||||
\fBreLyX\fR a few things.
|
||||
\fBtex2lyx\fR a few things.
|
||||
.PP
|
||||
First, it describes the syntax of each command, that is, how many required
|
||||
arguments and how many optional arguments the command takes. Knowing this
|
||||
makes it easier for \fBreLyX\fR to copy (in TeX mode) commands that it doesn't
|
||||
makes it easier for \fBtex2lyx\fR to copy (in TeX mode) commands that it doesn't
|
||||
know how to translate. The syntax file simply has a command, followed by
|
||||
braces or brackets describing its arguments in the correct order. For example,
|
||||
a syntax file entry \f(CW\ebibitem[]{}\fR means that the \f(CW\ebibitem\fR command takes
|
||||
an optional argument followed by a required one, while the entry \f(CW\ebf\fR
|
||||
means that the \f(CW\ebf\fR command takes no arguments at all. When \fBreLyX\fR
|
||||
means that the \f(CW\ebf\fR command takes no arguments at all. When \fBtex2lyx\fR
|
||||
encounters a token that it doesn't know how to translate into LyX, it will
|
||||
copy the token---along with the correct number of arguments---exactly. If the
|
||||
token is not in the syntax file, then \fBreLyX\fR just copies as many arguments
|
||||
token is not in the syntax file, then \fBtex2lyx\fR just copies as many arguments
|
||||
as it finds. This means that it may copy too much. But since the user can
|
||||
specify additional syntax files, that shouldn't happen often.
|
||||
.PP
|
||||
Some commands that cannot be translated to LyX, like \f(CW\embox\fR, have as one of
|
||||
their arguments regular LaTeX text. If the string \*(L"translate\*(R" is put into an
|
||||
argument of an (untranslatable) command in the syntax file, then \fBreLyX\fR will
|
||||
argument of an (untranslatable) command in the syntax file, then \fBtex2lyx\fR will
|
||||
translate that argument instead of copying it verbatim. So, for example, the
|
||||
default syntax file has \f(CW\eraisebox{}[][]{translate}\fR. This means that the
|
||||
\f(CW\eraisebox\fR command and the first argument (and optional arguments if they
|
||||
@ -608,7 +601,7 @@ User-defined syntax files are allowed to define new commands and
|
||||
their syntax, or override the number of arguments for a command given in the
|
||||
default syntax file. (E.g., if you're using a style that gives an extra
|
||||
argument to some command...) However, this will only be useful for commands
|
||||
copied in TeX mode. Commands which are actually translated by \fBreLyX\fR (like
|
||||
copied in TeX mode. Commands which are actually translated by \fBtex2lyx\fR (like
|
||||
\f(CW\eitem\fR) have their argument syntax hard-coded. The hard-coded commands are
|
||||
identified in the default syntax file.
|
||||
.PP
|
||||
@ -616,28 +609,28 @@ Second, the syntax file describes any \*(L"regular environments\*(R". Usually,
|
||||
entire unknown environment will be copied in TeX mode. If you define a regular
|
||||
environment \*(L"foo\*(R", though, then only the \f(CW\ebegin{foo}\fR and \f(CW\eend{foo}\fR
|
||||
commands will be copied in TeX mode; the text within the environment will be
|
||||
treated (i.e., translated) by \fBreLyX\fR as regular LaTeX, rather than being
|
||||
treated (i.e., translated) by \fBtex2lyx\fR as regular LaTeX, rather than being
|
||||
copied into TeX mode. Don't try to declare \*(L"tabbing\*(R" and \*(L"picture\*(R" as regular
|
||||
environments, as the text within those environments will confuse \fBreLyX\fR; use
|
||||
environments, as the text within those environments will confuse \fBtex2lyx\fR; use
|
||||
this capability for new environments you create that have plain text or math
|
||||
or simple commands in them. You also can't declare unknown math environments
|
||||
(like equation*) as regular environments, either, since the LyX math editor
|
||||
won't understand them. The names of regular environments appear,
|
||||
whitespace-separated, between \f(CW\ebegin{reLyXre}\fR and \f(CW\eend{reLyXre}\fR
|
||||
whitespace-separated, between \f(CW\ebegin{tex2lyxre}\fR and \f(CW\eend{tex2lyxre}\fR
|
||||
statements in the syntax file. (If you have a regular environment which you
|
||||
won't use very often, you can use the \fB\-r\fR option rather than writing a
|
||||
syntax file.)
|
||||
.Sh "Miscellaneous"
|
||||
You need Perl version 5.002 or later to run \fBreLyX\fR. <plug> If you don't have
|
||||
You need Perl version 5.002 or later to run \fBtex2lyx\fR. <plug> If you don't have
|
||||
Perl, you should get it anyway (at http://www.perl.com), because it's a really
|
||||
useful tool for pretty much anything. </plug>
|
||||
.SH "DIAGNOSTICS"
|
||||
\fBreLyX\fR should always explain why it crashes, if it crashes. Some diagnostics
|
||||
\fBtex2lyx\fR should always explain why it crashes, if it crashes. Some diagnostics
|
||||
may be very technical, though, if they come from the guts of the code.
|
||||
\fBreLyX\fR gives much more information while running if you use the \fB\-d\fR option,
|
||||
\fBtex2lyx\fR gives much more information while running if you use the \fB\-d\fR option,
|
||||
but you shouldn't need that unless something goes wrong.
|
||||
.PP
|
||||
When it's finished, \fBreLyX\fR will tell you if it finished successfully or
|
||||
When it's finished, \fBtex2lyx\fR will tell you if it finished successfully or
|
||||
died due to some error.
|
||||
.SH "WARNINGS"
|
||||
Always keep a copy of your original LaTeX files either under a different
|
||||
@ -655,11 +648,11 @@ dvi\*(R" or print the LyX document.
|
||||
.SH "FILES"
|
||||
.Ip "\fI\s-1MY_LYXDIR\s0\fR/layouts/*.layout" 4
|
||||
User's personal layout files for document classes
|
||||
.Ip "\fI\s-1MY_LYXDIR\s0\fR/reLyX/syntax.default" 4
|
||||
.Ip "\fI\s-1MY_LYXDIR\s0\fR/syntax.default" 4
|
||||
User's personal syntax file
|
||||
.Ip "\fI\s-1LIBDIR\s0\fR/layouts/*.layout" 4
|
||||
System-wide layout files for document classes
|
||||
.Ip "\fI\s-1LIBDIR\s0\fR/reLyX/syntax.default" 4
|
||||
.Ip "\fI\s-1LIBDIR\s0\fR/lib/syntax.default" 4
|
||||
System-wide LaTeX syntax file
|
||||
.PP
|
||||
\fI\s-1LIBDIR\s0\fR is the system-wide LyX directory, usually something like
|
||||
@ -691,13 +684,10 @@ Asger K. Alstrup Nielsen and Marc Pavese provided advice.
|
||||
.Ip "\(bu" 4
|
||||
Various members of the LyX developers\*(R' and users\*(R' lists provided bug reports
|
||||
and feature suggestions.
|
||||
.PP
|
||||
\fBreLyX\fR uses a modified version the Perl TeX parser Text::TeX package written
|
||||
by Ilya Zakharevich (ilya@math.ohio-state.edu), available on \s-1CPAN\s0.
|
||||
|
||||
.rn }` ''
|
||||
.IX Title "RELYX 1"
|
||||
.IX Name "B<reLyX> - translate well-behaved LaTeX into LyX"
|
||||
.IX Name "B<tex2lyx> - translate well-behaved LaTeX into LyX"
|
||||
|
||||
.IX Header "NAME"
|
||||
|
||||
@ -743,7 +733,7 @@ by Ilya Zakharevich (ilya@math.ohio-state.edu), available on \s-1CPAN\s0.
|
||||
|
||||
.IX Item "\(bu"
|
||||
|
||||
.IX Subsection "What reLyX Can Handle"
|
||||
.IX Subsection "What tex2lyx Can Handle"
|
||||
|
||||
.IX Item "\(bu"
|
||||
|
||||
@ -777,7 +767,7 @@ by Ilya Zakharevich (ilya@math.ohio-state.edu), available on \s-1CPAN\s0.
|
||||
|
||||
.IX Item "\(bu"
|
||||
|
||||
.IX Subsection "What reLyX Can't Handle --- But it's \s-1OK\s0"
|
||||
.IX Subsection "What tex2lyx Can't Handle --- But it's \s-1OK\s0"
|
||||
|
||||
.IX Item "\(bu"
|
||||
|
||||
@ -791,7 +781,7 @@ by Ilya Zakharevich (ilya@math.ohio-state.edu), available on \s-1CPAN\s0.
|
||||
|
||||
.IX Item "\(bu"
|
||||
|
||||
.IX Subsection "What reLyX Handles Badly --- aka \s-1BUGS\s0"
|
||||
.IX Subsection "What tex2lyx Handles Badly --- aka \s-1BUGS\s0"
|
||||
|
||||
.IX Item "\(bu"
|
||||
|
||||
@ -811,7 +801,7 @@ by Ilya Zakharevich (ilya@math.ohio-state.edu), available on \s-1CPAN\s0.
|
||||
|
||||
.IX Item "\(bu"
|
||||
|
||||
.IX Subsection "The Future of reLyX"
|
||||
.IX Subsection "The Future of tex2lyx"
|
||||
|
||||
.IX Header "EXAMPLES"
|
||||
|
||||
@ -853,11 +843,11 @@ by Ilya Zakharevich (ilya@math.ohio-state.edu), available on \s-1CPAN\s0.
|
||||
|
||||
.IX Item "\fI\s-1MY_LYXDIR\s0\fR/layouts/*.layout"
|
||||
|
||||
.IX Item "\fI\s-1MY_LYXDIR\s0\fR/reLyX/syntax.default"
|
||||
.IX Item "\fI\s-1MY_LYXDIR\s0\fR/syntax.default"
|
||||
|
||||
.IX Item "\fI\s-1LIBDIR\s0\fR/layouts/*.layout"
|
||||
|
||||
.IX Item "\fI\s-1LIBDIR\s0\fR/reLyX/syntax.default"
|
||||
.IX Item "\fI\s-1LIBDIR\s0\fR/lib/syntax.default"
|
||||
|
||||
.IX Header "SEE ALSO"
|
||||
|
@ -843,6 +843,7 @@ pos_type LyXText::getColumnNearX(pit_type const pit,
|
||||
tmpx += singleWidth(par, end - 1);
|
||||
c = end - 1;
|
||||
}
|
||||
|
||||
// Air gap above display inset:
|
||||
if (row.pos() < end && c >= end && end < par.size()
|
||||
&& par.isInset(end) && par.getInset(end)->display()) {
|
||||
|
Loading…
Reference in New Issue
Block a user