set eol-style

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36379 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Vincent van Ravesteijn 2010-11-18 19:50:29 +00:00
parent cc84d35ed4
commit 7222ce9e31
35 changed files with 21044 additions and 21044 deletions

View File

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright (c) Microsoft Corporation. All rights reserved. -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<noInheritable/>
<assemblyIdentity
type="win32"
name="Microsoft.VC90.CRT"
version="9.0.21022.8"
processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b"
/>
<file name="msvcr90.dll" /> <file name="msvcp90.dll" /> <file name="msvcm90.dll" />
</assembly>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright (c) Microsoft Corporation. All rights reserved. -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<noInheritable/>
<assemblyIdentity
type="win32"
name="Microsoft.VC90.CRT"
version="9.0.21022.8"
processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b"
/>
<file name="msvcr90.dll" /> <file name="msvcp90.dll" /> <file name="msvcm90.dll" />
</assembly>

View File

@ -1,60 +1,60 @@
/*
dictlist.nsh
List of Aspell dictionaries supported by LyX
*/
!macro Dictionaries DICT
${DICT} af-0.50-0 "Afrikaans" af 915
${DICT} ar-1.2-0 "Arabic" ar 4352
${DICT} ms-0.50-0 "Bahasa Melayu" ms 187
${DICT} bg-4.1-0 "Bulgarian" bg 5345
${DICT} br-0.50-2 "Brezhoneg" br 375
${DICT} be-0.01 "Byelaruskaya mova" be 9229
${DICT} ca-20040130-1 "Català" ca 1095
${DICT} cs-20040614-1 "Ceština" cs 2069
${DICT} da-1.4.42-1 "Dansk" da 3036
${DICT} de-20030222-1 "Deutsch" de 2872
${DICT} en-6.0-0 "English" en 1130
${DICT} es-0.50-2 "Español" es 2953
${DICT} eo-2.1.20000225a-2 "Esperanto" eo 3773
${DICT} et-0.1.21-1 "Estonian" et 922
${DICT} fr-0.50-3 "Français" fr 4331
${DICT} gl-0.50-0 "Galego" gl 2974
${DICT} el-0.50-3 "Greek" el 3204
${DICT} hy-0.10.0-0 "Hayeren" hy 850
${DICT} he-1.0-0 "Hebrew" he 2024
${DICT} hsb-0.01-1 "Hornjoserbsce" hsb 385
${DICT} hr-0.51-0 "Hrvatski" hr 1967
${DICT} ia-0.50-1 "Interlingua" ia 610
${DICT} is-0.51.1-0 "Íslenska" is 1536
${DICT} it-2.2_20050523-0 "Italiano" it 696
${DICT} la-20020503-0 "Latin" la 193
${DICT} lv-0.5.5-1 "Latviešu Valoda" lv 256
${DICT} lt-1.1+cvs20060103-0 "Lietuviu kalba" lt 628
${DICT} hu-0.99.4.2-0 "Magyar" hu 1608
${DICT} mn-0.01-0 "Mongolian" mn 141
${DICT} nl-opentaal200711 "Nederlands" nl 1333
${DICT} nb-0.50.1-0 "Norsk (Bokmål)" nb 3031
${DICT} nn-0.50.1-1 "Norsk (Nynorsk)" nn 1930
${DICT} fa-0.11-0 "Persian" fa 1667
${DICT} pl-6.0_20061121-0 "Polski" pl 1859
${DICT} pt_PT-20070510-0 "Português" pt_PT 319
${DICT} pt_BR-20080221-1 "Português do Brasil" pt_BR 2453
${DICT} ro-0.50-2 "Româna" ro 341
${DICT} ru-0.99f7-1 "Russian" ru 1458
${DICT} gd-0.1.1-1 "Scottish" gd 194
${DICT} sr-0.02 "Serbian" sr 3686
${DICT} sk-0.52-0 "Slovencina" sk 4602
${DICT} sl-0.50-0 "Slovenšcina" sl 5236
${DICT} fi-0.7-0 "Suomi" fi 659
${DICT} sv-0.51-0 "Svenska" sv 1029
${DICT} tr-0.50-0 "Türkçe" tr 547
${DICT} uk-1.4.0-0 "Ukrainian" uk 770
${DICT} vi-0.01.1-1 "Vietnamese" vi 115
${DICT} cy-0.50-3 "Welsh" cy 1771
!macroend
/*
dictlist.nsh
List of Aspell dictionaries supported by LyX
*/
!macro Dictionaries DICT
${DICT} af-0.50-0 "Afrikaans" af 915
${DICT} ar-1.2-0 "Arabic" ar 4352
${DICT} ms-0.50-0 "Bahasa Melayu" ms 187
${DICT} bg-4.1-0 "Bulgarian" bg 5345
${DICT} br-0.50-2 "Brezhoneg" br 375
${DICT} be-0.01 "Byelaruskaya mova" be 9229
${DICT} ca-20040130-1 "Català" ca 1095
${DICT} cs-20040614-1 "Ceština" cs 2069
${DICT} da-1.4.42-1 "Dansk" da 3036
${DICT} de-20030222-1 "Deutsch" de 2872
${DICT} en-6.0-0 "English" en 1130
${DICT} es-0.50-2 "Español" es 2953
${DICT} eo-2.1.20000225a-2 "Esperanto" eo 3773
${DICT} et-0.1.21-1 "Estonian" et 922
${DICT} fr-0.50-3 "Français" fr 4331
${DICT} gl-0.50-0 "Galego" gl 2974
${DICT} el-0.50-3 "Greek" el 3204
${DICT} hy-0.10.0-0 "Hayeren" hy 850
${DICT} he-1.0-0 "Hebrew" he 2024
${DICT} hsb-0.01-1 "Hornjoserbsce" hsb 385
${DICT} hr-0.51-0 "Hrvatski" hr 1967
${DICT} ia-0.50-1 "Interlingua" ia 610
${DICT} is-0.51.1-0 "Íslenska" is 1536
${DICT} it-2.2_20050523-0 "Italiano" it 696
${DICT} la-20020503-0 "Latin" la 193
${DICT} lv-0.5.5-1 "Latviešu Valoda" lv 256
${DICT} lt-1.1+cvs20060103-0 "Lietuviu kalba" lt 628
${DICT} hu-0.99.4.2-0 "Magyar" hu 1608
${DICT} mn-0.01-0 "Mongolian" mn 141
${DICT} nl-opentaal200711 "Nederlands" nl 1333
${DICT} nb-0.50.1-0 "Norsk (Bokmål)" nb 3031
${DICT} nn-0.50.1-1 "Norsk (Nynorsk)" nn 1930
${DICT} fa-0.11-0 "Persian" fa 1667
${DICT} pl-6.0_20061121-0 "Polski" pl 1859
${DICT} pt_PT-20070510-0 "Português" pt_PT 319
${DICT} pt_BR-20080221-1 "Português do Brasil" pt_BR 2453
${DICT} ro-0.50-2 "Româna" ro 341
${DICT} ru-0.99f7-1 "Russian" ru 1458
${DICT} gd-0.1.1-1 "Scottish" gd 194
${DICT} sr-0.02 "Serbian" sr 3686
${DICT} sk-0.52-0 "Slovencina" sk 4602
${DICT} sl-0.50-0 "Slovenšcina" sl 5236
${DICT} fi-0.7-0 "Suomi" fi 659
${DICT} sv-0.51-0 "Svenska" sv 1029
${DICT} tr-0.50-0 "Türkçe" tr 547
${DICT} uk-1.4.0-0 "Ukrainian" uk 770
${DICT} vi-0.01.1-1 "Vietnamese" vi 115
${DICT} cy-0.50-3 "Welsh" cy 1771
!macroend

View File

@ -1,101 +1,101 @@
/*
gui.nsh
Installer user interface settings
*/
#--------------------------------
# General
Name "${APP_NAME} ${APP_VERSION}"
BrandingText " "
#--------------------------------
# Interface settings
!define MUI_ABORTWARNING
!define MUI_ICON "${SETUP_ICON}"
!define MUI_UNICON "${SETUP_ICON}"
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "${SETUP_HEADERIMAGE}"
!define MUI_HEADERIMAGE_RIGHT
!define MUI_WELCOMEFINISHPAGE_BITMAP "${SETUP_WIZARDIMAGE}"
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${SETUP_WIZARDIMAGE}"
!define MUI_COMPONENTSPAGE_NODESC
#--------------------------------
# Pages
# Installer
!define MUI_WELCOMEPAGE_TITLE_3LINES
!define MUI_WELCOMEPAGE_TEXT $(TEXT_WELCOME)
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "${FILES_LICENSE}"
!insertmacro MULTIUSER_PAGE_INSTALLMODE
Page custom PageReinstall PageReinstallValidate
Page custom PageExternalLaTeX PageExternalLaTeXValidate
!ifndef BUNDLE_IMAGEMAGICK
Page custom PageExternalImageMagick PageExternalImageMagickValidate
!endif
!ifndef BUNDLE_GHOSTSCRIPT
Page custom PageExternalGhostscript PageExternalGhostscriptValidate
!endif
Page custom PageLanguage PageLanguageValidate
!define MUI_PAGE_HEADER_TEXT $(TEXT_DICT_TITLE)
!define MUI_PAGE_HEADER_SUBTEXT $(TEXT_DICT_SUBTITLE)
!define MUI_COMPONENTSPAGE_TEXT_TOP $(TEXT_DICT_TOP)
!define MUI_COMPONENTSPAGE_TEXT_COMPLIST $(TEXT_DICT_LIST)
!insertmacro MUI_PAGE_COMPONENTS # For spell checker dictionaries
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!define MUI_FINISHPAGE_RUN "$INSTDIR\${APP_RUN}"
!define MUI_FINISHPAGE_SHOWREADME
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
!define MUI_FINISHPAGE_SHOWREADME_FUNCTION CreateDesktopShortcut
!define MUI_FINISHPAGE_SHOWREADME_TEXT $(TEXT_FINISH_DESKTOP)
!define MUI_FINISHPAGE_LINK $(TEXT_FINISH_WEBSITE)
!define MUI_FINISHPAGE_LINK_LOCATION "http://www.lyx.org/"
!define MUI_PAGE_CUSTOMFUNCTION_SHOW CheckDesktopShortcut
!insertmacro MUI_PAGE_FINISH
# Uninstaller
!define MUI_WELCOMEPAGE_TITLE_3LINES
!define MUI_WELCOMEPAGE_TEXT $(UNTEXT_WELCOME)
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_COMPONENTS
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH
#--------------------------------
# Installer Languages
!macro LANG LANG_NAME
# NSIS language file
!insertmacro MUI_LANGUAGE "${LANG_NAME}"
# LyX language file
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "lang\${LANG_NAME}.nsh" "lang\English.nsh"
!macroend
!insertmacro LANG "english"
!insertmacro LANG "french"
!insertmacro LANG "german"
!insertmacro LANG "italian"
#--------------------------------
# Version information
VIProductVersion "${APP_VERSION_NUMBER}"
VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "${APP_NAME}"
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "${APP_INFO}"
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${APP_VERSION}"
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "${APP_COPYRIGHT}"
/*
gui.nsh
Installer user interface settings
*/
#--------------------------------
# General
Name "${APP_NAME} ${APP_VERSION}"
BrandingText " "
#--------------------------------
# Interface settings
!define MUI_ABORTWARNING
!define MUI_ICON "${SETUP_ICON}"
!define MUI_UNICON "${SETUP_ICON}"
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "${SETUP_HEADERIMAGE}"
!define MUI_HEADERIMAGE_RIGHT
!define MUI_WELCOMEFINISHPAGE_BITMAP "${SETUP_WIZARDIMAGE}"
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${SETUP_WIZARDIMAGE}"
!define MUI_COMPONENTSPAGE_NODESC
#--------------------------------
# Pages
# Installer
!define MUI_WELCOMEPAGE_TITLE_3LINES
!define MUI_WELCOMEPAGE_TEXT $(TEXT_WELCOME)
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "${FILES_LICENSE}"
!insertmacro MULTIUSER_PAGE_INSTALLMODE
Page custom PageReinstall PageReinstallValidate
Page custom PageExternalLaTeX PageExternalLaTeXValidate
!ifndef BUNDLE_IMAGEMAGICK
Page custom PageExternalImageMagick PageExternalImageMagickValidate
!endif
!ifndef BUNDLE_GHOSTSCRIPT
Page custom PageExternalGhostscript PageExternalGhostscriptValidate
!endif
Page custom PageLanguage PageLanguageValidate
!define MUI_PAGE_HEADER_TEXT $(TEXT_DICT_TITLE)
!define MUI_PAGE_HEADER_SUBTEXT $(TEXT_DICT_SUBTITLE)
!define MUI_COMPONENTSPAGE_TEXT_TOP $(TEXT_DICT_TOP)
!define MUI_COMPONENTSPAGE_TEXT_COMPLIST $(TEXT_DICT_LIST)
!insertmacro MUI_PAGE_COMPONENTS # For spell checker dictionaries
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!define MUI_FINISHPAGE_RUN "$INSTDIR\${APP_RUN}"
!define MUI_FINISHPAGE_SHOWREADME
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
!define MUI_FINISHPAGE_SHOWREADME_FUNCTION CreateDesktopShortcut
!define MUI_FINISHPAGE_SHOWREADME_TEXT $(TEXT_FINISH_DESKTOP)
!define MUI_FINISHPAGE_LINK $(TEXT_FINISH_WEBSITE)
!define MUI_FINISHPAGE_LINK_LOCATION "http://www.lyx.org/"
!define MUI_PAGE_CUSTOMFUNCTION_SHOW CheckDesktopShortcut
!insertmacro MUI_PAGE_FINISH
# Uninstaller
!define MUI_WELCOMEPAGE_TITLE_3LINES
!define MUI_WELCOMEPAGE_TEXT $(UNTEXT_WELCOME)
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_COMPONENTS
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH
#--------------------------------
# Installer Languages
!macro LANG LANG_NAME
# NSIS language file
!insertmacro MUI_LANGUAGE "${LANG_NAME}"
# LyX language file
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "lang\${LANG_NAME}.nsh" "lang\English.nsh"
!macroend
!insertmacro LANG "english"
!insertmacro LANG "french"
!insertmacro LANG "german"
!insertmacro LANG "italian"
#--------------------------------
# Version information
VIProductVersion "${APP_VERSION_NUMBER}"
VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "${APP_NAME}"
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "${APP_INFO}"
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${APP_VERSION}"
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "${APP_COPYRIGHT}"

View File

@ -1,42 +1,42 @@
/*
nsis.nsh
Configuration of standard NSIS header files
*/
#--------------------------------
# Multi-User settings
!define MULTIUSER_EXECUTIONLEVEL Highest
!define MULTIUSER_INSTALLMODE_COMMANDLINE
!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "${APP_REGKEY}"
!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME ""
!define MULTIUSER_INSTALLMODE_INSTDIR "${APP_DIR}"
!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY "${APP_REGKEY}"
!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME ""
!define MULTIUSER_INSTALLMODE_FUNCTION InitUser
!define MULTIUSER_MUI
#--------------------------------
# Standard header files
!include MUI2.nsh
!include LogicLib.nsh
!include StrFunc.nsh
!include FileFunc.nsh
!include WordFunc.nsh
!include Sections.nsh
!include WinVer.nsh
!include LangFile.nsh
!include MultiUser.nsh
!include nsDialogs.nsh
#--------------------------------
# Include standard functions
!insertmacro RefreshShellIcons
!insertmacro WordFind2X
/*
nsis.nsh
Configuration of standard NSIS header files
*/
#--------------------------------
# Multi-User settings
!define MULTIUSER_EXECUTIONLEVEL Highest
!define MULTIUSER_INSTALLMODE_COMMANDLINE
!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "${APP_REGKEY}"
!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME ""
!define MULTIUSER_INSTALLMODE_INSTDIR "${APP_DIR}"
!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY "${APP_REGKEY}"
!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME ""
!define MULTIUSER_INSTALLMODE_FUNCTION InitUser
!define MULTIUSER_MUI
#--------------------------------
# Standard header files
!include MUI2.nsh
!include LogicLib.nsh
!include StrFunc.nsh
!include FileFunc.nsh
!include WordFunc.nsh
!include Sections.nsh
!include WinVer.nsh
!include LangFile.nsh
!include MultiUser.nsh
!include nsDialogs.nsh
#--------------------------------
# Include standard functions
!insertmacro RefreshShellIcons
!insertmacro WordFind2X

View File

@ -1,31 +1,31 @@
/*
variables.nsh
Variables that are shared between multiple files
*/
Var PathLaTeX
Var PathLaTeXLocal
Var PathImageMagick
Var PathGhostscript
Var PathBibTeXEditor
Var SetupLaTeX
Var SizeLaTeX
!ifndef BUNDLE_IMAGEMAGICK
Var SetupImageMagick
Var SizeImageMagick
!endif
!ifndef BUNDLE_GHOSTSCRIPT
Var SetupGhostscript
Var SizeGhostscript
!endif
Var LangName
Var LangISOCode
Var PrinterConf
/*
variables.nsh
Variables that are shared between multiple files
*/
Var PathLaTeX
Var PathLaTeXLocal
Var PathImageMagick
Var PathGhostscript
Var PathBibTeXEditor
Var SetupLaTeX
Var SizeLaTeX
!ifndef BUNDLE_IMAGEMAGICK
Var SetupImageMagick
Var SizeImageMagick
!endif
!ifndef BUNDLE_GHOSTSCRIPT
Var SetupGhostscript
Var SizeGhostscript
!endif
Var LangName
Var LangISOCode
Var PrinterConf

View File

@ -1,421 +1,421 @@
{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}{\f1\fswiss\fcharset0 Arial;}{\f2\fnil\fcharset2 Symbol;}}
{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\qc\b\f0\fs24 LyX Windows Distribution License Agreement\b0\fs36\par
\pard\fs16\par
\pard\qc This Windows distribution of LyX contains:\par
\pard\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\fi-720\li720 LyX. You can redistribute LyX and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par
{\pntext\f2\'B7\tab}Components of Python. You can redistribute Python and/or modify it under the terms of the Python Software Foundation License Version 2.\par
{\pntext\f2\'B7\tab}Components of ImageMagick. You can redistribute the BaKoMa fonts under the terms of the ImageMagick license.\par
{\pntext\f2\'B7\tab}Components of GPL Ghostscript. You can redistribute Netpbm and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par
{\pntext\f2\'B7\tab}Components of Aspell. You can redistribute Aspell and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.\par
{\pntext\f2\'B7\tab}A modified version of the BaKoMa fonts. You can redistribute the BaKoMa fonts under the terms of the BaKoMa Font License.\par
{\pntext\f2\'B7\tab}The wasy font 'wasy10.ttf' from the latex-xft font bundle: http://packages.qa.debian.org/l/latex-xft-fonts.html. You can redistribute the latex-xft font bundle and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par
{\pntext\f2\'B7\tab}Components of Netpbm. You can redistribute Netpbm and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par
{\pntext\f2\'B7\tab}Components of Dvipost. You can redistribute Dvipost and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par
{\pntext\f2\'B7\tab}Components of Aiksaurus. You can redistribute Aiksaurus and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par
\pard\par
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.\par
\par
\pard\qc\b\fs24 GNU GENERAL PUBLIC LICENSE\b0\fs16\par
Version 2, June 1991\par
\par
Copyright (C) 1989, 1991 Free Software Foundation, Inc.\par
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\par
Everyone is permitted to copy and distribute verbatim copies\par
of this license document, but changing it is not allowed.\par
\pard\par
\b Preamble\b0\par
\par
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.\par
\par
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.\par
\par
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.\par
\par
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.\par
\par
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.\par
\par
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.\par
\par
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.\par
\par
The precise terms and conditions for copying, distribution and modification follow.\par
\page\b GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\b0\par
\par
0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".\par
\par
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.\par
\par
1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.\par
\par
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.\par
\par
2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:\par
\par
a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.\par
\par
b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.\par
\par
c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)\par
\page These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.\par
\par
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.\par
\par
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.\par
\par
3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:\par
\par
a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,\par
\par
b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,\par
\par
c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)\par
\par
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.\par
\par
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.\par
\page 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.\par
\par
5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.\par
\par
6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.\par
\par
7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.\par
\par
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.\par
\par
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.\par
\par
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. \page 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.\par
\par
9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\par
\par
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.\par
\par
10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.\par
\par
\b NO WARRANTY\b0\par
\par
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\par
\par
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\par
\par
\b END OF TERMS AND CONDITIONS\par
\par
\pard\qc How to Apply These Terms to Your New Programs\b0\par
\pard\par
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.\par
\par
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.\par
\par
<one line to give the program's name and a brief idea of what it does.>\par
Copyright (C) <year> <name of author>\par
\par
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 of the License, or(at your option) any later version.\par
\par
This program is distributed in the hope that it will be useful,\par
but WITHOUT ANY WARRANTY; without even the implied warranty of\par
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\par
GNU General Public License for more details.\par
\par
You should have received a copy of the GNU General Public License along\par
with this program; if not, write to the Free Software Foundation, Inc.,\par
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\par
\par
Also add information on how to contact you by electronic and paper mail.\par
\par
If the program is interactive, make it output a short notice like this when it starts in an interactive mode:\par
\par
Gnomovision version 69, Copyright (C) year name of author\par
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\par
This is free software, and you are welcome to redistribute it\par
under certain conditions; type `show c' for details.\par
\par
The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.\par
\par
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:\par
\par
Yoyodyne, Inc., hereby disclaims all copyright interest in the program\par
`Gnomovision' (which makes passes at compilers) written by James Hacker.\par
\par
<signature of Ty Coon>, 1 April 1989\par
Ty Coon, President of Vice\par
\par
This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License.\b\par
\b0\par
\pard\qc\b\fs24 GNU LESSER GENERAL PUBLIC LICENSE\b0\fs16\par
Version 2.1, February 1999\par
\par
Copyright (C) 1991, 1999 Free Software Foundation, Inc.\par
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\par
Everyone is permitted to copy and distribute verbatim copies\par
of this license document, but changing it is not allowed.\par
\par
[This is the first released version of the Lesser GPL. It also counts\par
as the successor of the GNU Library Public License, version 2, hence\par
the version number 2.1.]\par
\pard\b Preamble\b0\par
\par
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.\par
\par
This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below.\par
\par
When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things.\par
\par
To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it.\par
\par
For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights.\par
\par
We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library.\par
\par
To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others.\par
\par
Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license.\par
\par
Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs.\par
\par
When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library.\par
\par
We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances.\par
\par
For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.\par
\par
In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system.\par
\par
Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.\par
\par
The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run.\par
\par
\b TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\b0\par
\par
0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you".\par
\par
A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.\par
\par
The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)\par
\par
"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.\par
\par
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.\par
\par
1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.\par
\par
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.\par
\par
2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:\par
\par
* a) The modified work must itself be a software library.\par
* b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.\par
* c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.\par
* d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.\par
\par
(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)\par
\par
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.\par
\par
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.\par
\par
In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. \par
\par
3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.\par
\par
Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.\par
\par
This option is useful when you wish to copy part of the code of the Library into a program that is not a library.\par
\par
4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.\par
\par
If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.\par
\par
5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.\par
\par
However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.\par
\par
When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.\par
\par
If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)\par
\par
Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.\par
\par
6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.\par
\par
You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:\par
\par
* a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)\par
* b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.\par
* c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.\par
* d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.\par
* e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. \par
\par
For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.\par
\par
It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.\par
\par
7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:\par
\par
* a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.\par
* b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. \par
\par
8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.\par
\par
9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.\par
\par
10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.\par
\par
11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.\par
\par
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.\par
\par
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.\par
\par
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.\par
\par
12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.\par
\par
13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\par
\par
Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.\par
\par
14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.\par
\par
\b NO WARRANTY\b0\par
\par
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\par
\par
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\par
\par
\b END OF TERMS AND CONDITIONS\b0\par
\par
\pard\qc\b How to Apply These Terms to Your New Libraries\b0\par
\pard\par
If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License).\par
\par
To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.\par
\par
<one line to give the library's name and a brief idea of what it does.>\par
Copyright (C) <year> <name of author>\par
\par
This library is free software; you can redistribute it and/or\par
modify it under the terms of the GNU Lesser General Public\par
License as published by the Free Software Foundation; either\par
version 2.1 of the License, or (at your option) any later version.\par
\par
This library is distributed in the hope that it will be useful,\par
but WITHOUT ANY WARRANTY; without even the implied warranty of\par
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\par
Lesser General Public License for more details.\par
\par
You should have received a copy of the GNU Lesser General Public\par
License along with this library; if not, write to the Free Software\par
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\par
\par
Also add information on how to contact you by electronic and paper mail.\par
\par
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names:\par
\par
Yoyodyne, Inc., hereby disclaims all copyright interest in the\par
library `Frob' (a library for tweaking knobs) written by James Random Hacker.\par
\par
<signature of Ty Coon>, 1 April 1990\par
Ty Coon, President of Vice\par
\par
That's all there is to it!\par
\par
\pard\qc\b\fs24 PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2\b0\fs16\par
\pard\par
1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and the Individual or Organization ("Licensee") accessing and otherwise using this software ("Python") in source or binary form and its associated documentation.\par
\par
2. Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights Reserved" are retained in Python alone or in any derivative version prepared by Licensee.\par
\par
3. In the event Licensee prepares a derivative work that is based on or incorporates Python or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python.\par
\par
4. PSF is making Python available to Licensee on an "AS IS" basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.\par
\par
5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.\par
\par
6. This License Agreement will automatically terminate upon a material breach of its terms and conditions.\par
\par
7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between PSF and Licensee. This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party.\par
\par
8. By copying, installing or otherwise using Python, Licensee agrees to be bound by the terms and conditions of this License Agreement.\par
\par
\pard\qc\b\fs24 IMAGEMAGICK LICENSE\b0\fs16\par
\pard\par
The legally binding and authoritative terms and conditions for use, reproduction, and distribution of ImageMagick follow:\par
\par
Copyright 1999-2007 ImageMagick Studio LLC, a non-profit organization dedicated to making software imaging solutions freely available.\par
\par
1. Definitions.\par
\par
License shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.\par
\par
Licensor shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.\par
\par
Legal Entity shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, control means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.\par
\par
You (or Your) shall mean an individual or Legal Entity exercising permissions granted by this License.\par
\par
Source form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.\par
\par
Object form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.\par
\par
Work shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).\par
\par
Derivative Works shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.\par
\par
Contribution shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, submitted means any form of electronic, verbal, or written communication intentionally sent to the Licensor by its copyright holder or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as Not a Contribution.\par
\par
Contributor shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.\par
\par
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.\par
\par
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted.\par
\par
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:\par
\par
a. You must give any other recipients of the Work or Derivative Works a copy of this License; and\par
b. You must cause any modified files to carry prominent notices stating that You changed the files; and\par
c. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and\par
d. If the Work includes a NOTICE text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.\par
\par
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.\par
\par
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.\par
\par
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.\par
\par
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.\par
\par
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.\par
\par
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License.\par
\par
\pard\qc\b\fs24 BaKoMa Fonts License\par
\pard\b0\fs16\par
This licence covers two font packs (known as BaKoMa Fonts Colelction, which is available at `CTAN:fonts/cm/ps-type1/bakoma/'):\par
\par
1) BaKoMa-CM (1.1/12-Nov-94)\par
Computer Modern Fonts in PostScript Type 1 and TrueType font formats.\par
\par
2) BaKoMa-AMS (1.2/19-Jan-95)\par
AMS TeX fonts in PostScript Type 1 and TrueType font formats.\par
\par
Copyright (C) 1994, 1995, Basil K. Malyshev. All Rights Reserved.\par
\par
Permission to copy and distribute these fonts for any purpose is hereby granted without fee, provided that the above copyright notice, author statement and this permission notice appear in all copies of these fonts and related documentation.\par
\par
Permission to modify and distribute modified fonts for any purpose is hereby granted without fee, provided that the copyright notice, author statement, this permission notice and location of original fonts (http://www.ctan.org/tex-archive/fonts/cm/ps-type1/bakoma) appear in all copies of modified fonts and related documentation.\par
\par
Permission to use these fonts (embedding into PostScript, PDF, SVG and printing by using any software) is hereby granted without fee. It is not required to provide any notices about using these fonts.\par
\par
Basil K. Malyshev\par
INSTITUTE FOR HIGH ENERGY PHYSICS\par
IHEP, OMVT\par
Moscow Region\par
142281 PROTVINO\par
RUSSIA\par
\par
E-Mail: bakoma@mail.ru or malyshev@mail.ihep.ru\f1\par
}
{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}{\f1\fswiss\fcharset0 Arial;}{\f2\fnil\fcharset2 Symbol;}}
{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\qc\b\f0\fs24 LyX Windows Distribution License Agreement\b0\fs36\par
\pard\fs16\par
\pard\qc This Windows distribution of LyX contains:\par
\pard\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\fi-720\li720 LyX. You can redistribute LyX and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par
{\pntext\f2\'B7\tab}Components of Python. You can redistribute Python and/or modify it under the terms of the Python Software Foundation License Version 2.\par
{\pntext\f2\'B7\tab}Components of ImageMagick. You can redistribute the BaKoMa fonts under the terms of the ImageMagick license.\par
{\pntext\f2\'B7\tab}Components of GPL Ghostscript. You can redistribute Netpbm and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par
{\pntext\f2\'B7\tab}Components of Aspell. You can redistribute Aspell and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.\par
{\pntext\f2\'B7\tab}A modified version of the BaKoMa fonts. You can redistribute the BaKoMa fonts under the terms of the BaKoMa Font License.\par
{\pntext\f2\'B7\tab}The wasy font 'wasy10.ttf' from the latex-xft font bundle: http://packages.qa.debian.org/l/latex-xft-fonts.html. You can redistribute the latex-xft font bundle and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par
{\pntext\f2\'B7\tab}Components of Netpbm. You can redistribute Netpbm and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par
{\pntext\f2\'B7\tab}Components of Dvipost. You can redistribute Dvipost and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par
{\pntext\f2\'B7\tab}Components of Aiksaurus. You can redistribute Aiksaurus and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par
\pard\par
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.\par
\par
\pard\qc\b\fs24 GNU GENERAL PUBLIC LICENSE\b0\fs16\par
Version 2, June 1991\par
\par
Copyright (C) 1989, 1991 Free Software Foundation, Inc.\par
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\par
Everyone is permitted to copy and distribute verbatim copies\par
of this license document, but changing it is not allowed.\par
\pard\par
\b Preamble\b0\par
\par
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.\par
\par
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.\par
\par
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.\par
\par
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.\par
\par
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.\par
\par
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.\par
\par
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.\par
\par
The precise terms and conditions for copying, distribution and modification follow.\par
\page\b GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\b0\par
\par
0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".\par
\par
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.\par
\par
1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.\par
\par
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.\par
\par
2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:\par
\par
a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.\par
\par
b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.\par
\par
c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)\par
\page These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.\par
\par
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.\par
\par
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.\par
\par
3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:\par
\par
a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,\par
\par
b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,\par
\par
c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)\par
\par
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.\par
\par
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.\par
\page 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.\par
\par
5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.\par
\par
6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.\par
\par
7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.\par
\par
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.\par
\par
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.\par
\par
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. \page 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.\par
\par
9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\par
\par
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.\par
\par
10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.\par
\par
\b NO WARRANTY\b0\par
\par
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\par
\par
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\par
\par
\b END OF TERMS AND CONDITIONS\par
\par
\pard\qc How to Apply These Terms to Your New Programs\b0\par
\pard\par
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.\par
\par
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.\par
\par
<one line to give the program's name and a brief idea of what it does.>\par
Copyright (C) <year> <name of author>\par
\par
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 of the License, or(at your option) any later version.\par
\par
This program is distributed in the hope that it will be useful,\par
but WITHOUT ANY WARRANTY; without even the implied warranty of\par
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\par
GNU General Public License for more details.\par
\par
You should have received a copy of the GNU General Public License along\par
with this program; if not, write to the Free Software Foundation, Inc.,\par
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\par
\par
Also add information on how to contact you by electronic and paper mail.\par
\par
If the program is interactive, make it output a short notice like this when it starts in an interactive mode:\par
\par
Gnomovision version 69, Copyright (C) year name of author\par
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\par
This is free software, and you are welcome to redistribute it\par
under certain conditions; type `show c' for details.\par
\par
The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.\par
\par
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:\par
\par
Yoyodyne, Inc., hereby disclaims all copyright interest in the program\par
`Gnomovision' (which makes passes at compilers) written by James Hacker.\par
\par
<signature of Ty Coon>, 1 April 1989\par
Ty Coon, President of Vice\par
\par
This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License.\b\par
\b0\par
\pard\qc\b\fs24 GNU LESSER GENERAL PUBLIC LICENSE\b0\fs16\par
Version 2.1, February 1999\par
\par
Copyright (C) 1991, 1999 Free Software Foundation, Inc.\par
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\par
Everyone is permitted to copy and distribute verbatim copies\par
of this license document, but changing it is not allowed.\par
\par
[This is the first released version of the Lesser GPL. It also counts\par
as the successor of the GNU Library Public License, version 2, hence\par
the version number 2.1.]\par
\pard\b Preamble\b0\par
\par
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.\par
\par
This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below.\par
\par
When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things.\par
\par
To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it.\par
\par
For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights.\par
\par
We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library.\par
\par
To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others.\par
\par
Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license.\par
\par
Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs.\par
\par
When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library.\par
\par
We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances.\par
\par
For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.\par
\par
In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system.\par
\par
Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.\par
\par
The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run.\par
\par
\b TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\b0\par
\par
0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you".\par
\par
A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.\par
\par
The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)\par
\par
"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.\par
\par
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.\par
\par
1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.\par
\par
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.\par
\par
2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:\par
\par
* a) The modified work must itself be a software library.\par
* b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.\par
* c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.\par
* d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.\par
\par
(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)\par
\par
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.\par
\par
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.\par
\par
In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. \par
\par
3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.\par
\par
Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.\par
\par
This option is useful when you wish to copy part of the code of the Library into a program that is not a library.\par
\par
4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.\par
\par
If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.\par
\par
5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.\par
\par
However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.\par
\par
When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.\par
\par
If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)\par
\par
Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.\par
\par
6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.\par
\par
You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:\par
\par
* a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)\par
* b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.\par
* c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.\par
* d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.\par
* e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. \par
\par
For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.\par
\par
It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.\par
\par
7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:\par
\par
* a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.\par
* b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. \par
\par
8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.\par
\par
9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.\par
\par
10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.\par
\par
11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.\par
\par
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.\par
\par
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.\par
\par
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.\par
\par
12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.\par
\par
13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\par
\par
Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.\par
\par
14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.\par
\par
\b NO WARRANTY\b0\par
\par
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\par
\par
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\par
\par
\b END OF TERMS AND CONDITIONS\b0\par
\par
\pard\qc\b How to Apply These Terms to Your New Libraries\b0\par
\pard\par
If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License).\par
\par
To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.\par
\par
<one line to give the library's name and a brief idea of what it does.>\par
Copyright (C) <year> <name of author>\par
\par
This library is free software; you can redistribute it and/or\par
modify it under the terms of the GNU Lesser General Public\par
License as published by the Free Software Foundation; either\par
version 2.1 of the License, or (at your option) any later version.\par
\par
This library is distributed in the hope that it will be useful,\par
but WITHOUT ANY WARRANTY; without even the implied warranty of\par
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\par
Lesser General Public License for more details.\par
\par
You should have received a copy of the GNU Lesser General Public\par
License along with this library; if not, write to the Free Software\par
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\par
\par
Also add information on how to contact you by electronic and paper mail.\par
\par
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names:\par
\par
Yoyodyne, Inc., hereby disclaims all copyright interest in the\par
library `Frob' (a library for tweaking knobs) written by James Random Hacker.\par
\par
<signature of Ty Coon>, 1 April 1990\par
Ty Coon, President of Vice\par
\par
That's all there is to it!\par
\par
\pard\qc\b\fs24 PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2\b0\fs16\par
\pard\par
1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and the Individual or Organization ("Licensee") accessing and otherwise using this software ("Python") in source or binary form and its associated documentation.\par
\par
2. Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights Reserved" are retained in Python alone or in any derivative version prepared by Licensee.\par
\par
3. In the event Licensee prepares a derivative work that is based on or incorporates Python or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python.\par
\par
4. PSF is making Python available to Licensee on an "AS IS" basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.\par
\par
5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.\par
\par
6. This License Agreement will automatically terminate upon a material breach of its terms and conditions.\par
\par
7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between PSF and Licensee. This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party.\par
\par
8. By copying, installing or otherwise using Python, Licensee agrees to be bound by the terms and conditions of this License Agreement.\par
\par
\pard\qc\b\fs24 IMAGEMAGICK LICENSE\b0\fs16\par
\pard\par
The legally binding and authoritative terms and conditions for use, reproduction, and distribution of ImageMagick follow:\par
\par
Copyright 1999-2007 ImageMagick Studio LLC, a non-profit organization dedicated to making software imaging solutions freely available.\par
\par
1. Definitions.\par
\par
License shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.\par
\par
Licensor shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.\par
\par
Legal Entity shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, control means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.\par
\par
You (or Your) shall mean an individual or Legal Entity exercising permissions granted by this License.\par
\par
Source form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.\par
\par
Object form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.\par
\par
Work shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).\par
\par
Derivative Works shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.\par
\par
Contribution shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, submitted means any form of electronic, verbal, or written communication intentionally sent to the Licensor by its copyright holder or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as Not a Contribution.\par
\par
Contributor shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.\par
\par
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.\par
\par
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted.\par
\par
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:\par
\par
a. You must give any other recipients of the Work or Derivative Works a copy of this License; and\par
b. You must cause any modified files to carry prominent notices stating that You changed the files; and\par
c. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and\par
d. If the Work includes a NOTICE text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.\par
\par
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.\par
\par
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.\par
\par
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.\par
\par
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.\par
\par
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.\par
\par
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License.\par
\par
\pard\qc\b\fs24 BaKoMa Fonts License\par
\pard\b0\fs16\par
This licence covers two font packs (known as BaKoMa Fonts Colelction, which is available at `CTAN:fonts/cm/ps-type1/bakoma/'):\par
\par
1) BaKoMa-CM (1.1/12-Nov-94)\par
Computer Modern Fonts in PostScript Type 1 and TrueType font formats.\par
\par
2) BaKoMa-AMS (1.2/19-Jan-95)\par
AMS TeX fonts in PostScript Type 1 and TrueType font formats.\par
\par
Copyright (C) 1994, 1995, Basil K. Malyshev. All Rights Reserved.\par
\par
Permission to copy and distribute these fonts for any purpose is hereby granted without fee, provided that the above copyright notice, author statement and this permission notice appear in all copies of these fonts and related documentation.\par
\par
Permission to modify and distribute modified fonts for any purpose is hereby granted without fee, provided that the copyright notice, author statement, this permission notice and location of original fonts (http://www.ctan.org/tex-archive/fonts/cm/ps-type1/bakoma) appear in all copies of modified fonts and related documentation.\par
\par
Permission to use these fonts (embedding into PostScript, PDF, SVG and printing by using any software) is hereby granted without fee. It is not required to provide any notices about using these fonts.\par
\par
Basil K. Malyshev\par
INSTITUTE FOR HIGH ENERGY PHYSICS\par
IHEP, OMVT\par
Moscow Region\par
142281 PROTVINO\par
RUSSIA\par
\par
E-Mail: bakoma@mail.ru or malyshev@mail.ihep.ru\f1\par
}

View File

@ -1,55 +1,55 @@
/*
NSIS Script - LyX 1.5/1.6 Installer for Win32
Authors: Joost Verburg, Angus Leeming, Uwe Stöhr
Requires NSIS 2.36 or later
Licence details for all installer scripts can be found in the file COPYING
*/
!include settings.nsh
#--------------------------------
# Header files
!include include\declarations.nsh
!include include\variables.nsh
!include include\nsis.nsh
!include include\dictlist.nsh
!include include\filelist.nsh
!include include\langlist.nsh
!include include\detection.nsh
!include include\gui.nsh
!include include\init.nsh
#--------------------------------
# The following commands use makensis to compile two applications.
# Although these applications are written in NSIS, they do not install anything.
# Compile the launcher
!system '"${NSISDIR}\makensis.exe" "${FILES_LAUNCHER}\launcher.nsi"'
# Compile Windows PDF view helper
!system '"${NSISDIR}\makensis.exe" "${FILES_PDFVIEW}\pdfview.nsi"'
#--------------------------------
# Setup
!include setup\install.nsh
!include setup\uninstall.nsh
!include setup\configure.nsh
#--------------------------------
# User interface (wizard pages)
!include gui\external.nsh
!include gui\langselect.nsh
!include gui\reinstall.nsh
#--------------------------------
# Output file
Outfile "${SETUP_EXE}"
/*
NSIS Script - LyX 1.5/1.6 Installer for Win32
Authors: Joost Verburg, Angus Leeming, Uwe Stöhr
Requires NSIS 2.36 or later
Licence details for all installer scripts can be found in the file COPYING
*/
!include settings.nsh
#--------------------------------
# Header files
!include include\declarations.nsh
!include include\variables.nsh
!include include\nsis.nsh
!include include\dictlist.nsh
!include include\filelist.nsh
!include include\langlist.nsh
!include include\detection.nsh
!include include\gui.nsh
!include include\init.nsh
#--------------------------------
# The following commands use makensis to compile two applications.
# Although these applications are written in NSIS, they do not install anything.
# Compile the launcher
!system '"${NSISDIR}\makensis.exe" "${FILES_LAUNCHER}\launcher.nsi"'
# Compile Windows PDF view helper
!system '"${NSISDIR}\makensis.exe" "${FILES_PDFVIEW}\pdfview.nsi"'
#--------------------------------
# Setup
!include setup\install.nsh
!include setup\uninstall.nsh
!include setup\configure.nsh
#--------------------------------
# User interface (wizard pages)
!include gui\external.nsh
!include gui\langselect.nsh
!include gui\reinstall.nsh
#--------------------------------
# Output file
Outfile "${SETUP_EXE}"

View File

@ -1,59 +1,59 @@
/*
Settings for LyX installer
These typically need to be modified for each LyX release
*/
#--------------------------------
# Windows version on which the complier is running
!define COMPILER_OS VISTA
#!define COMPILER_OS XP
#--------------------------------
# Version number
!define APP_VERSION_MAJOR 1
!define APP_VERSION_MINOR 6
!define APP_VERSION_REVISION 0
!define APP_VERSION_BUILD 0 # Start with 1 for the installer releases of each version
!define /date APP_VERSION "${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}svn %Y%m%d" # Version to display
#--------------------------------
# Installer file name
# Typical names for the release are "LyX-1.5.4-1-Installer.exe" etc.
!ifndef ExeFile
!define /date ExeFile "LyX-${APP_VERSION_MAJOR}${APP_VERSION_MINOR}svn-%Y%m%d-Installer.exe"
!endif
!ifndef BundleExeFile
!define /date BundleExeFile "LyX-${APP_VERSION_MAJOR}${APP_VERSION_MINOR}svn-%Y%m%d-Installer-Bundle.exe"
!endif
!ifndef MinimalExeFile
!define /date MinimalExeFile "LyX-${APP_VERSION_MAJOR}${APP_VERSION_MINOR}svn-%Y%m%d-Installer-Minimal.exe"
!endif
#--------------------------------
# File names of component installers
!define SETUPFILE_LATEX "basic-miktex-2.7.3248.exe"
!define SETUPFILE_IMAGEMAGEMAGICK "ImageMagick-6.4.1-0-Q16-windows-dll.exe"
!define SETUPFILE_GHOSTSCRIPT "gs861w32.exe"
#--------------------------------
# Download size of components (in KB)
!define SIZE_DOWNLOAD_LATEX 78493
!define SIZE_DOWNLOAD_IMAGEMAGICK 8565
!define SIZE_DOWNLOAD_GHOSTSCRIPT 12469
#--------------------------------
# Approximations of space required for components (in KB)
!define SIZE_LATEX 225000
!define SIZE_IMAGEMAGICK 34500
!define SIZE_GHOSTSCRIPT 31500
/*
Settings for LyX installer
These typically need to be modified for each LyX release
*/
#--------------------------------
# Windows version on which the complier is running
!define COMPILER_OS VISTA
#!define COMPILER_OS XP
#--------------------------------
# Version number
!define APP_VERSION_MAJOR 1
!define APP_VERSION_MINOR 6
!define APP_VERSION_REVISION 0
!define APP_VERSION_BUILD 0 # Start with 1 for the installer releases of each version
!define /date APP_VERSION "${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}svn %Y%m%d" # Version to display
#--------------------------------
# Installer file name
# Typical names for the release are "LyX-1.5.4-1-Installer.exe" etc.
!ifndef ExeFile
!define /date ExeFile "LyX-${APP_VERSION_MAJOR}${APP_VERSION_MINOR}svn-%Y%m%d-Installer.exe"
!endif
!ifndef BundleExeFile
!define /date BundleExeFile "LyX-${APP_VERSION_MAJOR}${APP_VERSION_MINOR}svn-%Y%m%d-Installer-Bundle.exe"
!endif
!ifndef MinimalExeFile
!define /date MinimalExeFile "LyX-${APP_VERSION_MAJOR}${APP_VERSION_MINOR}svn-%Y%m%d-Installer-Minimal.exe"
!endif
#--------------------------------
# File names of component installers
!define SETUPFILE_LATEX "basic-miktex-2.7.3248.exe"
!define SETUPFILE_IMAGEMAGEMAGICK "ImageMagick-6.4.1-0-Q16-windows-dll.exe"
!define SETUPFILE_GHOSTSCRIPT "gs861w32.exe"
#--------------------------------
# Download size of components (in KB)
!define SIZE_DOWNLOAD_LATEX 78493
!define SIZE_DOWNLOAD_IMAGEMAGICK 8565
!define SIZE_DOWNLOAD_GHOSTSCRIPT 12469
#--------------------------------
# Approximations of space required for components (in KB)
!define SIZE_LATEX 225000
!define SIZE_IMAGEMAGICK 34500
!define SIZE_GHOSTSCRIPT 31500

View File

@ -1,131 +1,131 @@
Index: base/Aiksaurus.cpp
===================================================================
RCS file: /cvsroot/aiksaurus/base/Aiksaurus.cpp,v
retrieving revision 1.5
diff -u -r1.5 Aiksaurus.cpp
--- base/Aiksaurus.cpp 3 Apr 2005 19:10:55 -0000 1.5
+++ base/Aiksaurus.cpp 12 Jul 2006 21:00:20 -0000
@@ -36,36 +36,69 @@
using namespace std;
#if defined WIN32
+
#ifdef AIK_DATA_DIR
#undef AIK_DATA_DIR
#endif
- #include <windows.h>
- #define WIN32_LEAN_AND_MEAN
- // Default aik_data_dir is local directory
- std::string AIK_DATA_DIR(".\\");
- // Regestry Reading for AIK_DATA_DIR
- void ReadRegistry()
- {
- HKEY hKey;
- unsigned long lType;
- DWORD dwSize;
- unsigned char* szValue = NULL;
- if( ::RegOpenKeyEx( HKEY_LOCAL_MACHINE, "Software\\Aiksaurus", 0, KEY_READ, &hKey) == ERROR_SUCCESS )
- {
- // Determine size of string
- if( ::RegQueryValueEx( hKey, "Data_Dir", NULL, &lType, NULL, &dwSize) == ERROR_SUCCESS )
- {
- szValue = new unsigned char[dwSize + 1];
- ::RegQueryValueEx( hKey, "Data_Dir", NULL, &lType, szValue, &dwSize);
- AIK_DATA_DIR = (char*) szValue;
- delete[] szValue;
- }
- }
- }
+
+#ifndef HAVE_GETENV
+#define HAVE_GETENV
+#endif
+
+#include <windows.h>
+#define WIN32_LEAN_AND_MEAN
+
+// Default aik_data_dir is local directory
+std::string AIK_DATA_DIR(".\\");
+
+ std::string ReadRegString(HKEY hive, std::string key, std::string name)
+ {
+
+ // Reads a string from the Windows registry (used to get paths)
+
+ HKEY hKey;
+ unsigned long lType;
+ DWORD dwSize;
+ unsigned char* szValue = NULL;
+
+ if (::RegOpenKeyEx(hive, key.c_str(), 0, KEY_READ, &hKey) == ERROR_SUCCESS)
+ {
+ if(::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, NULL, &dwSize) == ERROR_SUCCESS)
+ {
+ szValue = new unsigned char[dwSize + 1];
+ ::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, szValue, &dwSize);
+ std::string RegistryReturn((char*)szValue);
+ delete[] szValue;
+ return RegistryReturn;
+ } else {
+ return "";
+ }
+ } else {
+ return "";
+ }
+ }
+
+ HKEY GetRegHive()
+ {
+
+ // Check whether Aiksaurus is installed for the current user or for all users
+
+ std::string value;
+
+ if (ReadRegString(HKEY_LOCAL_MACHINE, "Software\\Aiksaurus", "Data Path") == "")
+ {
+ return HKEY_CURRENT_USER;
+ } else {
+ return HKEY_LOCAL_MACHINE;
+ }
+
+ }
+
#if defined _DLL_BUILD
//Add a DllMain Entry point
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; }
#endif
+
#endif
namespace AiksaurusImpl
@@ -256,14 +289,25 @@
try
{
#if defined WIN32
- ReadRegistry();
+ std::string base(AIK_DATA_DIR);
+ std::string value;
+ HKEY hive;
+
+ hive = GetRegHive();
+ value = (hive, "Software\\Aiksaurus", "Data Path");
+ if (value != "") base == value;
#endif
- std::string base(AIK_DATA_DIR);
+
#ifdef HAVE_GETENV
- char * aikdatadir_envvar = getenv ("AIK_DATA_DIR");
- if (aikdatadir_envvar) base = std::string(aikdatadir_envvar);
+ char * aikdatadir_envvar = getenv ("AIK_DATA_DIR");
+ if (aikdatadir_envvar) base = std::string(aikdatadir_envvar);
+#endif
+
+#if defined WIN32
+ if (base.substr(base.length() - 1, 1) != "\\") base.append("\\");
#endif
- std::string mfile(base + "meanings.dat");
+
+ std::string mfile(base + "meanings.dat");
std::string wfile(base + "words.dat");
d_impl_ptr = new ThesaurusImpl(mfile.c_str(), wfile.c_str());
}
Index: base/Aiksaurus.cpp
===================================================================
RCS file: /cvsroot/aiksaurus/base/Aiksaurus.cpp,v
retrieving revision 1.5
diff -u -r1.5 Aiksaurus.cpp
--- base/Aiksaurus.cpp 3 Apr 2005 19:10:55 -0000 1.5
+++ base/Aiksaurus.cpp 12 Jul 2006 21:00:20 -0000
@@ -36,36 +36,69 @@
using namespace std;
#if defined WIN32
+
#ifdef AIK_DATA_DIR
#undef AIK_DATA_DIR
#endif
- #include <windows.h>
- #define WIN32_LEAN_AND_MEAN
- // Default aik_data_dir is local directory
- std::string AIK_DATA_DIR(".\\");
- // Regestry Reading for AIK_DATA_DIR
- void ReadRegistry()
- {
- HKEY hKey;
- unsigned long lType;
- DWORD dwSize;
- unsigned char* szValue = NULL;
- if( ::RegOpenKeyEx( HKEY_LOCAL_MACHINE, "Software\\Aiksaurus", 0, KEY_READ, &hKey) == ERROR_SUCCESS )
- {
- // Determine size of string
- if( ::RegQueryValueEx( hKey, "Data_Dir", NULL, &lType, NULL, &dwSize) == ERROR_SUCCESS )
- {
- szValue = new unsigned char[dwSize + 1];
- ::RegQueryValueEx( hKey, "Data_Dir", NULL, &lType, szValue, &dwSize);
- AIK_DATA_DIR = (char*) szValue;
- delete[] szValue;
- }
- }
- }
+
+#ifndef HAVE_GETENV
+#define HAVE_GETENV
+#endif
+
+#include <windows.h>
+#define WIN32_LEAN_AND_MEAN
+
+// Default aik_data_dir is local directory
+std::string AIK_DATA_DIR(".\\");
+
+ std::string ReadRegString(HKEY hive, std::string key, std::string name)
+ {
+
+ // Reads a string from the Windows registry (used to get paths)
+
+ HKEY hKey;
+ unsigned long lType;
+ DWORD dwSize;
+ unsigned char* szValue = NULL;
+
+ if (::RegOpenKeyEx(hive, key.c_str(), 0, KEY_READ, &hKey) == ERROR_SUCCESS)
+ {
+ if(::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, NULL, &dwSize) == ERROR_SUCCESS)
+ {
+ szValue = new unsigned char[dwSize + 1];
+ ::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, szValue, &dwSize);
+ std::string RegistryReturn((char*)szValue);
+ delete[] szValue;
+ return RegistryReturn;
+ } else {
+ return "";
+ }
+ } else {
+ return "";
+ }
+ }
+
+ HKEY GetRegHive()
+ {
+
+ // Check whether Aiksaurus is installed for the current user or for all users
+
+ std::string value;
+
+ if (ReadRegString(HKEY_LOCAL_MACHINE, "Software\\Aiksaurus", "Data Path") == "")
+ {
+ return HKEY_CURRENT_USER;
+ } else {
+ return HKEY_LOCAL_MACHINE;
+ }
+
+ }
+
#if defined _DLL_BUILD
//Add a DllMain Entry point
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; }
#endif
+
#endif
namespace AiksaurusImpl
@@ -256,14 +289,25 @@
try
{
#if defined WIN32
- ReadRegistry();
+ std::string base(AIK_DATA_DIR);
+ std::string value;
+ HKEY hive;
+
+ hive = GetRegHive();
+ value = (hive, "Software\\Aiksaurus", "Data Path");
+ if (value != "") base == value;
#endif
- std::string base(AIK_DATA_DIR);
+
#ifdef HAVE_GETENV
- char * aikdatadir_envvar = getenv ("AIK_DATA_DIR");
- if (aikdatadir_envvar) base = std::string(aikdatadir_envvar);
+ char * aikdatadir_envvar = getenv ("AIK_DATA_DIR");
+ if (aikdatadir_envvar) base = std::string(aikdatadir_envvar);
+#endif
+
+#if defined WIN32
+ if (base.substr(base.length() - 1, 1) != "\\") base.append("\\");
#endif
- std::string mfile(base + "meanings.dat");
+
+ std::string mfile(base + "meanings.dat");
std::string wfile(base + "words.dat");
d_impl_ptr = new ThesaurusImpl(mfile.c_str(), wfile.c_str());
}

View File

@ -1,220 +1,220 @@
diff -riwBu -Xex dtl\dt2dv.c dtl-modified\dt2dv.c
--- dtl\dt2dv.c Wed Mar 08 01:00:00 1995
+++ dtl-modified\dt2dv.c Mon Oct 02 13:28:35 2006
@@ -1,9 +1,11 @@
/* dt2dv - convert human-readable "DTL" file to DVI format
- this is intended to invert dv2dt version 0.6.0
- - version 0.6.1 - 14:38 GMT +11 Thu 9 March 1995
+ - version 0.6.2 - 27 July 2005
- Geoffrey Tobin G.Tobin@ee.latrobe.edu.au
- fixes: Michal Tomczak-Jaegermann ntomczak@vm.ucs.ualberta.ca
Nelson H. F. Beebe beebe@math.utah.edu
+ Angus Leeming leeming@lyx.org: Enable dt2dv to handle
+ .dvi files containing strings longer than 1024 chars.
- Reference: "The DVI Driver Standard, Level 0",
by The TUG DVI Driver Standards Committee.
Appendix A, "Device-Independent File Format".
@@ -34,7 +36,7 @@
size_t max; /* capacity of buf */
S4 wrote; /* number of characters written into buf */
size_t read; /* position in buf of next character to read from buf */
- char * buf; /* line buffer */
+ unsigned char * buf; /* line buffer */
} Line;
char linebuf[MAXLINE+1];
@@ -1089,7 +1091,7 @@
dinfo();
status = 0;
}
- else if ( ! isprint (c) && ! isspace (c))
+ else if ( ! isprint (c & 0x7f) && ! isspace (c))
{
PRINT_PROGNAME;
fprintf (stderr,
@@ -2223,7 +2225,7 @@
/* transfer (length and) quoted string from dtl to dvi file, */
/* return number of bytes written to dvi file. */
{
- U4 k, k2;
+ U4 k, k2, lstr_maxsize;
Lstring lstr;
if (debug)
@@ -2232,12 +2234,13 @@
fprintf (stderr, "(xfer_len_string) : entering xfer_len_string.\n");
}
- init_Lstring (&lstr, LSIZE);
-
/* k[n] : length of special string */
k = get_unsigned (dtl);
+ lstr_maxsize = (k > LSIZE) ? k : LSIZE;
+ init_Lstring (&lstr, lstr_maxsize);
+
if (debug)
{
PRINT_PROGNAME;
@@ -2567,7 +2570,7 @@
#ifdef HEX_CHECKSUM
/* c[4] : (hexadecimal) checksum : I (gt) would prefer this */
xfer_hex (4, dtl, dvi);
-#else /NOT HEX_CHECKSUM */
+#else /*NOT HEX_CHECKSUM */
/* c[4] : checksum (octal, for comparison with tftopl's .pl file) */
xfer_oct (4, dtl, dvi);
#endif
diff -riwBu -Xex dtl\Makefile dtl-modified\Makefile
--- dtl\Makefile Tue Sep 19 23:59:17 2006
+++ dtl-modified\Makefile Wed Jul 05 17:54:20 2006
@@ -3,6 +3,14 @@
# Thu 9 March 1995
# Geoffrey Tobin
# Nelson H. F. Beebe
+#
+# Changes 27 July 2005 by Angus Leeming to enable the Makefile to
+# work out of the box on both *nix and Windows machines under
+# the MinSYS environment.
+#
+# The Makefile can also be used unaltered to build a Windows executable
+# from a Linux box if make is invoked as:
+# $ make EXEEXT='.exe' CC='i386-mingw32-gcc'
#=======================================================================
BINDIR = /usr/local/bin
@@ -16,10 +24,22 @@
CP = /bin/cp
DITROFF = ditroff
DITROFF = groff
-EXES = dt2dv dv2dt
+
+# This is a GNU make extension.
+# If you're flavour of make refuses to accept it,
+# then simply hardcode EXEEXT.
+ifeq ($(WINDIR),)
+ EXEEXT =
+else
+ EXEEXT = .exe
+endif
+
+DT2DV = dt2dv$(EXEEXT)
+DV2DT = dv2dt$(EXEEXT)
+EXES = $(DT2DV) $(DV2DT)
LDFLAGS = -s
LDFLAGS =
-MAN2PS = ./man2ps
+MAN2PS = sh ./man2ps
MANDIR = /usr/local/man/man$(MANEXT)
MANEXT = 1
OBJS = dt2dv.o dv2dt.o
@@ -44,23 +64,24 @@
#=======================================================================
-all: dtl check doc
+#all: dtl check doc
+all: dtl check
doc: dt2dv.hlp dv2dt.hlp dt2dv.ps dv2dt.ps
-dtl: $(EXES)
+dtl: dv2dt dt2dv
check tests: hello example tripvdu edited
dv2dt: dv2dt.o dtl.h
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $@.o
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $(DV2DT) dv2dt.o
dt2dv: dt2dv.o dtl.h
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $@.o
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $(DT2DV) dt2dv.o
-hello: hello.dtl $(EXES)
- dt2dv hello.dtl hello2.dvi
- dv2dt hello2.dvi hello2.dtl
+hello: hello.dtl dv2dt dt2dv
+ ./$(DT2DV) hello.dtl hello2.dvi
+ ./$(DV2DT) hello2.dvi hello2.dtl
-@diff hello.dtl hello2.dtl > hello.dif
@if [ -s hello.dif ] ; \
then echo ERROR: differences in hello.dif ; \
@@ -69,11 +90,11 @@
hello.dtl: hello.tex
tex hello
- dv2dt hello.dvi hello.dtl
+ ./$(DV2DT) hello.dvi hello.dtl
-example: example.dtl $(EXES)
- dt2dv example.dtl example2.dvi
- dv2dt example2.dvi example2.dtl
+example: example.dtl dv2dt dt2dv
+ ./$(DT2DV) example.dtl example2.dvi
+ ./$(DV2DT) example2.dvi example2.dtl
-@diff example.dtl example2.dtl > example.dif
@if [ -s example.dif ] ; \
then echo ERROR: differences in example.dif ; \
@@ -82,11 +103,11 @@
example.dtl: example.tex
tex example
- dv2dt example.dvi example.dtl
+ ./$(DV2DT) example.dvi example.dtl
-tripvdu: tripvdu.dtl $(EXES)
- dt2dv tripvdu.dtl tripvdu2.dvi
- dv2dt tripvdu2.dvi tripvdu2.dtl
+tripvdu: tripvdu.dtl dv2dt dt2dv
+ ./$(DT2DV) tripvdu.dtl tripvdu2.dvi
+ ./$(DV2DT) tripvdu2.dvi tripvdu2.dtl
-@diff tripvdu.dtl tripvdu2.dtl > tripvdu.dif
@if [ -s tripvdu.dif ] ; \
then echo ERROR: differences in tripvdu.dif ; \
@@ -95,15 +116,15 @@
tripvdu.dtl: tripvdu.tex
tex tripvdu
- dv2dt tripvdu.dvi tripvdu.dtl
+ ./$(DV2DT) tripvdu.dvi tripvdu.dtl
# edited.txt is already a dtl file.
-edited: edited.txt $(EXES)
- dt2dv edited.txt edited.dvi
- dv2dt edited.dvi edited2.dtl
- dt2dv edited2.dtl edited2.dvi
- dv2dt edited2.dvi edited3.dtl
+edited: edited.txt dv2dt dt2dv
+ ./$(DT2DV) edited.txt edited.dvi
+ ./$(DV2DT) edited.dvi edited2.dtl
+ ./$(DT2DV) edited2.dtl edited2.dvi
+ ./$(DV2DT) edited2.dvi edited3.dtl
@if [ -s edited.dif ] ; \
then echo ERROR : differences in edited.dif ; \
else $(RM) edited.dif ; \
diff -riwBu -Xex dtl\man2ps dtl-modified\man2ps
--- dtl\man2ps Tue Sep 19 23:59:22 2006
+++ dtl-modified\man2ps Wed Sep 20 00:03:05 2006
@@ -20,16 +20,16 @@
esac
# We can use either GNU groff or Sun Solaris troff + dpost
-if [ -x /usr/local/bin/groff ]
+if [ which groff > /dev/null ]
then # GNU groff
TROFF="groff $FORMAT"
TROFF2PS="cat"
-elif [ -x /usr/lib/lp/postscript/dpost ]
++elif [ which dpost > /dev/null ]
then # Solaris 2.1
TROFF="troff $FORMAT"
TROFF2PS="/usr/lib/lp/postscript/dpost"
else
- echo "Cannot find troff-to-PostScript filter"
++ echo "Cannot find troff-to-PostScript filter" >&2
exit 1
fi
diff -riwBu -Xex dtl\dt2dv.c dtl-modified\dt2dv.c
--- dtl\dt2dv.c Wed Mar 08 01:00:00 1995
+++ dtl-modified\dt2dv.c Mon Oct 02 13:28:35 2006
@@ -1,9 +1,11 @@
/* dt2dv - convert human-readable "DTL" file to DVI format
- this is intended to invert dv2dt version 0.6.0
- - version 0.6.1 - 14:38 GMT +11 Thu 9 March 1995
+ - version 0.6.2 - 27 July 2005
- Geoffrey Tobin G.Tobin@ee.latrobe.edu.au
- fixes: Michal Tomczak-Jaegermann ntomczak@vm.ucs.ualberta.ca
Nelson H. F. Beebe beebe@math.utah.edu
+ Angus Leeming leeming@lyx.org: Enable dt2dv to handle
+ .dvi files containing strings longer than 1024 chars.
- Reference: "The DVI Driver Standard, Level 0",
by The TUG DVI Driver Standards Committee.
Appendix A, "Device-Independent File Format".
@@ -34,7 +36,7 @@
size_t max; /* capacity of buf */
S4 wrote; /* number of characters written into buf */
size_t read; /* position in buf of next character to read from buf */
- char * buf; /* line buffer */
+ unsigned char * buf; /* line buffer */
} Line;
char linebuf[MAXLINE+1];
@@ -1089,7 +1091,7 @@
dinfo();
status = 0;
}
- else if ( ! isprint (c) && ! isspace (c))
+ else if ( ! isprint (c & 0x7f) && ! isspace (c))
{
PRINT_PROGNAME;
fprintf (stderr,
@@ -2223,7 +2225,7 @@
/* transfer (length and) quoted string from dtl to dvi file, */
/* return number of bytes written to dvi file. */
{
- U4 k, k2;
+ U4 k, k2, lstr_maxsize;
Lstring lstr;
if (debug)
@@ -2232,12 +2234,13 @@
fprintf (stderr, "(xfer_len_string) : entering xfer_len_string.\n");
}
- init_Lstring (&lstr, LSIZE);
-
/* k[n] : length of special string */
k = get_unsigned (dtl);
+ lstr_maxsize = (k > LSIZE) ? k : LSIZE;
+ init_Lstring (&lstr, lstr_maxsize);
+
if (debug)
{
PRINT_PROGNAME;
@@ -2567,7 +2570,7 @@
#ifdef HEX_CHECKSUM
/* c[4] : (hexadecimal) checksum : I (gt) would prefer this */
xfer_hex (4, dtl, dvi);
-#else /NOT HEX_CHECKSUM */
+#else /*NOT HEX_CHECKSUM */
/* c[4] : checksum (octal, for comparison with tftopl's .pl file) */
xfer_oct (4, dtl, dvi);
#endif
diff -riwBu -Xex dtl\Makefile dtl-modified\Makefile
--- dtl\Makefile Tue Sep 19 23:59:17 2006
+++ dtl-modified\Makefile Wed Jul 05 17:54:20 2006
@@ -3,6 +3,14 @@
# Thu 9 March 1995
# Geoffrey Tobin
# Nelson H. F. Beebe
+#
+# Changes 27 July 2005 by Angus Leeming to enable the Makefile to
+# work out of the box on both *nix and Windows machines under
+# the MinSYS environment.
+#
+# The Makefile can also be used unaltered to build a Windows executable
+# from a Linux box if make is invoked as:
+# $ make EXEEXT='.exe' CC='i386-mingw32-gcc'
#=======================================================================
BINDIR = /usr/local/bin
@@ -16,10 +24,22 @@
CP = /bin/cp
DITROFF = ditroff
DITROFF = groff
-EXES = dt2dv dv2dt
+
+# This is a GNU make extension.
+# If you're flavour of make refuses to accept it,
+# then simply hardcode EXEEXT.
+ifeq ($(WINDIR),)
+ EXEEXT =
+else
+ EXEEXT = .exe
+endif
+
+DT2DV = dt2dv$(EXEEXT)
+DV2DT = dv2dt$(EXEEXT)
+EXES = $(DT2DV) $(DV2DT)
LDFLAGS = -s
LDFLAGS =
-MAN2PS = ./man2ps
+MAN2PS = sh ./man2ps
MANDIR = /usr/local/man/man$(MANEXT)
MANEXT = 1
OBJS = dt2dv.o dv2dt.o
@@ -44,23 +64,24 @@
#=======================================================================
-all: dtl check doc
+#all: dtl check doc
+all: dtl check
doc: dt2dv.hlp dv2dt.hlp dt2dv.ps dv2dt.ps
-dtl: $(EXES)
+dtl: dv2dt dt2dv
check tests: hello example tripvdu edited
dv2dt: dv2dt.o dtl.h
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $@.o
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $(DV2DT) dv2dt.o
dt2dv: dt2dv.o dtl.h
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $@.o
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $(DT2DV) dt2dv.o
-hello: hello.dtl $(EXES)
- dt2dv hello.dtl hello2.dvi
- dv2dt hello2.dvi hello2.dtl
+hello: hello.dtl dv2dt dt2dv
+ ./$(DT2DV) hello.dtl hello2.dvi
+ ./$(DV2DT) hello2.dvi hello2.dtl
-@diff hello.dtl hello2.dtl > hello.dif
@if [ -s hello.dif ] ; \
then echo ERROR: differences in hello.dif ; \
@@ -69,11 +90,11 @@
hello.dtl: hello.tex
tex hello
- dv2dt hello.dvi hello.dtl
+ ./$(DV2DT) hello.dvi hello.dtl
-example: example.dtl $(EXES)
- dt2dv example.dtl example2.dvi
- dv2dt example2.dvi example2.dtl
+example: example.dtl dv2dt dt2dv
+ ./$(DT2DV) example.dtl example2.dvi
+ ./$(DV2DT) example2.dvi example2.dtl
-@diff example.dtl example2.dtl > example.dif
@if [ -s example.dif ] ; \
then echo ERROR: differences in example.dif ; \
@@ -82,11 +103,11 @@
example.dtl: example.tex
tex example
- dv2dt example.dvi example.dtl
+ ./$(DV2DT) example.dvi example.dtl
-tripvdu: tripvdu.dtl $(EXES)
- dt2dv tripvdu.dtl tripvdu2.dvi
- dv2dt tripvdu2.dvi tripvdu2.dtl
+tripvdu: tripvdu.dtl dv2dt dt2dv
+ ./$(DT2DV) tripvdu.dtl tripvdu2.dvi
+ ./$(DV2DT) tripvdu2.dvi tripvdu2.dtl
-@diff tripvdu.dtl tripvdu2.dtl > tripvdu.dif
@if [ -s tripvdu.dif ] ; \
then echo ERROR: differences in tripvdu.dif ; \
@@ -95,15 +116,15 @@
tripvdu.dtl: tripvdu.tex
tex tripvdu
- dv2dt tripvdu.dvi tripvdu.dtl
+ ./$(DV2DT) tripvdu.dvi tripvdu.dtl
# edited.txt is already a dtl file.
-edited: edited.txt $(EXES)
- dt2dv edited.txt edited.dvi
- dv2dt edited.dvi edited2.dtl
- dt2dv edited2.dtl edited2.dvi
- dv2dt edited2.dvi edited3.dtl
+edited: edited.txt dv2dt dt2dv
+ ./$(DT2DV) edited.txt edited.dvi
+ ./$(DV2DT) edited.dvi edited2.dtl
+ ./$(DT2DV) edited2.dtl edited2.dvi
+ ./$(DV2DT) edited2.dvi edited3.dtl
@if [ -s edited.dif ] ; \
then echo ERROR : differences in edited.dif ; \
else $(RM) edited.dif ; \
diff -riwBu -Xex dtl\man2ps dtl-modified\man2ps
--- dtl\man2ps Tue Sep 19 23:59:22 2006
+++ dtl-modified\man2ps Wed Sep 20 00:03:05 2006
@@ -20,16 +20,16 @@
esac
# We can use either GNU groff or Sun Solaris troff + dpost
-if [ -x /usr/local/bin/groff ]
+if [ which groff > /dev/null ]
then # GNU groff
TROFF="groff $FORMAT"
TROFF2PS="cat"
-elif [ -x /usr/lib/lp/postscript/dpost ]
++elif [ which dpost > /dev/null ]
then # Solaris 2.1
TROFF="troff $FORMAT"
TROFF2PS="/usr/lib/lp/postscript/dpost"
else
- echo "Cannot find troff-to-PostScript filter"
++ echo "Cannot find troff-to-PostScript filter" >&2
exit 1
fi

View File

@ -1,360 +1,360 @@
diff -riwbBu -Xex dvipost-1.1/dvi.c dvipost-1.1-modified/dvi.c
--- dvipost-1.1/dvi.c Wed Mar 22 14:59:58 2006
+++ dvipost-1.1-modified/dvi.c Wed May 31 11:27:44 2006
@@ -502,8 +502,12 @@
for (i = 0; i < pos_changed.dim; i++)
{
POS *p = pos_changed.tab + i;
+ if (!p->type)
+ dout_special(out, osstart);
cmd_goto(out, p->end, cbcol);
dout_putrule(out, p->end - p->beg, cbrule);
+ if (!p->type)
+ dout_special(out, osend);
}
dout_special(out, cbend);
@@ -625,10 +629,9 @@
mv_right(w);
text_cnt++;
- if (!cbmode[page_stat]) return;
-
+ if (!cbmode[page_stat] && !osmode[page_stat]) return;
pos_add(&pos_changed, dvi_stat.v - text_height - cbexp,
- dvi_stat.v + text_depth + cbexp);
+ dvi_stat.v + text_depth + cbexp, cbmode[page_stat]);
if (cbframe)
{
diff -riwbBu -Xex dvipost-1.1/dvipost.c dvipost-1.1-modified/dvipost.c
--- dvipost-1.1/dvipost.c Mon Nov 4 08:44:46 2002
+++ dvipost-1.1-modified/dvipost.c Mon Sep 18 13:11:58 2006
@@ -1,6 +1,7 @@
/* dvi file post processing
$Copyright (C) 2002 Erich Fruehstueck
+Modified version by LyX Team
Dvipost is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
@@ -18,13 +19,20 @@
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*/
-
#include "dvipost.h"
#include "dvi.h"
+#if !defined(_MSC_VER)
#include <unistd.h>
#include <dirent.h>
+#else
+#include "dirent.h"
+#endif
#include <sys/stat.h>
+#ifdef _WIN32
+#include <windows.h>
+#endif
+
int dvipost (const char *iname, const char *oname)
{
FILE *input, *tmp, *output;
@@ -33,7 +41,19 @@
/* open temporary file
*/
+#ifndef _WIN32
tmp = tmpfile();
+#else
+ /* create temporary file in Windows temp directory */
+
+ char tmppath[MAX_PATH-14];
+ char tmpname[MAX_PATH];
+
+ GetTempPath(MAX_PATH-14, tmppath);
+ GetTempFileName(tmppath, "dvp", 0, tmpname);
+
+ tmp = fopen(tmpname, "r+b");
+#endif
if (!tmp)
{
@@ -57,8 +77,10 @@
}
else
{
+#ifndef _WIN32
iname = "<stdin>";
input = stdin;
+#endif
}
/* check magic and process input
@@ -94,6 +116,8 @@
/* copy file to output
*/
+
+#ifndef _WIN32
rewind(tmp);
if (oname && strcmp(oname, "-") != 0)
@@ -113,23 +137,20 @@
oname = "<stdout>";
output = stdout;
}
+#endif
message(NOTE, "$!: Copy data to %s\n", oname);
- while ((c = getc(tmp)) != EOF)
- putc(c, output);
-
+#ifndef _WIN32
+ while ((c = getc(tmp)) != EOF) putc(c, output);
fclose(tmp);
+#else
+ /* Copy file directly */
+ fclose(tmp);
+ CopyFile(tmpname, oname, FALSE);
+ DeleteFile(tmpname);
+#endif
- if (ferror(output))
- {
- fprintf(stderr, "%s: ", pname);
- perror(oname);
- stat = EXIT_FAILURE;
- }
- else stat = EXIT_SUCCESS;
-
- fclose(output);
return stat;
}
diff -riwbBu -Xex dvipost-1.1/dvipost.h dvipost-1.1-modified/dvipost.h
--- dvipost-1.1/dvipost.h Mon Nov 4 08:44:46 2002
+++ dvipost-1.1-modified/dvipost.h Sun Sep 17 22:03:51 2006
@@ -1,6 +1,7 @@
/* postfilter
$Copyright (C) 2002 Erich Fruehstueck
+Modified version by LyX Team
Dvipost is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
@@ -44,6 +45,7 @@
typedef struct {
int beg;
int end;
+ int type;
} POS;
typedef struct {
@@ -53,7 +55,7 @@
} PosTab;
void pos_init (PosTab *pos);
-void pos_add (PosTab *pos, int beg, int end);
+void pos_add (PosTab *pos, int beg, int end, int type);
extern int process_dvi (const char *id, FILE *in, FILE *out);
extern int dvipost (const char *iname, const char *oname);
diff -riwbBu -Xex dvipost-1.1/main.c dvipost-1.1-modified/main.c
--- dvipost-1.1/main.c Wed Nov 27 15:19:14 2002
+++ dvipost-1.1-modified/main.c Sun Sep 17 21:56:42 2006
@@ -24,15 +24,19 @@
#define TEX_ACCEPT_OPTIONS 1
#endif
-static char *version = "dvipost version 1.0\n\
+static char *version = "dvipost version 1.1 with modifications by LyX Team (sep 2006)\n\
Dvipost is copyright (C) 2002 Erich Fruehstueck.\n";
#include "dvipost.h"
#include "dvi.h"
+#if !defined(_MSC_VER)
#include <unistd.h>
+#endif
#include <string.h>
#include <sys/types.h>
+#ifndef _WIN32
#include <sys/wait.h>
+#endif
char **tex_argv = NULL;
int tex_argc = 0;
@@ -233,17 +237,26 @@
return stat;
}
-static char *get_dvi_name (const char *arg)
+static char *get_dvi_name (char *arg)
{
char *p, *dvi;
+#ifdef _WIN32
+ int i;
+
+ for (i=0; i < strlen(arg); ++i) {
+ if (arg[i] == '\\')
+ arg[i] = '/';
+ }
+#endif
+
p = strrchr(arg, '/');
if (p && p[1])
arg = p + 1;
- dvi = strcpy(xalloc(strlen(arg) + 4), arg);
- p = strchr(dvi, '.');
+ dvi = strcpy(xalloc(strlen(arg) + 5), arg);
+ p = strrchr(dvi, '.');
if (p && strcmp(p, ".tex") == 0)
*p = 0;
@@ -267,14 +280,32 @@
char *dviname;
int flag;
int i, n;
+#ifdef _WIN32
+ char *cmd;
+ char *qch;
+ char *p;
+#else
int status;
pid_t pid;
+#endif
time_t stamp;
tex_argv = xalloc((1 + argc) * sizeof(char*));
tex_argv[0] = argv[0];
tex_argc = 1;
+#ifdef _WIN32
+ for (i=0; i < strlen(argv[0]); ++i) {
+ if (argv[0][i] == '\\')
+ argv[0][i] = '/';
+ }
+
+ p = strrchr(argv[0], '.');
+
+ if (p && strcmp(p, ".exe") == 0)
+ *p = 0;
+#endif
+
pname = strrchr(argv[0], '/');
if (pname == NULL) pname = argv[0];
@@ -356,6 +387,34 @@
fflush(stdout);
time(&stamp);
+#ifdef _WIN32
+ for (i=0, n=0; i < tex_argc; ++i) {
+ n += strlen(tex_argv[i]);
+ qch = tex_argv[i];
+ while ((qch = strchr(qch, '"'))) {
+ ++qch;
+ ++n;
+ }
+ }
+
+ cmd = xalloc(1 + n + 3*(tex_argc-1));
+ strcpy(cmd, tex_argv[0]);
+
+ for (i=1, n=strlen(cmd); i < tex_argc; ++i)
+ {
+ cmd[n++] = ' ';
+ cmd[n++] = '"';
+ for (qch=tex_argv[i]; *qch; ++qch) {
+ if (*qch == '"')
+ cmd[n++] = '\\';
+ cmd[n++] = *qch;
+ }
+ cmd[n++] = '"';
+ }
+ cmd[n] = '\0';
+ system(cmd);
+ xfree(cmd);
+#else
pid = fork();
if (pid == -1)
@@ -368,6 +427,7 @@
execvp(tex_argv[0], tex_argv);
waitpid(pid, &status, 0);
+#endif
if (dviname)
return dvipost(dviname, dviname);
diff -riwbBu -Xex dvipost-1.1/pos.c dvipost-1.1-modified/pos.c
--- dvipost-1.1/pos.c Tue Oct 29 12:54:02 2002
+++ dvipost-1.1-modified/pos.c Sun Sep 17 22:03:41 2006
@@ -1,6 +1,7 @@
/* position table
$Copyright (C) 2002 Erich Fruehstueck
+Modified version by LyX Team
Dvipost is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
@@ -39,7 +40,7 @@
pos->dim = 0;
}
-void pos_add (PosTab *pos, int beg, int end)
+void pos_add (PosTab *pos, int beg, int end, int type)
{
if (beg > end)
{
@@ -56,7 +57,7 @@
{
if (last->end < end) last->end = end;
if (last->beg > beg) last->beg = beg;
-
+ if (last->type < type) last->type = type;
return;
}
}
@@ -64,5 +65,6 @@
pos_expand(pos);
pos->tab[pos->dim].beg = beg;
pos->tab[pos->dim].end = end;
+ pos->tab[pos->dim].type = type;
pos->dim++;
}
diff -riwbBu -Xex dvipost-1.1/tfm.c dvipost-1.1-modified/tfm.c
--- dvipost-1.1/tfm.c Sun Nov 3 09:52:04 2002
+++ dvipost-1.1-modified/tfm.c Sun Sep 17 22:03:44 2006
@@ -1,6 +1,7 @@
/* tfm data
$Copyright (C) 2002 Erich Fruehstueck
+Modified version by LyX Team
Dvipost is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
@@ -22,6 +23,11 @@
#include "dvi.h"
#include <ctype.h>
+#if defined(_MSC_VER)
+#define popen _popen
+#define pclose _pclose
+#endif
+
static char tfm_buf[1024];
static int tfm_err = 0;
static int tfm_pos = 0;
@@ -112,6 +118,8 @@
{
if (tfm_buf[n] == '\n')
{
+ if (n && tfm_buf[n-1] == '\r')
+ n--;
tfm_buf[n] = 0;
break;
}
diff -riwbBu -Xex dvipost-1.1/dvi.c dvipost-1.1-modified/dvi.c
--- dvipost-1.1/dvi.c Wed Mar 22 14:59:58 2006
+++ dvipost-1.1-modified/dvi.c Wed May 31 11:27:44 2006
@@ -502,8 +502,12 @@
for (i = 0; i < pos_changed.dim; i++)
{
POS *p = pos_changed.tab + i;
+ if (!p->type)
+ dout_special(out, osstart);
cmd_goto(out, p->end, cbcol);
dout_putrule(out, p->end - p->beg, cbrule);
+ if (!p->type)
+ dout_special(out, osend);
}
dout_special(out, cbend);
@@ -625,10 +629,9 @@
mv_right(w);
text_cnt++;
- if (!cbmode[page_stat]) return;
-
+ if (!cbmode[page_stat] && !osmode[page_stat]) return;
pos_add(&pos_changed, dvi_stat.v - text_height - cbexp,
- dvi_stat.v + text_depth + cbexp);
+ dvi_stat.v + text_depth + cbexp, cbmode[page_stat]);
if (cbframe)
{
diff -riwbBu -Xex dvipost-1.1/dvipost.c dvipost-1.1-modified/dvipost.c
--- dvipost-1.1/dvipost.c Mon Nov 4 08:44:46 2002
+++ dvipost-1.1-modified/dvipost.c Mon Sep 18 13:11:58 2006
@@ -1,6 +1,7 @@
/* dvi file post processing
$Copyright (C) 2002 Erich Fruehstueck
+Modified version by LyX Team
Dvipost is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
@@ -18,13 +19,20 @@
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*/
-
#include "dvipost.h"
#include "dvi.h"
+#if !defined(_MSC_VER)
#include <unistd.h>
#include <dirent.h>
+#else
+#include "dirent.h"
+#endif
#include <sys/stat.h>
+#ifdef _WIN32
+#include <windows.h>
+#endif
+
int dvipost (const char *iname, const char *oname)
{
FILE *input, *tmp, *output;
@@ -33,7 +41,19 @@
/* open temporary file
*/
+#ifndef _WIN32
tmp = tmpfile();
+#else
+ /* create temporary file in Windows temp directory */
+
+ char tmppath[MAX_PATH-14];
+ char tmpname[MAX_PATH];
+
+ GetTempPath(MAX_PATH-14, tmppath);
+ GetTempFileName(tmppath, "dvp", 0, tmpname);
+
+ tmp = fopen(tmpname, "r+b");
+#endif
if (!tmp)
{
@@ -57,8 +77,10 @@
}
else
{
+#ifndef _WIN32
iname = "<stdin>";
input = stdin;
+#endif
}
/* check magic and process input
@@ -94,6 +116,8 @@
/* copy file to output
*/
+
+#ifndef _WIN32
rewind(tmp);
if (oname && strcmp(oname, "-") != 0)
@@ -113,23 +137,20 @@
oname = "<stdout>";
output = stdout;
}
+#endif
message(NOTE, "$!: Copy data to %s\n", oname);
- while ((c = getc(tmp)) != EOF)
- putc(c, output);
-
+#ifndef _WIN32
+ while ((c = getc(tmp)) != EOF) putc(c, output);
fclose(tmp);
+#else
+ /* Copy file directly */
+ fclose(tmp);
+ CopyFile(tmpname, oname, FALSE);
+ DeleteFile(tmpname);
+#endif
- if (ferror(output))
- {
- fprintf(stderr, "%s: ", pname);
- perror(oname);
- stat = EXIT_FAILURE;
- }
- else stat = EXIT_SUCCESS;
-
- fclose(output);
return stat;
}
diff -riwbBu -Xex dvipost-1.1/dvipost.h dvipost-1.1-modified/dvipost.h
--- dvipost-1.1/dvipost.h Mon Nov 4 08:44:46 2002
+++ dvipost-1.1-modified/dvipost.h Sun Sep 17 22:03:51 2006
@@ -1,6 +1,7 @@
/* postfilter
$Copyright (C) 2002 Erich Fruehstueck
+Modified version by LyX Team
Dvipost is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
@@ -44,6 +45,7 @@
typedef struct {
int beg;
int end;
+ int type;
} POS;
typedef struct {
@@ -53,7 +55,7 @@
} PosTab;
void pos_init (PosTab *pos);
-void pos_add (PosTab *pos, int beg, int end);
+void pos_add (PosTab *pos, int beg, int end, int type);
extern int process_dvi (const char *id, FILE *in, FILE *out);
extern int dvipost (const char *iname, const char *oname);
diff -riwbBu -Xex dvipost-1.1/main.c dvipost-1.1-modified/main.c
--- dvipost-1.1/main.c Wed Nov 27 15:19:14 2002
+++ dvipost-1.1-modified/main.c Sun Sep 17 21:56:42 2006
@@ -24,15 +24,19 @@
#define TEX_ACCEPT_OPTIONS 1
#endif
-static char *version = "dvipost version 1.0\n\
+static char *version = "dvipost version 1.1 with modifications by LyX Team (sep 2006)\n\
Dvipost is copyright (C) 2002 Erich Fruehstueck.\n";
#include "dvipost.h"
#include "dvi.h"
+#if !defined(_MSC_VER)
#include <unistd.h>
+#endif
#include <string.h>
#include <sys/types.h>
+#ifndef _WIN32
#include <sys/wait.h>
+#endif
char **tex_argv = NULL;
int tex_argc = 0;
@@ -233,17 +237,26 @@
return stat;
}
-static char *get_dvi_name (const char *arg)
+static char *get_dvi_name (char *arg)
{
char *p, *dvi;
+#ifdef _WIN32
+ int i;
+
+ for (i=0; i < strlen(arg); ++i) {
+ if (arg[i] == '\\')
+ arg[i] = '/';
+ }
+#endif
+
p = strrchr(arg, '/');
if (p && p[1])
arg = p + 1;
- dvi = strcpy(xalloc(strlen(arg) + 4), arg);
- p = strchr(dvi, '.');
+ dvi = strcpy(xalloc(strlen(arg) + 5), arg);
+ p = strrchr(dvi, '.');
if (p && strcmp(p, ".tex") == 0)
*p = 0;
@@ -267,14 +280,32 @@
char *dviname;
int flag;
int i, n;
+#ifdef _WIN32
+ char *cmd;
+ char *qch;
+ char *p;
+#else
int status;
pid_t pid;
+#endif
time_t stamp;
tex_argv = xalloc((1 + argc) * sizeof(char*));
tex_argv[0] = argv[0];
tex_argc = 1;
+#ifdef _WIN32
+ for (i=0; i < strlen(argv[0]); ++i) {
+ if (argv[0][i] == '\\')
+ argv[0][i] = '/';
+ }
+
+ p = strrchr(argv[0], '.');
+
+ if (p && strcmp(p, ".exe") == 0)
+ *p = 0;
+#endif
+
pname = strrchr(argv[0], '/');
if (pname == NULL) pname = argv[0];
@@ -356,6 +387,34 @@
fflush(stdout);
time(&stamp);
+#ifdef _WIN32
+ for (i=0, n=0; i < tex_argc; ++i) {
+ n += strlen(tex_argv[i]);
+ qch = tex_argv[i];
+ while ((qch = strchr(qch, '"'))) {
+ ++qch;
+ ++n;
+ }
+ }
+
+ cmd = xalloc(1 + n + 3*(tex_argc-1));
+ strcpy(cmd, tex_argv[0]);
+
+ for (i=1, n=strlen(cmd); i < tex_argc; ++i)
+ {
+ cmd[n++] = ' ';
+ cmd[n++] = '"';
+ for (qch=tex_argv[i]; *qch; ++qch) {
+ if (*qch == '"')
+ cmd[n++] = '\\';
+ cmd[n++] = *qch;
+ }
+ cmd[n++] = '"';
+ }
+ cmd[n] = '\0';
+ system(cmd);
+ xfree(cmd);
+#else
pid = fork();
if (pid == -1)
@@ -368,6 +427,7 @@
execvp(tex_argv[0], tex_argv);
waitpid(pid, &status, 0);
+#endif
if (dviname)
return dvipost(dviname, dviname);
diff -riwbBu -Xex dvipost-1.1/pos.c dvipost-1.1-modified/pos.c
--- dvipost-1.1/pos.c Tue Oct 29 12:54:02 2002
+++ dvipost-1.1-modified/pos.c Sun Sep 17 22:03:41 2006
@@ -1,6 +1,7 @@
/* position table
$Copyright (C) 2002 Erich Fruehstueck
+Modified version by LyX Team
Dvipost is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
@@ -39,7 +40,7 @@
pos->dim = 0;
}
-void pos_add (PosTab *pos, int beg, int end)
+void pos_add (PosTab *pos, int beg, int end, int type)
{
if (beg > end)
{
@@ -56,7 +57,7 @@
{
if (last->end < end) last->end = end;
if (last->beg > beg) last->beg = beg;
-
+ if (last->type < type) last->type = type;
return;
}
}
@@ -64,5 +65,6 @@
pos_expand(pos);
pos->tab[pos->dim].beg = beg;
pos->tab[pos->dim].end = end;
+ pos->tab[pos->dim].type = type;
pos->dim++;
}
diff -riwbBu -Xex dvipost-1.1/tfm.c dvipost-1.1-modified/tfm.c
--- dvipost-1.1/tfm.c Sun Nov 3 09:52:04 2002
+++ dvipost-1.1-modified/tfm.c Sun Sep 17 22:03:44 2006
@@ -1,6 +1,7 @@
/* tfm data
$Copyright (C) 2002 Erich Fruehstueck
+Modified version by LyX Team
Dvipost is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
@@ -22,6 +23,11 @@
#include "dvi.h"
#include <ctype.h>
+#if defined(_MSC_VER)
+#define popen _popen
+#define pclose _pclose
+#endif
+
static char tfm_buf[1024];
static int tfm_err = 0;
static int tfm_pos = 0;
@@ -112,6 +118,8 @@
{
if (tfm_buf[n] == '\n')
{
+ if (n && tfm_buf[n-1] == '\r')
+ n--;
tfm_buf[n] = 0;
break;
}

View File

@ -1,329 +1,329 @@
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/hostname.c gettext-tools/src/hostname.c
--- gettext-tools/src/hostname.c 2005-05-20 16:40:02.000000000 -0400
+++ gettext-tools/src/hostname.c 2005-11-11 11:02:07.203125000 -0500
@@ -99,7 +99,7 @@
static enum { default_format, short_format, long_format, ip_format } format;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "fqdn", no_argument, NULL, 'f' },
{ "help", no_argument, NULL, 'h' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgattrib.c gettext-tools/src/msgattrib.c
--- gettext-tools/src/msgattrib.c 2005-05-20 16:40:15.000000000 -0400
+++ gettext-tools/src/msgattrib.c 2005-11-11 11:01:39.484375000 -0500
@@ -69,7 +69,7 @@
static int to_change;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-location", no_argument, &line_comment, 1 },
{ "clear-fuzzy", no_argument, NULL, CHAR_MAX + 8 },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgcat.c gettext-tools/src/msgcat.c
--- gettext-tools/src/msgcat.c 2005-05-20 16:40:19.000000000 -0400
+++ gettext-tools/src/msgcat.c 2005-11-11 11:02:33.109375000 -0500
@@ -53,7 +53,7 @@
static const char *to_code;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-location", no_argument, &line_comment, 1 },
{ "directory", required_argument, NULL, 'D' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgcmp.c gettext-tools/src/msgcmp.c
--- gettext-tools/src/msgcmp.c 2005-05-20 16:40:23.000000000 -0400
+++ gettext-tools/src/msgcmp.c 2005-11-11 11:02:51.906250000 -0500
@@ -49,7 +49,7 @@
static bool multi_domain_mode = false;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "directory", required_argument, NULL, 'D' },
{ "help", no_argument, NULL, 'h' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgcomm.c gettext-tools/src/msgcomm.c
--- gettext-tools/src/msgcomm.c 2005-05-20 16:40:27.000000000 -0400
+++ gettext-tools/src/msgcomm.c 2005-11-11 11:03:09.406250000 -0500
@@ -55,7 +55,7 @@
static const char *to_code;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-location", no_argument, &line_comment, 1 },
{ "directory", required_argument, NULL, 'D' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgconv.c gettext-tools/src/msgconv.c
--- gettext-tools/src/msgconv.c 2005-05-20 16:40:31.000000000 -0400
+++ gettext-tools/src/msgconv.c 2005-11-11 11:03:21.671875000 -0500
@@ -52,7 +52,7 @@
static const char *to_code;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-location", no_argument, &line_comment, 1 },
{ "directory", required_argument, NULL, 'D' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgen.c gettext-tools/src/msgen.c
--- gettext-tools/src/msgen.c 2005-05-20 16:40:35.000000000 -0400
+++ gettext-tools/src/msgen.c 2005-11-11 11:03:54.531250000 -0500
@@ -48,7 +48,7 @@
static int force_po;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-location", no_argument, &line_comment, 1 },
{ "directory", required_argument, NULL, 'D' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgexec.c gettext-tools/src/msgexec.c
--- gettext-tools/src/msgexec.c 2005-05-20 16:40:40.000000000 -0400
+++ gettext-tools/src/msgexec.c 2005-11-11 11:04:07.546875000 -0500
@@ -74,7 +74,7 @@
static int exitcode;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "directory", required_argument, NULL, 'D' },
{ "help", no_argument, NULL, 'h' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgfilter.c gettext-tools/src/msgfilter.c
--- gettext-tools/src/msgfilter.c 2005-05-20 16:40:44.000000000 -0400
+++ gettext-tools/src/msgfilter.c 2005-11-11 11:04:19.062500000 -0500
@@ -97,7 +97,7 @@
static int sub_argc;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-location", no_argument, &line_comment, 1 },
{ "directory", required_argument, NULL, 'D' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgfmt.c gettext-tools/src/msgfmt.c
--- gettext-tools/src/msgfmt.c 2005-11-11 00:58:30.000000000 -0500
+++ gettext-tools/src/msgfmt.c 2005-11-11 11:04:30.546875000 -0500
@@ -163,7 +163,7 @@
static int do_statistics;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "alignment", required_argument, NULL, 'a' },
{ "check", no_argument, NULL, 'c' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msggrep.c gettext-tools/src/msggrep.c
--- gettext-tools/src/msggrep.c 2005-05-20 16:41:05.000000000 -0400
+++ gettext-tools/src/msggrep.c 2005-11-11 11:03:39.796875000 -0500
@@ -81,7 +81,7 @@
static struct grep_task grep_task[3];
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-location", no_argument, &line_comment, 1 },
{ "comment", no_argument, NULL, 'C' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msginit.c gettext-tools/src/msginit.c
--- gettext-tools/src/msginit.c 2005-11-11 00:59:01.000000000 -0500
+++ gettext-tools/src/msginit.c 2005-11-11 11:04:42.078125000 -0500
@@ -125,7 +125,7 @@
static bool no_translator;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "help", no_argument, NULL, 'h' },
{ "input", required_argument, NULL, 'i' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgmerge.c gettext-tools/src/msgmerge.c
--- gettext-tools/src/msgmerge.c 2005-05-20 16:42:09.000000000 -0400
+++ gettext-tools/src/msgmerge.c 2005-11-11 11:04:51.328125000 -0500
@@ -84,7 +84,7 @@
static const char *backup_suffix_string;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-location", no_argument, &line_comment, 1 },
{ "backup", required_argument, NULL, CHAR_MAX + 1 },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgunfmt.c gettext-tools/src/msgunfmt.c
--- gettext-tools/src/msgunfmt.c 2005-05-20 16:42:11.000000000 -0400
+++ gettext-tools/src/msgunfmt.c 2005-11-11 11:05:45.718750000 -0500
@@ -73,7 +73,7 @@
static int force_po;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "csharp", no_argument, NULL, CHAR_MAX + 4 },
{ "csharp-resources", no_argument, NULL, CHAR_MAX + 5 },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msguniq.c gettext-tools/src/msguniq.c
--- gettext-tools/src/msguniq.c 2005-05-20 16:42:23.000000000 -0400
+++ gettext-tools/src/msguniq.c 2005-11-11 11:05:57.968750000 -0500
@@ -52,7 +52,7 @@
static const char *to_code;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-location", no_argument, &line_comment, 1 },
{ "directory", required_argument, NULL, 'D' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/urlget.c gettext-tools/src/urlget.c
--- gettext-tools/src/urlget.c 2005-05-20 16:44:41.000000000 -0400
+++ gettext-tools/src/urlget.c 2005-11-11 11:06:10.968750000 -0500
@@ -65,7 +65,7 @@
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "help", no_argument, NULL, 'h' },
{ "version", no_argument, NULL, 'V' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/xgettext.c gettext-tools/src/xgettext.c
--- gettext-tools/src/xgettext.c 2005-05-20 16:47:42.000000000 -0400
+++ gettext-tools/src/xgettext.c 2005-11-11 11:06:25.406250000 -0500
@@ -176,7 +176,7 @@
#endif
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-comments", optional_argument, NULL, 'c' },
{ "add-location", no_argument, &line_comment, 1 },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/tests/tstgettext.c gettext-tools/tests/tstgettext.c
--- gettext-tools/tests/tstgettext.c 2005-05-20 16:48:17.000000000 -0400
+++ gettext-tools/tests/tstgettext.c 2005-11-11 11:10:29.046875000 -0500
@@ -52,7 +52,7 @@
static bool do_expand;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "domain", required_argument, NULL, 'd' },
{ "env", required_argument, NULL, '=' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/tests/tstngettext.c gettext-tools/tests/tstngettext.c
--- gettext-tools/tests/tstngettext.c 2005-05-20 16:48:20.000000000 -0400
+++ gettext-tools/tests/tstngettext.c 2005-11-11 11:10:39.875000000 -0500
@@ -42,7 +42,7 @@
#define _(str) gettext (str)
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "domain", required_argument, NULL, 'd' },
{ "env", required_argument, NULL, '=' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-runtime/configure.ac gettext-runtime/configure.ac
--- gettext-runtime/configure.ac 2005-11-11 00:04:26.000000000 -0500
+++ gettext-runtime/configure.ac 2005-11-11 11:34:46.687500000 -0500
@@ -111,6 +111,28 @@
#endif
])
+dnl Since gcc-3.3.3, const variables are placed in .rdata section
+dnl On windows (cygwin, mingw) this is a problem if the variable
+dnl is a composite containing references to other variables, because
+dnl the runtime relocation machinery can't fixup the address. Thus
+dnl these composite vars must NOT be declared const. This typically
+dnl occurs in long_options structs, containing references to variables
+dnl that are the targets of an option flag.
+case "$host_os" in
+ *cygwin* | *mingw* )
+ AC_DEFINE([CONST_IS_PROBLEMATIC_WIN32], 1,
+ [Define to 1 if structs-containing-references must not be declared const])
+ ;;
+esac
+AH_VERBATIM([DEF_CONST_PROBLEMATIC_WIN32],
+[/* On some platforms, structs-containing-references must not be declared const */
+#if defined CONST_IS_PROBLEMATIC_WIN32
+# define CONST_PROBLEMATIC_WIN32
+#else
+# define CONST_PROBLEMATIC_WIN32 const
+#endif
+])
+
AH_VERBATIM([DEF_OS2],
[/* Extra OS/2 (emx+gcc) defines. */
#ifdef __EMX__
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/configure.ac gettext-tools/configure.ac
--- gettext-tools/configure.ac 2005-11-11 00:26:09.000000000 -0500
+++ gettext-tools/configure.ac 2005-11-11 11:34:03.140625000 -0500
@@ -214,6 +214,28 @@
#endif
])
+dnl Since gcc-3.3.3, const variables are placed in .rdata section
+dnl On windows (cygwin, mingw) this is a problem if the variable
+dnl is a composite containing references to other variables, because
+dnl the runtime relocation machinery can't fixup the address. Thus
+dnl these composite vars must NOT be declared const. This typically
+dnl occurs in long_options structs, containing references to variables
+dnl that are the targets of an option flag.
+case "$host_os" in
+ *cygwin* | *mingw* )
+ AC_DEFINE([CONST_IS_PROBLEMATIC_WIN32], 1,
+ [Define to 1 if structs-containing-references must not be declared const])
+ ;;
+esac
+AH_VERBATIM([DEF_CONST_PROBLEMATIC_WIN32],
+[/* On some platforms, structs-containing-references must not be declared const */
+#if defined CONST_IS_PROBLEMATIC_WIN32
+# define CONST_PROBLEMATIC_WIN32
+#else
+# define CONST_PROBLEMATIC_WIN32 const
+#endif
+])
+
dnl Check for the expat XML parser.
dnl On operating systems where binary distribution vendors are likely to
dnl ship both gettext and expat, we use dynamic loading to avoid a hard
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-runtime/src/envsubst.c gettext-runtime/src/envsubst.c
--- gettext-runtime/src/envsubst.c 2005-05-20 16:14:16.000000000 -0400
+++ gettext-runtime/src/envsubst.c 2005-11-11 11:07:50.796875000 -0500
@@ -43,7 +43,7 @@
static bool all_variables;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "help", no_argument, NULL, 'h' },
{ "variables", no_argument, NULL, 'v' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-runtime/src/gettext.c gettext-runtime/src/gettext.c
--- gettext-runtime/src/gettext.c 2005-05-20 16:14:21.000000000 -0400
+++ gettext-runtime/src/gettext.c 2005-11-11 11:08:03.859375000 -0500
@@ -48,7 +48,7 @@
static bool do_expand;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "domain", required_argument, NULL, 'd' },
{ "help", no_argument, NULL, 'h' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-runtime/src/ngettext.c gettext-runtime/src/ngettext.c
--- gettext-runtime/src/ngettext.c 2005-05-20 16:14:39.000000000 -0400
+++ gettext-runtime/src/ngettext.c 2005-11-11 11:08:16.062500000 -0500
@@ -44,7 +44,7 @@
static int do_expand;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "domain", required_argument, NULL, 'd' },
{ "help", no_argument, NULL, 'h' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/hostname.c gettext-tools/src/hostname.c
--- gettext-tools/src/hostname.c 2005-05-20 16:40:02.000000000 -0400
+++ gettext-tools/src/hostname.c 2005-11-11 11:02:07.203125000 -0500
@@ -99,7 +99,7 @@
static enum { default_format, short_format, long_format, ip_format } format;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "fqdn", no_argument, NULL, 'f' },
{ "help", no_argument, NULL, 'h' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgattrib.c gettext-tools/src/msgattrib.c
--- gettext-tools/src/msgattrib.c 2005-05-20 16:40:15.000000000 -0400
+++ gettext-tools/src/msgattrib.c 2005-11-11 11:01:39.484375000 -0500
@@ -69,7 +69,7 @@
static int to_change;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-location", no_argument, &line_comment, 1 },
{ "clear-fuzzy", no_argument, NULL, CHAR_MAX + 8 },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgcat.c gettext-tools/src/msgcat.c
--- gettext-tools/src/msgcat.c 2005-05-20 16:40:19.000000000 -0400
+++ gettext-tools/src/msgcat.c 2005-11-11 11:02:33.109375000 -0500
@@ -53,7 +53,7 @@
static const char *to_code;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-location", no_argument, &line_comment, 1 },
{ "directory", required_argument, NULL, 'D' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgcmp.c gettext-tools/src/msgcmp.c
--- gettext-tools/src/msgcmp.c 2005-05-20 16:40:23.000000000 -0400
+++ gettext-tools/src/msgcmp.c 2005-11-11 11:02:51.906250000 -0500
@@ -49,7 +49,7 @@
static bool multi_domain_mode = false;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "directory", required_argument, NULL, 'D' },
{ "help", no_argument, NULL, 'h' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgcomm.c gettext-tools/src/msgcomm.c
--- gettext-tools/src/msgcomm.c 2005-05-20 16:40:27.000000000 -0400
+++ gettext-tools/src/msgcomm.c 2005-11-11 11:03:09.406250000 -0500
@@ -55,7 +55,7 @@
static const char *to_code;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-location", no_argument, &line_comment, 1 },
{ "directory", required_argument, NULL, 'D' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgconv.c gettext-tools/src/msgconv.c
--- gettext-tools/src/msgconv.c 2005-05-20 16:40:31.000000000 -0400
+++ gettext-tools/src/msgconv.c 2005-11-11 11:03:21.671875000 -0500
@@ -52,7 +52,7 @@
static const char *to_code;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-location", no_argument, &line_comment, 1 },
{ "directory", required_argument, NULL, 'D' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgen.c gettext-tools/src/msgen.c
--- gettext-tools/src/msgen.c 2005-05-20 16:40:35.000000000 -0400
+++ gettext-tools/src/msgen.c 2005-11-11 11:03:54.531250000 -0500
@@ -48,7 +48,7 @@
static int force_po;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-location", no_argument, &line_comment, 1 },
{ "directory", required_argument, NULL, 'D' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgexec.c gettext-tools/src/msgexec.c
--- gettext-tools/src/msgexec.c 2005-05-20 16:40:40.000000000 -0400
+++ gettext-tools/src/msgexec.c 2005-11-11 11:04:07.546875000 -0500
@@ -74,7 +74,7 @@
static int exitcode;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "directory", required_argument, NULL, 'D' },
{ "help", no_argument, NULL, 'h' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgfilter.c gettext-tools/src/msgfilter.c
--- gettext-tools/src/msgfilter.c 2005-05-20 16:40:44.000000000 -0400
+++ gettext-tools/src/msgfilter.c 2005-11-11 11:04:19.062500000 -0500
@@ -97,7 +97,7 @@
static int sub_argc;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-location", no_argument, &line_comment, 1 },
{ "directory", required_argument, NULL, 'D' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgfmt.c gettext-tools/src/msgfmt.c
--- gettext-tools/src/msgfmt.c 2005-11-11 00:58:30.000000000 -0500
+++ gettext-tools/src/msgfmt.c 2005-11-11 11:04:30.546875000 -0500
@@ -163,7 +163,7 @@
static int do_statistics;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "alignment", required_argument, NULL, 'a' },
{ "check", no_argument, NULL, 'c' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msggrep.c gettext-tools/src/msggrep.c
--- gettext-tools/src/msggrep.c 2005-05-20 16:41:05.000000000 -0400
+++ gettext-tools/src/msggrep.c 2005-11-11 11:03:39.796875000 -0500
@@ -81,7 +81,7 @@
static struct grep_task grep_task[3];
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-location", no_argument, &line_comment, 1 },
{ "comment", no_argument, NULL, 'C' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msginit.c gettext-tools/src/msginit.c
--- gettext-tools/src/msginit.c 2005-11-11 00:59:01.000000000 -0500
+++ gettext-tools/src/msginit.c 2005-11-11 11:04:42.078125000 -0500
@@ -125,7 +125,7 @@
static bool no_translator;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "help", no_argument, NULL, 'h' },
{ "input", required_argument, NULL, 'i' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgmerge.c gettext-tools/src/msgmerge.c
--- gettext-tools/src/msgmerge.c 2005-05-20 16:42:09.000000000 -0400
+++ gettext-tools/src/msgmerge.c 2005-11-11 11:04:51.328125000 -0500
@@ -84,7 +84,7 @@
static const char *backup_suffix_string;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-location", no_argument, &line_comment, 1 },
{ "backup", required_argument, NULL, CHAR_MAX + 1 },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgunfmt.c gettext-tools/src/msgunfmt.c
--- gettext-tools/src/msgunfmt.c 2005-05-20 16:42:11.000000000 -0400
+++ gettext-tools/src/msgunfmt.c 2005-11-11 11:05:45.718750000 -0500
@@ -73,7 +73,7 @@
static int force_po;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "csharp", no_argument, NULL, CHAR_MAX + 4 },
{ "csharp-resources", no_argument, NULL, CHAR_MAX + 5 },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msguniq.c gettext-tools/src/msguniq.c
--- gettext-tools/src/msguniq.c 2005-05-20 16:42:23.000000000 -0400
+++ gettext-tools/src/msguniq.c 2005-11-11 11:05:57.968750000 -0500
@@ -52,7 +52,7 @@
static const char *to_code;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-location", no_argument, &line_comment, 1 },
{ "directory", required_argument, NULL, 'D' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/urlget.c gettext-tools/src/urlget.c
--- gettext-tools/src/urlget.c 2005-05-20 16:44:41.000000000 -0400
+++ gettext-tools/src/urlget.c 2005-11-11 11:06:10.968750000 -0500
@@ -65,7 +65,7 @@
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "help", no_argument, NULL, 'h' },
{ "version", no_argument, NULL, 'V' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/xgettext.c gettext-tools/src/xgettext.c
--- gettext-tools/src/xgettext.c 2005-05-20 16:47:42.000000000 -0400
+++ gettext-tools/src/xgettext.c 2005-11-11 11:06:25.406250000 -0500
@@ -176,7 +176,7 @@
#endif
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "add-comments", optional_argument, NULL, 'c' },
{ "add-location", no_argument, &line_comment, 1 },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/tests/tstgettext.c gettext-tools/tests/tstgettext.c
--- gettext-tools/tests/tstgettext.c 2005-05-20 16:48:17.000000000 -0400
+++ gettext-tools/tests/tstgettext.c 2005-11-11 11:10:29.046875000 -0500
@@ -52,7 +52,7 @@
static bool do_expand;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "domain", required_argument, NULL, 'd' },
{ "env", required_argument, NULL, '=' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/tests/tstngettext.c gettext-tools/tests/tstngettext.c
--- gettext-tools/tests/tstngettext.c 2005-05-20 16:48:20.000000000 -0400
+++ gettext-tools/tests/tstngettext.c 2005-11-11 11:10:39.875000000 -0500
@@ -42,7 +42,7 @@
#define _(str) gettext (str)
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "domain", required_argument, NULL, 'd' },
{ "env", required_argument, NULL, '=' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-runtime/configure.ac gettext-runtime/configure.ac
--- gettext-runtime/configure.ac 2005-11-11 00:04:26.000000000 -0500
+++ gettext-runtime/configure.ac 2005-11-11 11:34:46.687500000 -0500
@@ -111,6 +111,28 @@
#endif
])
+dnl Since gcc-3.3.3, const variables are placed in .rdata section
+dnl On windows (cygwin, mingw) this is a problem if the variable
+dnl is a composite containing references to other variables, because
+dnl the runtime relocation machinery can't fixup the address. Thus
+dnl these composite vars must NOT be declared const. This typically
+dnl occurs in long_options structs, containing references to variables
+dnl that are the targets of an option flag.
+case "$host_os" in
+ *cygwin* | *mingw* )
+ AC_DEFINE([CONST_IS_PROBLEMATIC_WIN32], 1,
+ [Define to 1 if structs-containing-references must not be declared const])
+ ;;
+esac
+AH_VERBATIM([DEF_CONST_PROBLEMATIC_WIN32],
+[/* On some platforms, structs-containing-references must not be declared const */
+#if defined CONST_IS_PROBLEMATIC_WIN32
+# define CONST_PROBLEMATIC_WIN32
+#else
+# define CONST_PROBLEMATIC_WIN32 const
+#endif
+])
+
AH_VERBATIM([DEF_OS2],
[/* Extra OS/2 (emx+gcc) defines. */
#ifdef __EMX__
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/configure.ac gettext-tools/configure.ac
--- gettext-tools/configure.ac 2005-11-11 00:26:09.000000000 -0500
+++ gettext-tools/configure.ac 2005-11-11 11:34:03.140625000 -0500
@@ -214,6 +214,28 @@
#endif
])
+dnl Since gcc-3.3.3, const variables are placed in .rdata section
+dnl On windows (cygwin, mingw) this is a problem if the variable
+dnl is a composite containing references to other variables, because
+dnl the runtime relocation machinery can't fixup the address. Thus
+dnl these composite vars must NOT be declared const. This typically
+dnl occurs in long_options structs, containing references to variables
+dnl that are the targets of an option flag.
+case "$host_os" in
+ *cygwin* | *mingw* )
+ AC_DEFINE([CONST_IS_PROBLEMATIC_WIN32], 1,
+ [Define to 1 if structs-containing-references must not be declared const])
+ ;;
+esac
+AH_VERBATIM([DEF_CONST_PROBLEMATIC_WIN32],
+[/* On some platforms, structs-containing-references must not be declared const */
+#if defined CONST_IS_PROBLEMATIC_WIN32
+# define CONST_PROBLEMATIC_WIN32
+#else
+# define CONST_PROBLEMATIC_WIN32 const
+#endif
+])
+
dnl Check for the expat XML parser.
dnl On operating systems where binary distribution vendors are likely to
dnl ship both gettext and expat, we use dynamic loading to avoid a hard
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-runtime/src/envsubst.c gettext-runtime/src/envsubst.c
--- gettext-runtime/src/envsubst.c 2005-05-20 16:14:16.000000000 -0400
+++ gettext-runtime/src/envsubst.c 2005-11-11 11:07:50.796875000 -0500
@@ -43,7 +43,7 @@
static bool all_variables;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "help", no_argument, NULL, 'h' },
{ "variables", no_argument, NULL, 'v' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-runtime/src/gettext.c gettext-runtime/src/gettext.c
--- gettext-runtime/src/gettext.c 2005-05-20 16:14:21.000000000 -0400
+++ gettext-runtime/src/gettext.c 2005-11-11 11:08:03.859375000 -0500
@@ -48,7 +48,7 @@
static bool do_expand;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "domain", required_argument, NULL, 'd' },
{ "help", no_argument, NULL, 'h' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-runtime/src/ngettext.c gettext-runtime/src/ngettext.c
--- gettext-runtime/src/ngettext.c 2005-05-20 16:14:39.000000000 -0400
+++ gettext-runtime/src/ngettext.c 2005-11-11 11:08:16.062500000 -0500
@@ -44,7 +44,7 @@
static int do_expand;
/* Long options. */
-static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{
{ "domain", required_argument, NULL, 'd' },
{ "help", no_argument, NULL, 'h' },

View File

@ -1,264 +1,264 @@
diff -riwBu -Xex aspell-setter-sep06/common/config.cpp aspell-setter-sep06-modified/common/config.cpp
--- aspell-setter-sep06/common/config.cpp 2005-12-12 17:41:06.000000000 +0100
+++ aspell-setter-sep06-modified/common/config.cpp 2007-02-16 22:40:26.947401600 +0100
@@ -78,6 +78,10 @@
namespace aspell {
+#ifdef WIN32PORT
+ String GetWindowsDir(String registry_name, String default_directory);
+#endif
+
const char * const keyinfo_type_name[4] = {
N_("string"), N_("integer"), N_("boolean"), N_("list")
};
@@ -642,20 +646,19 @@
} else if (strcmp(i, "home-dir") == 0) {
- //get the personal folder (e.g. "c:\My Documents")
- char * dir = new char[MAX_PATH];
- LPITEMIDLIST items = 0;
- HRESULT hand = SHGetSpecialFolderLocation(0, CSIDL_PERSONAL, &items);
- if ((NOERROR == hand) && items) {
- if (SHGetPathFromIDList(items, dir)) {
- for (char *ptr = dir; *ptr; ++ptr)
- if ('\\' == *ptr)
- *ptr = '/';
- final_str = dir;
- }
- CoTaskMemFree(items);
- }
- delete [] dir;
+ final_str = GetWindowsDir("Base Path", "");
+
+ } else if (strcmp(i, "dict-dir") == 0) {
+
+ final_str = GetWindowsDir("Dictionary Path", "Dictionaries");
+
+ } else if (strcmp(i, "data-dir") == 0) {
+
+ final_str = GetWindowsDir("Data Path", "Data");
+
+ } else if (strcmp(i, "personal-dir") == 0) {
+
+ final_str = GetWindowsDir("Personal Path", "Personal");
}
#endif
@@ -1394,20 +1397,6 @@
return no_err;
}
-#if defined(WIN32_USE_PERSONAL_DIR)
-# define HOME_DIR "!home-dir"
-# define PERSONAL "<lang>.pws"
-# define REPL "<lang>.prepl"
-#elif defined(ENABLE_WIN32_RELOCATABLE)
-# define HOME_DIR "<prefix>"
-# define PERSONAL "<lang>.pws"
-# define REPL "<lang>.prepl"
-#else
-# define HOME_DIR "<$HOME|./>"
-# define PERSONAL ".aspell.<lang>.pws"
-# define REPL ".aspell.<lang>.prepl"
-#endif
-
static const KeyInfo config_keys[] = {
// the description should be under 50 chars
{"actual-dict-dir", KeyInfoString, "<dict-dir^master>", 0}
@@ -1484,12 +1473,12 @@
, {"per-conf-path", KeyInfoString, "<home-dir/per-conf>", 0}
, {"personal", KeyInfoString, PERSONAL,
N_("personal dictionary file name")}
- , {"personal-path", KeyInfoString, "<home-dir/personal>", 0}
+ , {"personal-path", KeyInfoString, "<personal-dir/personal>", 0}
, {"prefix", KeyInfoString, PREFIX,
N_("prefix directory")}
, {"repl", KeyInfoString, REPL,
N_("replacements list file name") }
- , {"repl-path", KeyInfoString, "<home-dir/repl>", 0}
+ , {"repl-path", KeyInfoString, "<personal-dir/repl>", 0}
, {"run-together", KeyInfoBool, "false",
N_("consider run-together words legal"), KEYINFO_MAY_CHANGE}
, {"run-together-limit", KeyInfoInt, "2",
@@ -1524,12 +1513,6 @@
N_("search path for word list information files"), KEYINFO_HIDDEN}
, {"warn", KeyInfoBool, "true",
N_("enable warnings")}
-#ifdef WIN32PORT
- , {"dict-subdir", KeyInfoString, "dicts",
- N_("sub directory for dictionaries")}
- , {"data-subdir", KeyInfoString, "data",
- N_("sub directory for other data")}
-#endif
//
// These options are generally used when creating dictionaries
@@ -1574,7 +1557,10 @@
N_("suggest possible replacements"), KEYINFO_MAY_CHANGE}
, {"time" , KeyInfoBool, "false",
N_("time load time and suggest time in pipe mode"), KEYINFO_MAY_CHANGE}
-
+ #ifdef WIN32PORT
+ , {"personal-dir", KeyInfoString, PERSONAL_DIR,
+ N_("directory for personal dictionaries")}
+ #endif
};
const KeyInfo * config_impl_keys_begin = config_keys;
@@ -1588,4 +1574,87 @@
config_impl_keys_end);
}
+#ifdef WIN32PORT
+
+ String ReadRegString(HKEY hive, String key, String name)
+ {
+
+ // Reads a string from the Windows registry (used to get paths)
+
+ HKEY hKey;
+ unsigned long lType;
+ DWORD dwSize;
+ unsigned char* szValue = NULL;
+
+ if (::RegOpenKeyEx(hive, key.c_str(), 0, KEY_READ, &hKey) == ERROR_SUCCESS)
+ {
+ if(::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, NULL, &dwSize) == ERROR_SUCCESS)
+ {
+ szValue = new unsigned char[dwSize + 1];
+ ::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, szValue, &dwSize);
+ String RegistryReturn((char*)szValue);
+ delete[] szValue;
+ return RegistryReturn;
+ } else {
+ return "";
+ }
+ } else {
+ return "";
+ }
+
+ }
+
+ HKEY GetRegHive()
+ {
+
+ // Check whether Aspell is installed for the current user or for all users
+
+ String value;
+
+ if (ReadRegString(HKEY_CURRENT_USER, "Software\\Aspell", "Base Path").empty())
+ {
+ return HKEY_LOCAL_MACHINE;
+ } else {
+ return HKEY_CURRENT_USER;
+ }
+
+ }
+
+ String GetWindowsDir(String registry_name, String default_dir)
+ {
+
+ String final_dir;
+
+ // Get directory from registry
+ HKEY hive;
+ hive = GetRegHive();
+ final_dir = ReadRegString(hive, "Software\\Aspell", registry_name);
+
+ // Default location in "Documents and Settings"
+ if (final_dir.empty()) {
+
+ char * dir = new char[MAX_PATH];
+ LPITEMIDLIST items = 0;
+ HRESULT hand = SHGetSpecialFolderLocation(0, CSIDL_APPDATA, &items);
+
+ if ((NOERROR == hand) && items) {
+ if (SHGetPathFromIDList(items, dir)) {
+ for (char *ptr = dir; *ptr; ++ptr)
+ if ('\\' == *ptr)
+ *ptr = '/';
+ final_dir = dir;
+ final_dir.append("/Aspell/");
+ final_dir.append(default_dir.c_str());
+ }
+ CoTaskMemFree(items);
+ }
+
+ }
+
+ return final_dir;
+
+ }
+
+#endif
+
}
diff -riwBu -Xex aspell-setter-sep06/common/vector.hpp aspell-setter-sep06-modified/common/vector.hpp
--- aspell-setter-sep06/common/vector.hpp 2005-10-13 09:42:54.000000000 +0200
+++ aspell-setter-sep06-modified/common/vector.hpp 2006-09-17 19:50:45.730606400 +0200
@@ -50,10 +50,10 @@
T * data_end() {return &*this->end();}
T * pbegin() {return &*this->begin();}
- T * pend() {return &*this->end();}
+ T * pend() {return &this->back()+1;}
const T * pbegin() const {return &*this->begin();}
- const T * pend() const {return &*this->end();}
+ const T * pend() const {return &this->back()+1;}
template <typename U>
U * datap() {
diff -riwBu -Xex aspell-setter-sep06/win32/dirs.h aspell-setter-sep06-modified/win32/dirs.h
--- aspell-setter-sep06/win32/dirs.h 2005-10-13 13:29:34.000000000 +0200
+++ aspell-setter-sep06-modified/win32/dirs.h 2007-02-16 22:52:43.486492800 +0100
@@ -1,16 +1,26 @@
#ifndef dirs_h
#define dirs_h
-#ifdef WIN32_USE_EXECUTABLE_DIR
-# define DATA_DIR "<prefix/data-subdir>"
-# define CONF_DIR "<prefix>"
-# define DICT_DIR "<prefix/dict-subdir>"
+# define DATA_DIR "!data-dir"
+# define DICT_DIR "!dict-dir"
+# define PERSONAL_DIR "!personal-dir"
+# define CONF_DIR "<home-dir>"
+
+#if defined(WIN32_USE_EXECUTABLE_DIR)
+# define HOME_DIR "<prefix>"
+# define PERSONAL "<lang>.pws"
+# define REPL "<lang>.prepl"
# define PREFIX "!prefix"
+#elif defined(WIN32_USE_PERSONAL_DIR)
+# define HOME_DIR "!home-dir"
+# define PERSONAL "<lang>.pws"
+# define REPL "<lang>.prepl"
+# define PREFIX "<home-dir>"
#else
-# define DATA_DIR "aspell-win32/data"
-# define CONF_DIR "aspell-win32"
-# define DICT_DIR "dicts"
-# define PREFIX "aspell-win32"
+# define HOME_DIR "<$HOME|./>"
+# define PERSONAL ".aspell.<lang>.pws"
+# define REPL ".aspell.<lang>.prepl"
+# define PREFIX "<home-dir>"
#endif
#endif
diff -riwBu -Xex aspell-setter-sep06/win32/settings.h aspell-setter-sep06-modified/win32/settings.h
--- aspell-setter-sep06/win32/settings.h 2006-09-06 10:51:16.000000000 +0200
+++ aspell-setter-sep06-modified/win32/settings.h 2006-09-17 18:55:23.112916800 +0200
@@ -9,9 +9,6 @@
/* Defined if curses like POSIX Functions should be used */
#undef CURSES_ONLY
-/* Defined if win32 relocation should be used */
-#define ENABLE_WIN32_RELOCATABLE 1
-
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
diff -riwBu -Xex aspell-setter-sep06/common/config.cpp aspell-setter-sep06-modified/common/config.cpp
--- aspell-setter-sep06/common/config.cpp 2005-12-12 17:41:06.000000000 +0100
+++ aspell-setter-sep06-modified/common/config.cpp 2007-02-16 22:40:26.947401600 +0100
@@ -78,6 +78,10 @@
namespace aspell {
+#ifdef WIN32PORT
+ String GetWindowsDir(String registry_name, String default_directory);
+#endif
+
const char * const keyinfo_type_name[4] = {
N_("string"), N_("integer"), N_("boolean"), N_("list")
};
@@ -642,20 +646,19 @@
} else if (strcmp(i, "home-dir") == 0) {
- //get the personal folder (e.g. "c:\My Documents")
- char * dir = new char[MAX_PATH];
- LPITEMIDLIST items = 0;
- HRESULT hand = SHGetSpecialFolderLocation(0, CSIDL_PERSONAL, &items);
- if ((NOERROR == hand) && items) {
- if (SHGetPathFromIDList(items, dir)) {
- for (char *ptr = dir; *ptr; ++ptr)
- if ('\\' == *ptr)
- *ptr = '/';
- final_str = dir;
- }
- CoTaskMemFree(items);
- }
- delete [] dir;
+ final_str = GetWindowsDir("Base Path", "");
+
+ } else if (strcmp(i, "dict-dir") == 0) {
+
+ final_str = GetWindowsDir("Dictionary Path", "Dictionaries");
+
+ } else if (strcmp(i, "data-dir") == 0) {
+
+ final_str = GetWindowsDir("Data Path", "Data");
+
+ } else if (strcmp(i, "personal-dir") == 0) {
+
+ final_str = GetWindowsDir("Personal Path", "Personal");
}
#endif
@@ -1394,20 +1397,6 @@
return no_err;
}
-#if defined(WIN32_USE_PERSONAL_DIR)
-# define HOME_DIR "!home-dir"
-# define PERSONAL "<lang>.pws"
-# define REPL "<lang>.prepl"
-#elif defined(ENABLE_WIN32_RELOCATABLE)
-# define HOME_DIR "<prefix>"
-# define PERSONAL "<lang>.pws"
-# define REPL "<lang>.prepl"
-#else
-# define HOME_DIR "<$HOME|./>"
-# define PERSONAL ".aspell.<lang>.pws"
-# define REPL ".aspell.<lang>.prepl"
-#endif
-
static const KeyInfo config_keys[] = {
// the description should be under 50 chars
{"actual-dict-dir", KeyInfoString, "<dict-dir^master>", 0}
@@ -1484,12 +1473,12 @@
, {"per-conf-path", KeyInfoString, "<home-dir/per-conf>", 0}
, {"personal", KeyInfoString, PERSONAL,
N_("personal dictionary file name")}
- , {"personal-path", KeyInfoString, "<home-dir/personal>", 0}
+ , {"personal-path", KeyInfoString, "<personal-dir/personal>", 0}
, {"prefix", KeyInfoString, PREFIX,
N_("prefix directory")}
, {"repl", KeyInfoString, REPL,
N_("replacements list file name") }
- , {"repl-path", KeyInfoString, "<home-dir/repl>", 0}
+ , {"repl-path", KeyInfoString, "<personal-dir/repl>", 0}
, {"run-together", KeyInfoBool, "false",
N_("consider run-together words legal"), KEYINFO_MAY_CHANGE}
, {"run-together-limit", KeyInfoInt, "2",
@@ -1524,12 +1513,6 @@
N_("search path for word list information files"), KEYINFO_HIDDEN}
, {"warn", KeyInfoBool, "true",
N_("enable warnings")}
-#ifdef WIN32PORT
- , {"dict-subdir", KeyInfoString, "dicts",
- N_("sub directory for dictionaries")}
- , {"data-subdir", KeyInfoString, "data",
- N_("sub directory for other data")}
-#endif
//
// These options are generally used when creating dictionaries
@@ -1574,7 +1557,10 @@
N_("suggest possible replacements"), KEYINFO_MAY_CHANGE}
, {"time" , KeyInfoBool, "false",
N_("time load time and suggest time in pipe mode"), KEYINFO_MAY_CHANGE}
-
+ #ifdef WIN32PORT
+ , {"personal-dir", KeyInfoString, PERSONAL_DIR,
+ N_("directory for personal dictionaries")}
+ #endif
};
const KeyInfo * config_impl_keys_begin = config_keys;
@@ -1588,4 +1574,87 @@
config_impl_keys_end);
}
+#ifdef WIN32PORT
+
+ String ReadRegString(HKEY hive, String key, String name)
+ {
+
+ // Reads a string from the Windows registry (used to get paths)
+
+ HKEY hKey;
+ unsigned long lType;
+ DWORD dwSize;
+ unsigned char* szValue = NULL;
+
+ if (::RegOpenKeyEx(hive, key.c_str(), 0, KEY_READ, &hKey) == ERROR_SUCCESS)
+ {
+ if(::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, NULL, &dwSize) == ERROR_SUCCESS)
+ {
+ szValue = new unsigned char[dwSize + 1];
+ ::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, szValue, &dwSize);
+ String RegistryReturn((char*)szValue);
+ delete[] szValue;
+ return RegistryReturn;
+ } else {
+ return "";
+ }
+ } else {
+ return "";
+ }
+
+ }
+
+ HKEY GetRegHive()
+ {
+
+ // Check whether Aspell is installed for the current user or for all users
+
+ String value;
+
+ if (ReadRegString(HKEY_CURRENT_USER, "Software\\Aspell", "Base Path").empty())
+ {
+ return HKEY_LOCAL_MACHINE;
+ } else {
+ return HKEY_CURRENT_USER;
+ }
+
+ }
+
+ String GetWindowsDir(String registry_name, String default_dir)
+ {
+
+ String final_dir;
+
+ // Get directory from registry
+ HKEY hive;
+ hive = GetRegHive();
+ final_dir = ReadRegString(hive, "Software\\Aspell", registry_name);
+
+ // Default location in "Documents and Settings"
+ if (final_dir.empty()) {
+
+ char * dir = new char[MAX_PATH];
+ LPITEMIDLIST items = 0;
+ HRESULT hand = SHGetSpecialFolderLocation(0, CSIDL_APPDATA, &items);
+
+ if ((NOERROR == hand) && items) {
+ if (SHGetPathFromIDList(items, dir)) {
+ for (char *ptr = dir; *ptr; ++ptr)
+ if ('\\' == *ptr)
+ *ptr = '/';
+ final_dir = dir;
+ final_dir.append("/Aspell/");
+ final_dir.append(default_dir.c_str());
+ }
+ CoTaskMemFree(items);
+ }
+
+ }
+
+ return final_dir;
+
+ }
+
+#endif
+
}
diff -riwBu -Xex aspell-setter-sep06/common/vector.hpp aspell-setter-sep06-modified/common/vector.hpp
--- aspell-setter-sep06/common/vector.hpp 2005-10-13 09:42:54.000000000 +0200
+++ aspell-setter-sep06-modified/common/vector.hpp 2006-09-17 19:50:45.730606400 +0200
@@ -50,10 +50,10 @@
T * data_end() {return &*this->end();}
T * pbegin() {return &*this->begin();}
- T * pend() {return &*this->end();}
+ T * pend() {return &this->back()+1;}
const T * pbegin() const {return &*this->begin();}
- const T * pend() const {return &*this->end();}
+ const T * pend() const {return &this->back()+1;}
template <typename U>
U * datap() {
diff -riwBu -Xex aspell-setter-sep06/win32/dirs.h aspell-setter-sep06-modified/win32/dirs.h
--- aspell-setter-sep06/win32/dirs.h 2005-10-13 13:29:34.000000000 +0200
+++ aspell-setter-sep06-modified/win32/dirs.h 2007-02-16 22:52:43.486492800 +0100
@@ -1,16 +1,26 @@
#ifndef dirs_h
#define dirs_h
-#ifdef WIN32_USE_EXECUTABLE_DIR
-# define DATA_DIR "<prefix/data-subdir>"
-# define CONF_DIR "<prefix>"
-# define DICT_DIR "<prefix/dict-subdir>"
+# define DATA_DIR "!data-dir"
+# define DICT_DIR "!dict-dir"
+# define PERSONAL_DIR "!personal-dir"
+# define CONF_DIR "<home-dir>"
+
+#if defined(WIN32_USE_EXECUTABLE_DIR)
+# define HOME_DIR "<prefix>"
+# define PERSONAL "<lang>.pws"
+# define REPL "<lang>.prepl"
# define PREFIX "!prefix"
+#elif defined(WIN32_USE_PERSONAL_DIR)
+# define HOME_DIR "!home-dir"
+# define PERSONAL "<lang>.pws"
+# define REPL "<lang>.prepl"
+# define PREFIX "<home-dir>"
#else
-# define DATA_DIR "aspell-win32/data"
-# define CONF_DIR "aspell-win32"
-# define DICT_DIR "dicts"
-# define PREFIX "aspell-win32"
+# define HOME_DIR "<$HOME|./>"
+# define PERSONAL ".aspell.<lang>.pws"
+# define REPL ".aspell.<lang>.prepl"
+# define PREFIX "<home-dir>"
#endif
#endif
diff -riwBu -Xex aspell-setter-sep06/win32/settings.h aspell-setter-sep06-modified/win32/settings.h
--- aspell-setter-sep06/win32/settings.h 2006-09-06 10:51:16.000000000 +0200
+++ aspell-setter-sep06-modified/win32/settings.h 2006-09-17 18:55:23.112916800 +0200
@@ -9,9 +9,6 @@
/* Defined if curses like POSIX Functions should be used */
#undef CURSES_ONLY
-/* Defined if win32 relocation should be used */
-#define ENABLE_WIN32_RELOCATABLE 1
-
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H

File diff suppressed because it is too large Load Diff

View File

@ -1,131 +1,131 @@
diff -riwBu -Xex libiconv-1.11\config.h.msvc libiconv-1.11-modified\config.h.msvc
--- libiconv-1.11\config.h.msvc Wed Jul 19 21:10:22 2006
+++ libiconv-1.11-modified\config.h.msvc Sat Oct 14 01:36:15 2006
@@ -1,5 +1,11 @@
/* config.h.in. Generated from configure.ac by autoheader. */
+#define EXEEXT '.exe'
+
+typedef __int8 uint8_t;
+typedef __int16 uint16_t;
+typedef __int32 uint32_t;
+
/* Define to the number of bits in type 'int16_t'. */
#undef BITSIZEOF_INT16_T
diff -riwBu -Xex libiconv-1.11\lib\Makefile.msvc libiconv-1.11-modified\lib\Makefile.msvc
--- libiconv-1.11\lib\Makefile.msvc Thu Jan 06 18:37:08 2005
+++ libiconv-1.11-modified\lib\Makefile.msvc Fri Oct 20 12:25:08 2006
@@ -121,6 +121,7 @@
# iconv.dll and iconv.lib are created together.
iconv.lib : $(OBJECTS) $(RESOURCES)
$(CC) $(MFLAGS) $(DEBUGFLAGS) -LD $(OBJECTS) $(RESOURCES) -Feiconv.dll
+ mt.exe -manifest iconv.dll.manifest -outputresource:iconv.dll;2
iconv.res : $(srcdir)/../windows/iconv.rc
rc -Fo iconv.res $(srcdir)/../windows/iconv.rc
diff -riwBu -Xex libiconv-1.11\libcharset\lib\Makefile.msvc libiconv-1.11-modified\libcharset\lib\Makefile.msvc
--- libiconv-1.11\libcharset\lib\Makefile.msvc Thu Jan 06 18:46:04 2005
+++ libiconv-1.11-modified\libcharset\lib\Makefile.msvc Sat Oct 21 23:23:55 2006
@@ -116,6 +116,7 @@
# charset.dll and charset.lib are created together.
charset.lib : $(OBJECTS) $(RESOURCES)
$(CC) $(MFLAGS) $(DEBUGFLAGS) -LD $(OBJECTS) $(RESOURCES) -Fecharset.dll
+ mt.exe -manifest charset.dll.manifest -outputresource:charset.dll;2
charset.res : $(srcdir)/../windows/charset.rc
rc -Fo charset.res $(srcdir)/../windows/charset.rc
diff -riwBu -Xex libiconv-1.11\src\Makefile.msvc libiconv-1.11-modified\src\Makefile.msvc
--- libiconv-1.11\src\Makefile.msvc Sun May 18 13:27:30 2003
+++ libiconv-1.11-modified\src\Makefile.msvc Fri Oct 20 12:24:14 2006
@@ -93,18 +93,29 @@
SHELL = /bin/sh
+!if $(NO_NLS)
all : iconv_no_i18n.exe iconv.exe
+!else
+all : iconv.exe
+!endif
# This is the temporary iconv executable, without internationalization.
+
+!if $(NO_NLS)
+
iconv_no_i18n.exe : $(srcdir)/iconv_no_i18n.c $(srcdir)/iconv.c ../srclib/icrt.lib ../lib/iconv.lib
$(CC) $(INCLUDES) -I..\lib $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" $(srcdir)/iconv_no_i18n.c ../srclib/icrt.lib ../lib/iconv.lib -Feiconv_no_i18n.exe
+ mt.exe -manifest iconv_no_i18n.exe.manifest -outputresource:iconv_no_i18n.exe;1
$(RM) iconv_no_i18n.obj
!if $(DLL)
copy ..\lib\iconv.dll iconv.dll
!endif
+!endif
+
iconv.exe : $(srcdir)/iconv.c ../srclib/icrt.lib ../lib/iconv.lib
$(CC) $(INCLUDES) -I..\lib $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" $(srcdir)/iconv.c ../srclib/icrt.lib $(LIBINTL) ../lib/iconv.lib -Feiconv.exe
+ mt.exe -manifest iconv.exe.manifest -outputresource:iconv.exe;1
$(RM) iconv.obj
!if $(DLL)
copy ..\lib\iconv.dll iconv.dll
diff -riwBu -Xex libiconv-1.11\srclib\Makefile.msvc libiconv-1.11-modified\srclib\Makefile.msvc
--- libiconv-1.11\srclib\Makefile.msvc Sat Jan 24 11:11:24 2004
+++ libiconv-1.11-modified\srclib\Makefile.msvc Fri Oct 13 22:54:03 2006
@@ -90,7 +90,7 @@
xmalloc.obj xstrdup.obj \
\
relocatable.obj \
- setenv.obj unsetenv.obj
+ setenv.obj unsetenv.obj width.obj
all : icrt.lib
@@ -120,6 +120,9 @@
unsetenv.obj : unsetenv.c
$(CC) $(INCLUDES) $(CFLAGS) -c unsetenv.c
+
+width.obj : width.c
+ $(CC) $(INCLUDES) $(CFLAGS) -c width.c
icrt.lib : $(OBJECTS)
-$(RM) icrt.lib
diff -riwBu -Xex libiconv-1.11\srclib\progreloc.c libiconv-1.11-modified\srclib\progreloc.c
--- libiconv-1.11\srclib\progreloc.c Wed May 17 12:12:44 2006
+++ libiconv-1.11-modified\srclib\progreloc.c Fri Oct 13 22:23:31 2006
@@ -313,7 +313,7 @@
the filenames may have undergone a case conversion since
they were packaged. In other words, EXEEXT may be ".exe"
on one system and ".EXE" on another. */
- static const char exeext[] = EXEEXT;
+ static const char exeext = EXEEXT;
const char *s1 = argv0 + argv0_len - exeext_len;
const char *s2 = exeext;
for (; *s1 != '\0'; s1++, s2++)
diff -riwBu -Xex libiconv-1.11\srclib\unitypes.h libiconv-1.11-modified\srclib\unitypes.h
--- libiconv-1.11\srclib\unitypes.h Thu May 19 18:58:24 2005
+++ libiconv-1.11-modified\srclib\unitypes.h Fri Oct 13 22:37:58 2006
@@ -20,7 +20,9 @@
#define _UNITYPES_H
/* Get uint8_t, uint16_t, uint32_t. */
+#ifdef FULL_PATH_STDINT_H
#include <stdint.h>
+#endif
/* Type representing a Unicode character. */
typedef uint32_t ucs4_t;
diff -riwBu -Xex libiconv-1.11\srclib\unsetenv.c libiconv-1.11-modified\srclib\unsetenv.c
--- libiconv-1.11\srclib\unsetenv.c Sat Jun 17 17:51:52 2006
+++ libiconv-1.11-modified\srclib\unsetenv.c Fri Oct 13 22:24:29 2006
@@ -27,7 +27,10 @@
#include <stdlib.h>
#include <string.h>
+
+#ifdef HAVE_UNISTD_H
#include <unistd.h>
+#endif
#if !_LIBC
# define __environ environ
diff -riwBu -Xex libiconv-1.11\config.h.msvc libiconv-1.11-modified\config.h.msvc
--- libiconv-1.11\config.h.msvc Wed Jul 19 21:10:22 2006
+++ libiconv-1.11-modified\config.h.msvc Sat Oct 14 01:36:15 2006
@@ -1,5 +1,11 @@
/* config.h.in. Generated from configure.ac by autoheader. */
+#define EXEEXT '.exe'
+
+typedef __int8 uint8_t;
+typedef __int16 uint16_t;
+typedef __int32 uint32_t;
+
/* Define to the number of bits in type 'int16_t'. */
#undef BITSIZEOF_INT16_T
diff -riwBu -Xex libiconv-1.11\lib\Makefile.msvc libiconv-1.11-modified\lib\Makefile.msvc
--- libiconv-1.11\lib\Makefile.msvc Thu Jan 06 18:37:08 2005
+++ libiconv-1.11-modified\lib\Makefile.msvc Fri Oct 20 12:25:08 2006
@@ -121,6 +121,7 @@
# iconv.dll and iconv.lib are created together.
iconv.lib : $(OBJECTS) $(RESOURCES)
$(CC) $(MFLAGS) $(DEBUGFLAGS) -LD $(OBJECTS) $(RESOURCES) -Feiconv.dll
+ mt.exe -manifest iconv.dll.manifest -outputresource:iconv.dll;2
iconv.res : $(srcdir)/../windows/iconv.rc
rc -Fo iconv.res $(srcdir)/../windows/iconv.rc
diff -riwBu -Xex libiconv-1.11\libcharset\lib\Makefile.msvc libiconv-1.11-modified\libcharset\lib\Makefile.msvc
--- libiconv-1.11\libcharset\lib\Makefile.msvc Thu Jan 06 18:46:04 2005
+++ libiconv-1.11-modified\libcharset\lib\Makefile.msvc Sat Oct 21 23:23:55 2006
@@ -116,6 +116,7 @@
# charset.dll and charset.lib are created together.
charset.lib : $(OBJECTS) $(RESOURCES)
$(CC) $(MFLAGS) $(DEBUGFLAGS) -LD $(OBJECTS) $(RESOURCES) -Fecharset.dll
+ mt.exe -manifest charset.dll.manifest -outputresource:charset.dll;2
charset.res : $(srcdir)/../windows/charset.rc
rc -Fo charset.res $(srcdir)/../windows/charset.rc
diff -riwBu -Xex libiconv-1.11\src\Makefile.msvc libiconv-1.11-modified\src\Makefile.msvc
--- libiconv-1.11\src\Makefile.msvc Sun May 18 13:27:30 2003
+++ libiconv-1.11-modified\src\Makefile.msvc Fri Oct 20 12:24:14 2006
@@ -93,18 +93,29 @@
SHELL = /bin/sh
+!if $(NO_NLS)
all : iconv_no_i18n.exe iconv.exe
+!else
+all : iconv.exe
+!endif
# This is the temporary iconv executable, without internationalization.
+
+!if $(NO_NLS)
+
iconv_no_i18n.exe : $(srcdir)/iconv_no_i18n.c $(srcdir)/iconv.c ../srclib/icrt.lib ../lib/iconv.lib
$(CC) $(INCLUDES) -I..\lib $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" $(srcdir)/iconv_no_i18n.c ../srclib/icrt.lib ../lib/iconv.lib -Feiconv_no_i18n.exe
+ mt.exe -manifest iconv_no_i18n.exe.manifest -outputresource:iconv_no_i18n.exe;1
$(RM) iconv_no_i18n.obj
!if $(DLL)
copy ..\lib\iconv.dll iconv.dll
!endif
+!endif
+
iconv.exe : $(srcdir)/iconv.c ../srclib/icrt.lib ../lib/iconv.lib
$(CC) $(INCLUDES) -I..\lib $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" $(srcdir)/iconv.c ../srclib/icrt.lib $(LIBINTL) ../lib/iconv.lib -Feiconv.exe
+ mt.exe -manifest iconv.exe.manifest -outputresource:iconv.exe;1
$(RM) iconv.obj
!if $(DLL)
copy ..\lib\iconv.dll iconv.dll
diff -riwBu -Xex libiconv-1.11\srclib\Makefile.msvc libiconv-1.11-modified\srclib\Makefile.msvc
--- libiconv-1.11\srclib\Makefile.msvc Sat Jan 24 11:11:24 2004
+++ libiconv-1.11-modified\srclib\Makefile.msvc Fri Oct 13 22:54:03 2006
@@ -90,7 +90,7 @@
xmalloc.obj xstrdup.obj \
\
relocatable.obj \
- setenv.obj unsetenv.obj
+ setenv.obj unsetenv.obj width.obj
all : icrt.lib
@@ -120,6 +120,9 @@
unsetenv.obj : unsetenv.c
$(CC) $(INCLUDES) $(CFLAGS) -c unsetenv.c
+
+width.obj : width.c
+ $(CC) $(INCLUDES) $(CFLAGS) -c width.c
icrt.lib : $(OBJECTS)
-$(RM) icrt.lib
diff -riwBu -Xex libiconv-1.11\srclib\progreloc.c libiconv-1.11-modified\srclib\progreloc.c
--- libiconv-1.11\srclib\progreloc.c Wed May 17 12:12:44 2006
+++ libiconv-1.11-modified\srclib\progreloc.c Fri Oct 13 22:23:31 2006
@@ -313,7 +313,7 @@
the filenames may have undergone a case conversion since
they were packaged. In other words, EXEEXT may be ".exe"
on one system and ".EXE" on another. */
- static const char exeext[] = EXEEXT;
+ static const char exeext = EXEEXT;
const char *s1 = argv0 + argv0_len - exeext_len;
const char *s2 = exeext;
for (; *s1 != '\0'; s1++, s2++)
diff -riwBu -Xex libiconv-1.11\srclib\unitypes.h libiconv-1.11-modified\srclib\unitypes.h
--- libiconv-1.11\srclib\unitypes.h Thu May 19 18:58:24 2005
+++ libiconv-1.11-modified\srclib\unitypes.h Fri Oct 13 22:37:58 2006
@@ -20,7 +20,9 @@
#define _UNITYPES_H
/* Get uint8_t, uint16_t, uint32_t. */
+#ifdef FULL_PATH_STDINT_H
#include <stdint.h>
+#endif
/* Type representing a Unicode character. */
typedef uint32_t ucs4_t;
diff -riwBu -Xex libiconv-1.11\srclib\unsetenv.c libiconv-1.11-modified\srclib\unsetenv.c
--- libiconv-1.11\srclib\unsetenv.c Sat Jun 17 17:51:52 2006
+++ libiconv-1.11-modified\srclib\unsetenv.c Fri Oct 13 22:24:29 2006
@@ -27,7 +27,10 @@
#include <stdlib.h>
#include <string.h>
+
+#ifdef HAVE_UNISTD_H
#include <unistd.h>
+#endif
#if !_LIBC
# define __environ environ

File diff suppressed because it is too large Load Diff

View File

@ -1,250 +1,250 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Name="vld"
ProjectGUID="{0D30FFCB-45DA-4D2B-8E3C-81BC145BF2DE}"
RootNamespace="vld"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32, UNICODE, _UNICODE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
EnableFunctionLevelLinking="true"
WarningLevel="4"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
GenerateDebugInformation="true"
BaseAddress="0x03200000"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
AssemblyIdentity=""
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="3"
FavorSizeOrSpeed="1"
EnableFiberSafeOptimizations="true"
PreprocessorDefinitions="UNICODE, _UNICODE"
StringPooling="true"
RuntimeLibrary="2"
BufferSecurityCheck="false"
FloatingPointModel="2"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
GenerateDebugInformation="true"
OptimizeReferences="2"
EnableCOMDATFolding="2"
OptimizeForWindows98="1"
BaseAddress="0x03200000"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
AssemblyIdentity=""
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\..\src\callstack.cpp"
>
</File>
<File
RelativePath="..\..\src\ntapi.cpp"
>
</File>
<File
RelativePath="..\..\src\utility.cpp"
>
</File>
<File
RelativePath="..\..\src\vld.cpp"
>
</File>
<File
RelativePath="..\..\src\vldapi.cpp"
>
</File>
<File
RelativePath="..\..\src\vldheap.cpp"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="..\..\src\callstack.h"
>
</File>
<File
RelativePath="..\..\src\map.h"
>
</File>
<File
RelativePath="..\..\src\ntapi.h"
>
</File>
<File
RelativePath="..\..\src\set.h"
>
</File>
<File
RelativePath="..\..\src\tree.h"
>
</File>
<File
RelativePath="..\..\src\utility.h"
>
</File>
<File
RelativePath="..\..\include\vld.h"
>
</File>
<File
RelativePath="..\..\src\vldheap.h"
>
</File>
<File
RelativePath="..\..\src\vldint.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Name="vld"
ProjectGUID="{0D30FFCB-45DA-4D2B-8E3C-81BC145BF2DE}"
RootNamespace="vld"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32, UNICODE, _UNICODE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
EnableFunctionLevelLinking="true"
WarningLevel="4"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
GenerateDebugInformation="true"
BaseAddress="0x03200000"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
AssemblyIdentity=""
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="3"
FavorSizeOrSpeed="1"
EnableFiberSafeOptimizations="true"
PreprocessorDefinitions="UNICODE, _UNICODE"
StringPooling="true"
RuntimeLibrary="2"
BufferSecurityCheck="false"
FloatingPointModel="2"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
GenerateDebugInformation="true"
OptimizeReferences="2"
EnableCOMDATFolding="2"
OptimizeForWindows98="1"
BaseAddress="0x03200000"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
AssemblyIdentity=""
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\..\src\callstack.cpp"
>
</File>
<File
RelativePath="..\..\src\ntapi.cpp"
>
</File>
<File
RelativePath="..\..\src\utility.cpp"
>
</File>
<File
RelativePath="..\..\src\vld.cpp"
>
</File>
<File
RelativePath="..\..\src\vldapi.cpp"
>
</File>
<File
RelativePath="..\..\src\vldheap.cpp"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="..\..\src\callstack.h"
>
</File>
<File
RelativePath="..\..\src\map.h"
>
</File>
<File
RelativePath="..\..\src\ntapi.h"
>
</File>
<File
RelativePath="..\..\src\set.h"
>
</File>
<File
RelativePath="..\..\src\tree.h"
>
</File>
<File
RelativePath="..\..\src\utility.h"
>
</File>
<File
RelativePath="..\..\include\vld.h"
>
</File>
<File
RelativePath="..\..\src\vldheap.h"
>
</File>
<File
RelativePath="..\..\src\vldint.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -1,158 +1,158 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; $Id: vld.ini,v 1.7 2006/11/18 03:12:35 dmouldin Exp $
;;
;; Visual Leak Detector - Initialization/Configuration File
;; Copyright (c) 2006 Dan Moulding
;;
;; This library is free software; you can redistribute it and/or
;; modify it under the terms of the GNU Lesser General Public
;; License as published by the Free Software Foundation; either
;; version 2.1 of the License, or (at your option) any later version.
;;
;; This library 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
;; Lesser General Public License for more details.
;;
;; You should have received a copy of the GNU Lesser General Public
;; License along with this library; if not, write to the Free Software
;; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
;;
;; See COPYING.txt for the full terms of the GNU Lesser General Public License.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Any options left blank or not present will revert to their default values.
[Options]
; The main on/off switch. If off, Visual Leak Detector will be completely
; disabled. It will do nothing but print a message to the debugger indicating
; that it has been turned off.
;
; Valid Values: on, off
; Default: on
;
VLD = on
; If yes, duplicate leaks (those that are identical) are not shown individually.
; Only the first such leak is shown, along with a number indicating the total
; number of duplicate leaks.
;
; Valid Values: yes, no
; Default: no
;
AggregateDuplicates = no
; Lists any additional modules to be included in memory leak detection. This can
; be useful for checking for memory leaks in debug builds of 3rd party modules
; which can not be easily rebuilt with '#include "vld.h"'. This option should be
; used only if absolutely necessary and only if you really know what you are
; doing.
;
; CAUTION: Avoid listing any modules that link with the release CRT libraries.
; Only modules that link with the debug CRT libraries should be listed here.
; Doing otherwise might result in false memory leak reports or even crashes.
;
; Valid Values: Any list containing module names (i.e. names of EXEs or DLLs).
; Default: None.
;
; Also track Qt's allocations: (not 100% sure that the reported leaks are correct)
;ForceIncludeModules = QtCored4.dll QtGuid4.dll
ForceIncludeModules =
; Maximum number of data bytes to display for each leaked block. If zero, then
; the data dump is completely suppressed and only call stacks are shown.
; Limiting this to a low number can be useful if any of the leaked blocks are
; very large and cause unnecessary clutter in the memory leak report.
;
; Value Values: 0 - 4294967295
; Default: 4294967295
;
MaxDataDump =
; Maximum number of call stack frames to trace back during leak detection.
; Limiting this to a low number can reduce the CPU utilization overhead imposed
; by memory leak detection, especially when using the slower "safe" stack
; walking method (see StackWalkMethod below).
;
; Valid Values: 1 - 4294967295
; Default: 4294967295
;
MaxTraceFrames =
; Sets the type of encoding to use for the generated memory leak report. This
; option is really only useful in conjuction with sending the report to a file.
; Sending a Unicode encoded report to the debugger is not useful because the
; debugger cannot display Unicode characters. Using Unicode encoding might be
; useful if the data contained in leaked blocks is likely to consist of Unicode
; text.
;
; Valid Values: ascii, unicode
; Default: ascii
;
ReportEncoding = ascii
; Sets the report file destination, if reporting to file is enabled. A relative
; path may be specified and is considered relative to the process' working
; directory.
;
; Valid Values: Any valid path and filename.
; Default: .\memory_leak_report.txt
;
ReportFile =
; Sets the report destination to either a file, the debugger, or both. If
; reporting to file is enabled, the report is sent to the file specified by the
; ReportFile option.
;
; Valid Values: debugger, file, both
; Default: debugger
;
ReportTo = debugger
; Turns on or off a self-test mode which is used to verify that VLD is able to
; detect memory leaks in itself. Intended to be used for debugging VLD itself,
; not for debugging other programs.
;
; Valid Values: on, off
; Default: off
;
SelfTest = off
; Selects the method to be used for walking the stack to obtain stack traces for
; allocated memory blocks. The "fast" method may not always be able to
; successfully trace completely through all call stacks. In such cases, the
; "safe" method may prove to more reliably obtain the full stack trace. The
; disadvantage is that the "safe" method is significantly slower than the "fast"
; method and will probably result in very noticeable performance degradation of
; the program being debugged.
;
; Valid Values: fast, safe
; Default: fast
;
StackWalkMethod = fast
; Determines whether memory leak detection should be initially enabled for all
; threads, or whether it should be initially disabled for all threads. If set
; to "yes", then any threads requiring memory leak detection to be enabled will
; need to call VLDEnable at some point to enable leak detection for those
; threads.
;
; Valid Values: yes, no
; Default: no
;
StartDisabled = no
; Determines whether or not all frames, including frames internal to the heap,
; are traced. There will always be a number of frames internal to Visual Leak
; Detector and C/C++ or Win32 heap APIs that aren't generally useful for
; determining the cause of a leak. Normally these frames are skipped during the
; stack trace, which somewhat reduces the time spent tracing and amount of data
; collected and stored in memory. Including all frames in the stack trace, all
; the way down into VLD's own code can, however, be useful for debugging VLD
; itself.
;
; Valid Values: yes, no
; Default: no
;
TraceInternalFrames = no
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; $Id: vld.ini,v 1.7 2006/11/18 03:12:35 dmouldin Exp $
;;
;; Visual Leak Detector - Initialization/Configuration File
;; Copyright (c) 2006 Dan Moulding
;;
;; This library is free software; you can redistribute it and/or
;; modify it under the terms of the GNU Lesser General Public
;; License as published by the Free Software Foundation; either
;; version 2.1 of the License, or (at your option) any later version.
;;
;; This library 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
;; Lesser General Public License for more details.
;;
;; You should have received a copy of the GNU Lesser General Public
;; License along with this library; if not, write to the Free Software
;; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
;;
;; See COPYING.txt for the full terms of the GNU Lesser General Public License.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Any options left blank or not present will revert to their default values.
[Options]
; The main on/off switch. If off, Visual Leak Detector will be completely
; disabled. It will do nothing but print a message to the debugger indicating
; that it has been turned off.
;
; Valid Values: on, off
; Default: on
;
VLD = on
; If yes, duplicate leaks (those that are identical) are not shown individually.
; Only the first such leak is shown, along with a number indicating the total
; number of duplicate leaks.
;
; Valid Values: yes, no
; Default: no
;
AggregateDuplicates = no
; Lists any additional modules to be included in memory leak detection. This can
; be useful for checking for memory leaks in debug builds of 3rd party modules
; which can not be easily rebuilt with '#include "vld.h"'. This option should be
; used only if absolutely necessary and only if you really know what you are
; doing.
;
; CAUTION: Avoid listing any modules that link with the release CRT libraries.
; Only modules that link with the debug CRT libraries should be listed here.
; Doing otherwise might result in false memory leak reports or even crashes.
;
; Valid Values: Any list containing module names (i.e. names of EXEs or DLLs).
; Default: None.
;
; Also track Qt's allocations: (not 100% sure that the reported leaks are correct)
;ForceIncludeModules = QtCored4.dll QtGuid4.dll
ForceIncludeModules =
; Maximum number of data bytes to display for each leaked block. If zero, then
; the data dump is completely suppressed and only call stacks are shown.
; Limiting this to a low number can be useful if any of the leaked blocks are
; very large and cause unnecessary clutter in the memory leak report.
;
; Value Values: 0 - 4294967295
; Default: 4294967295
;
MaxDataDump =
; Maximum number of call stack frames to trace back during leak detection.
; Limiting this to a low number can reduce the CPU utilization overhead imposed
; by memory leak detection, especially when using the slower "safe" stack
; walking method (see StackWalkMethod below).
;
; Valid Values: 1 - 4294967295
; Default: 4294967295
;
MaxTraceFrames =
; Sets the type of encoding to use for the generated memory leak report. This
; option is really only useful in conjuction with sending the report to a file.
; Sending a Unicode encoded report to the debugger is not useful because the
; debugger cannot display Unicode characters. Using Unicode encoding might be
; useful if the data contained in leaked blocks is likely to consist of Unicode
; text.
;
; Valid Values: ascii, unicode
; Default: ascii
;
ReportEncoding = ascii
; Sets the report file destination, if reporting to file is enabled. A relative
; path may be specified and is considered relative to the process' working
; directory.
;
; Valid Values: Any valid path and filename.
; Default: .\memory_leak_report.txt
;
ReportFile =
; Sets the report destination to either a file, the debugger, or both. If
; reporting to file is enabled, the report is sent to the file specified by the
; ReportFile option.
;
; Valid Values: debugger, file, both
; Default: debugger
;
ReportTo = debugger
; Turns on or off a self-test mode which is used to verify that VLD is able to
; detect memory leaks in itself. Intended to be used for debugging VLD itself,
; not for debugging other programs.
;
; Valid Values: on, off
; Default: off
;
SelfTest = off
; Selects the method to be used for walking the stack to obtain stack traces for
; allocated memory blocks. The "fast" method may not always be able to
; successfully trace completely through all call stacks. In such cases, the
; "safe" method may prove to more reliably obtain the full stack trace. The
; disadvantage is that the "safe" method is significantly slower than the "fast"
; method and will probably result in very noticeable performance degradation of
; the program being debugged.
;
; Valid Values: fast, safe
; Default: fast
;
StackWalkMethod = fast
; Determines whether memory leak detection should be initially enabled for all
; threads, or whether it should be initially disabled for all threads. If set
; to "yes", then any threads requiring memory leak detection to be enabled will
; need to call VLDEnable at some point to enable leak detection for those
; threads.
;
; Valid Values: yes, no
; Default: no
;
StartDisabled = no
; Determines whether or not all frames, including frames internal to the heap,
; are traced. There will always be a number of frames internal to Visual Leak
; Detector and C/C++ or Win32 heap APIs that aren't generally useful for
; determining the cause of a leak. Normally these frames are skipped during the
; stack trace, which somewhat reduces the time spent tracing and amount of data
; collected and stored in memory. Including all frames in the stack trace, all
; the way down into VLD's own code can, however, be useful for debugging VLD
; itself.
;
; Valid Values: yes, no
; Default: no
;
TraceInternalFrames = no

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,166 +1,166 @@
#LyX 1.6.2svn created this file. For more info see http://www.lyx.org/
\lyxformat 345
\begin_document
\begin_header
\textclass article
\use_default_options false
\language czech
\inputencoding auto
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\paperfontsize default
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_amsmath 0
\use_esint 0
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\author ""
\author ""
\end_header
\begin_body
\begin_layout Title
Vítejte v LyXu !
\end_layout
\begin_layout Section*
Co byste měli vědět pro používání LyXu
\end_layout
\begin_layout Enumerate
LyX přichází s
\size largest
\noun off
\color none
\size default
\noun default
\color inherit
výbornou dokumentací—prosíme používejte ji! Český úvod můžete najít v menu
\family sans
Nápověda\SpecialChar \menuseparator
Průvodce
\begin_inset space ~
\end_inset
LyXem
\family default
.
\end_layout
\begin_layout Enumerate
LyX nazýváme
\begin_inset Quotes eld
\end_inset
editorem dokumentů.
\begin_inset Quotes erd
\end_inset
Svým návrhem je odlišný od klasického textového editoru—způsobem, který
činí psaní dokumentů mnohem jednodušší.
Ale nelekejte se, je odlišný jenom trochu.
Průvodce vám v tom udělá jasno.
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
Už jsme se zmínili o tom, že byste si mohli přečíst dokumnetaci?
\end_layout
\end_inset
\end_layout
\begin_layout Enumerate
Výstup z LyXu vypadá skvěle! Zkuste vybrat v menu
\family sans
Prohlížet\SpecialChar \menuseparator
DVI
\family default
, ať se přesvědčíte na vlastní oči.
\end_layout
\begin_layout Enumerate
LyX umí napodobit (téměř) veškerou funkcionalitu LaTeXu.
A ano, LyX umí importovat LaTeXové soubory.
Zkušení uživatelé LaTeXu mohou jen zbežně prolétnout začátek
\emph on
Průvodce
\emph default
, a pak si přečíst kapitolu
\begin_inset Quotes eld
\end_inset
LyX pro uživatele LaTeXu
\begin_inset Quotes erd
\end_inset
.
(Ostatní se nemusíte znepokojovat: nepotřebujete znát LaTeX pro používání
LyXu.)
\end_layout
\begin_layout Enumerate
LyX nabízí mnoho možností lidem, kteří čtou a píší jiným jazykem, nežli
je angličtina.
Navíc jsou klávesové zkratky, nástrojová lišta a i další vlasnosti dobře
konfigurovatelné.
Viz
\family sans
Nápověda\SpecialChar \menuseparator
Přizpůsobení
\family default
LyXu.
\end_layout
\begin_layout Enumerate
Domácí stránka LyXu je na
\family typewriter
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
http://www.lyx.org/
\end_layout
\end_inset
\family default
.
Můžete zde najít další informace, přihlásit se do konference, udělat si
grafickou výpravu do Lyxu (Graphical Tour) a najít spousty rad a triků
v rámci wiki.
\end_layout
\end_body
\end_document
#LyX 1.6.2svn created this file. For more info see http://www.lyx.org/
\lyxformat 345
\begin_document
\begin_header
\textclass article
\use_default_options false
\language czech
\inputencoding auto
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\paperfontsize default
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_amsmath 0
\use_esint 0
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\author ""
\author ""
\end_header
\begin_body
\begin_layout Title
Vítejte v LyXu !
\end_layout
\begin_layout Section*
Co byste měli vědět pro používání LyXu
\end_layout
\begin_layout Enumerate
LyX přichází s
\size largest
\noun off
\color none
\size default
\noun default
\color inherit
výbornou dokumentací—prosíme používejte ji! Český úvod můžete najít v menu
\family sans
Nápověda\SpecialChar \menuseparator
Průvodce
\begin_inset space ~
\end_inset
LyXem
\family default
.
\end_layout
\begin_layout Enumerate
LyX nazýváme
\begin_inset Quotes eld
\end_inset
editorem dokumentů.
\begin_inset Quotes erd
\end_inset
Svým návrhem je odlišný od klasického textového editoru—způsobem, který
činí psaní dokumentů mnohem jednodušší.
Ale nelekejte se, je odlišný jenom trochu.
Průvodce vám v tom udělá jasno.
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
Už jsme se zmínili o tom, že byste si mohli přečíst dokumnetaci?
\end_layout
\end_inset
\end_layout
\begin_layout Enumerate
Výstup z LyXu vypadá skvěle! Zkuste vybrat v menu
\family sans
Prohlížet\SpecialChar \menuseparator
DVI
\family default
, ať se přesvědčíte na vlastní oči.
\end_layout
\begin_layout Enumerate
LyX umí napodobit (téměř) veškerou funkcionalitu LaTeXu.
A ano, LyX umí importovat LaTeXové soubory.
Zkušení uživatelé LaTeXu mohou jen zbežně prolétnout začátek
\emph on
Průvodce
\emph default
, a pak si přečíst kapitolu
\begin_inset Quotes eld
\end_inset
LyX pro uživatele LaTeXu
\begin_inset Quotes erd
\end_inset
.
(Ostatní se nemusíte znepokojovat: nepotřebujete znát LaTeX pro používání
LyXu.)
\end_layout
\begin_layout Enumerate
LyX nabízí mnoho možností lidem, kteří čtou a píší jiným jazykem, nežli
je angličtina.
Navíc jsou klávesové zkratky, nástrojová lišta a i další vlasnosti dobře
konfigurovatelné.
Viz
\family sans
Nápověda\SpecialChar \menuseparator
Přizpůsobení
\family default
LyXu.
\end_layout
\begin_layout Enumerate
Domácí stránka LyXu je na
\family typewriter
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
http://www.lyx.org/
\end_layout
\end_inset
\family default
.
Můžete zde najít další informace, přihlásit se do konference, udělat si
grafickou výpravu do Lyxu (Graphical Tour) a najít spousty rad a triků
v rámci wiki.
\end_layout
\end_body
\end_document

View File

@ -1,379 +1,379 @@
#LyX 1.6.5svn created this file. For more info see http://www.lyx.org/
\lyxformat 345
\begin_document
\begin_header
\textclass article
\use_default_options false
\language galician
\inputencoding auto
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\paperfontsize 12
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_amsmath 0
\use_esint 0
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle plain
\tracking_changes false
\output_changes false
\author ""
\author ""
\end_header
\begin_body
\begin_layout Standard
ESTE É O TÍTULO DO DOCUMENTO
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Dica: O título deberia semellar-se mais a un título
\end_layout
\end_inset
\end_layout
\begin_layout Standard
por Pepe LyX
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Dica: Pepe é o AUTOR
\end_layout
\end_inset
\end_layout
\begin_layout Standard
12 de Xuño de 1972
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Dica: Esta é unha data
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Táboa de contidos
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Comentário: Agradeceria-se non ter que escreber a táboa de contidos explicitamen
te.
\end_layout
\end_inset
\end_layout
\begin_layout Standard
1.
Filosofia básica..................1
\end_layout
\begin_layout Standard
1.1 Como o traballa o LyX...............1
\end_layout
\begin_layout Standard
1.2 Por que o LyX é mellor...............1
\end_layout
\begin_layout Standard
2.
Características de LyX
\end_layout
\begin_layout Standard
3.
Tentativas eivadas de usar mais facilidades do LyX
\end_layout
\begin_layout Standard
4.
Cuestións matemáticas
\end_layout
\begin_layout Standard
---------------------------------------------------
\end_layout
\begin_layout Standard
1.
Filosofia básica
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Observación: Probabelmente os títulos das seccións deberian salientar máis.
\end_layout
\end_inset
\end_layout
\begin_layout Standard
A filosofia básica de LyX é conseguir que o usuário só se deba preocupar
do contido do documento e non do formato.
\end_layout
\begin_layout Standard
1.1 Como o traballa o LyX
\end_layout
\begin_layout Standard
LyX basea-se no LaTeX, un sistema de preparación de documentos deseñado
por Leslie Lamport en 1985.
Por sua vez o LaTeX elaborou-se sobre unha linguaxe tipográfica chamada
TeX, criada por Donald Knuth en 1984.
Por outra banda a filosofia do LaTeX é similar á de LyX.
Leslie Lamport dixo (ver referéncia [1])
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Observación: Probabelmente, esta referéncia non deberia estar escrita directamen
te.
Que acontecerá se inserimos outro iten na bibliografia antes do libro de
Lamport.
\end_layout
\end_inset
:
\end_layout
\begin_layout Standard
"A función do deseño tipográfico é axudar ao leitor a comprender as ideas
do autor.
Para un documento ser de fácil leitura, a sua estrutura visual debe reflectir
a sua estrutura lóxica.
As citas e os programas de computador, sendo elementos estruturalmente
diferentes, deberian distinguir-se visualmente un de outro [...] Como LaTeX
non pode entender directamente o sentido do seu texto, debe indicar-lle
a estrutura lóxica mediante comandos especiais [...] Entanto escrebe o documento,
deberia preocupar-se da sua estrutura lóxica, non da sua aparéncia."
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Dica: esta é unha cita
\end_layout
\end_inset
\end_layout
\begin_layout Standard
1.2 Por que o LyX é mellor
\end_layout
\begin_layout Standard
LyX pode ser útil a mais xente que LaTeX.
É considerabelmente mais doado de aprender, pois non é como LaTeX unha
linguaxe de programazón.
LyX é basicamente como outros procesadores de texto "WYSIWYG (o que vé
é o que obtén), agás que o LyX realmente é WYSIWYM (o que vé é o que pretende
facer).
De maneira que combina a facilidade de uso dos procesadores de texto coa
poténcia do LaTeX.
O cal é unha boa cousa.
Ademais, o formato de arquivo é independente do sistema operativo.
E o mellor de todo, é LIBRE!
\end_layout
\begin_layout Standard
2.
Características do LyX
\end_layout
\begin_layout Standard
LyX posui moitas características que facilitan a escrita de documentos.
(Senón, porque o ia querer usar?
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Dica: Esta frase entre parénteses ficaria mellor nunha nota de rodapé.
\end_layout
\end_inset
) E a min AGRADA-ME
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Dica: enfatizar
\end_layout
\end_inset
moito poder falar delas.
Eis unha pequena lista:
\end_layout
\begin_layout Standard
* O LyX encarrega-se sen intervención do usuário das marxes e a numeración
das notas de rodapé.
\end_layout
\begin_layout Standard
* LyX facilita a escrita e edición de fórmulas matemáticas.
\end_layout
\begin_layout Standard
Para unha discusión mais filosófica de por que LyX é mellor que a competéncia
vexa a sección 1.2, que se acha na páxina 1.
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Observación: Probabelmente esta REFERÉNCIA-CRUZADA non debia estar escrita
directamente, que pasará se mudarmos o número da sección?
\end_layout
\end_inset
\end_layout
\begin_layout Standard
3.
Tentivas eivadas de empregar máis facilidades do LyX
\end_layout
\begin_layout Standard
O outro dia escrebin un programa, algo asi como:
\end_layout
\begin_layout Standard
5 REMARK O MEU MAGNIFICO PROGRAMA
\end_layout
\begin_layout Standard
10 PRINT "SON INIGUALÁBEL!"
\end_layout
\begin_layout Standard
20 GOTO 10
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Dica: Isto é código fonte dun programa
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Após desta inxente lavoura informática, arrebatou-me unha vea poética e
escrebin este haiku:
\end_layout
\begin_layout Standard
LyX, veloz palilleira
\end_layout
\begin_layout Standard
teces as miñas palabras
\end_layout
\begin_layout Standard
nunha fermosa renda de letras.
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Dica: Se cadra non é moi boa poesia, mais non deixa de estar en VERSO
\end_layout
\end_inset
\end_layout
\begin_layout Standard
4.
Cuestións matemáticas
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Dica: Semella lóxico escreber fórmulas no modo matemático!
\end_layout
\end_inset
\end_layout
\begin_layout Standard
A miña ecuación favorita é a solución da ecuación de segundo grau.
Se ax^2+bx+c=0 (ec.1), entón x= -b + ou menos a raiz cadrada de b^2-4ac,
todo dividido por 2a (ec.
2).
\end_layout
\begin_layout Standard
Outra das miñas ecuacións favoritas é base do cálculo: f'(x) define-se como
o limite cando deltax tende a zero de f(x+deltax) - f(x) dividido por deltax
(ec.
3).
\end_layout
\begin_layout Standard
------------------------------------------------
\end_layout
\begin_layout Standard
REFERÉNCIAS
\end_layout
\begin_layout Standard
[1] Lamport, Leslie.
LaTeX: A Document Preparation System.
Addison-Wesley, Reading, Massachusetts, segunda edición, 1994.
\end_layout
\end_body
\end_document
#LyX 1.6.5svn created this file. For more info see http://www.lyx.org/
\lyxformat 345
\begin_document
\begin_header
\textclass article
\use_default_options false
\language galician
\inputencoding auto
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\paperfontsize 12
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_amsmath 0
\use_esint 0
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle plain
\tracking_changes false
\output_changes false
\author ""
\author ""
\end_header
\begin_body
\begin_layout Standard
ESTE É O TÍTULO DO DOCUMENTO
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Dica: O título deberia semellar-se mais a un título
\end_layout
\end_inset
\end_layout
\begin_layout Standard
por Pepe LyX
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Dica: Pepe é o AUTOR
\end_layout
\end_inset
\end_layout
\begin_layout Standard
12 de Xuño de 1972
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Dica: Esta é unha data
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Táboa de contidos
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Comentário: Agradeceria-se non ter que escreber a táboa de contidos explicitamen
te.
\end_layout
\end_inset
\end_layout
\begin_layout Standard
1.
Filosofia básica..................1
\end_layout
\begin_layout Standard
1.1 Como o traballa o LyX...............1
\end_layout
\begin_layout Standard
1.2 Por que o LyX é mellor...............1
\end_layout
\begin_layout Standard
2.
Características de LyX
\end_layout
\begin_layout Standard
3.
Tentativas eivadas de usar mais facilidades do LyX
\end_layout
\begin_layout Standard
4.
Cuestións matemáticas
\end_layout
\begin_layout Standard
---------------------------------------------------
\end_layout
\begin_layout Standard
1.
Filosofia básica
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Observación: Probabelmente os títulos das seccións deberian salientar máis.
\end_layout
\end_inset
\end_layout
\begin_layout Standard
A filosofia básica de LyX é conseguir que o usuário só se deba preocupar
do contido do documento e non do formato.
\end_layout
\begin_layout Standard
1.1 Como o traballa o LyX
\end_layout
\begin_layout Standard
LyX basea-se no LaTeX, un sistema de preparación de documentos deseñado
por Leslie Lamport en 1985.
Por sua vez o LaTeX elaborou-se sobre unha linguaxe tipográfica chamada
TeX, criada por Donald Knuth en 1984.
Por outra banda a filosofia do LaTeX é similar á de LyX.
Leslie Lamport dixo (ver referéncia [1])
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Observación: Probabelmente, esta referéncia non deberia estar escrita directamen
te.
Que acontecerá se inserimos outro iten na bibliografia antes do libro de
Lamport.
\end_layout
\end_inset
:
\end_layout
\begin_layout Standard
"A función do deseño tipográfico é axudar ao leitor a comprender as ideas
do autor.
Para un documento ser de fácil leitura, a sua estrutura visual debe reflectir
a sua estrutura lóxica.
As citas e os programas de computador, sendo elementos estruturalmente
diferentes, deberian distinguir-se visualmente un de outro [...] Como LaTeX
non pode entender directamente o sentido do seu texto, debe indicar-lle
a estrutura lóxica mediante comandos especiais [...] Entanto escrebe o documento,
deberia preocupar-se da sua estrutura lóxica, non da sua aparéncia."
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Dica: esta é unha cita
\end_layout
\end_inset
\end_layout
\begin_layout Standard
1.2 Por que o LyX é mellor
\end_layout
\begin_layout Standard
LyX pode ser útil a mais xente que LaTeX.
É considerabelmente mais doado de aprender, pois non é como LaTeX unha
linguaxe de programazón.
LyX é basicamente como outros procesadores de texto "WYSIWYG (o que vé
é o que obtén), agás que o LyX realmente é WYSIWYM (o que vé é o que pretende
facer).
De maneira que combina a facilidade de uso dos procesadores de texto coa
poténcia do LaTeX.
O cal é unha boa cousa.
Ademais, o formato de arquivo é independente do sistema operativo.
E o mellor de todo, é LIBRE!
\end_layout
\begin_layout Standard
2.
Características do LyX
\end_layout
\begin_layout Standard
LyX posui moitas características que facilitan a escrita de documentos.
(Senón, porque o ia querer usar?
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Dica: Esta frase entre parénteses ficaria mellor nunha nota de rodapé.
\end_layout
\end_inset
) E a min AGRADA-ME
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Dica: enfatizar
\end_layout
\end_inset
moito poder falar delas.
Eis unha pequena lista:
\end_layout
\begin_layout Standard
* O LyX encarrega-se sen intervención do usuário das marxes e a numeración
das notas de rodapé.
\end_layout
\begin_layout Standard
* LyX facilita a escrita e edición de fórmulas matemáticas.
\end_layout
\begin_layout Standard
Para unha discusión mais filosófica de por que LyX é mellor que a competéncia
vexa a sección 1.2, que se acha na páxina 1.
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Observación: Probabelmente esta REFERÉNCIA-CRUZADA non debia estar escrita
directamente, que pasará se mudarmos o número da sección?
\end_layout
\end_inset
\end_layout
\begin_layout Standard
3.
Tentivas eivadas de empregar máis facilidades do LyX
\end_layout
\begin_layout Standard
O outro dia escrebin un programa, algo asi como:
\end_layout
\begin_layout Standard
5 REMARK O MEU MAGNIFICO PROGRAMA
\end_layout
\begin_layout Standard
10 PRINT "SON INIGUALÁBEL!"
\end_layout
\begin_layout Standard
20 GOTO 10
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Dica: Isto é código fonte dun programa
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Após desta inxente lavoura informática, arrebatou-me unha vea poética e
escrebin este haiku:
\end_layout
\begin_layout Standard
LyX, veloz palilleira
\end_layout
\begin_layout Standard
teces as miñas palabras
\end_layout
\begin_layout Standard
nunha fermosa renda de letras.
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Dica: Se cadra non é moi boa poesia, mais non deixa de estar en VERSO
\end_layout
\end_inset
\end_layout
\begin_layout Standard
4.
Cuestións matemáticas
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Dica: Semella lóxico escreber fórmulas no modo matemático!
\end_layout
\end_inset
\end_layout
\begin_layout Standard
A miña ecuación favorita é a solución da ecuación de segundo grau.
Se ax^2+bx+c=0 (ec.1), entón x= -b + ou menos a raiz cadrada de b^2-4ac,
todo dividido por 2a (ec.
2).
\end_layout
\begin_layout Standard
Outra das miñas ecuacións favoritas é base do cálculo: f'(x) define-se como
o limite cando deltax tende a zero de f(x+deltax) - f(x) dividido por deltax
(ec.
3).
\end_layout
\begin_layout Standard
------------------------------------------------
\end_layout
\begin_layout Standard
REFERÉNCIAS
\end_layout
\begin_layout Standard
[1] Lamport, Leslie.
LaTeX: A Document Preparation System.
Addison-Wesley, Reading, Massachusetts, segunda edición, 1994.
\end_layout
\end_body
\end_document

View File

@ -1,314 +1,314 @@
#LyX 1.6.5svn created this file. For more info see http://www.lyx.org/
\lyxformat 345
\begin_document
\begin_header
\textclass article
\use_default_options false
\language galician
\inputencoding auto
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\paperfontsize 12
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_amsmath 0
\use_esint 0
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle plain
\tracking_changes false
\output_changes false
\author ""
\author ""
\end_header
\begin_body
\begin_layout Title
ESTE É O TÍTULO DO DOCUMENTO
\end_layout
\begin_layout Author
por Pepe LyX
\end_layout
\begin_layout Date
12 de Xuño de 1972
\end_layout
\begin_layout Standard
\begin_inset CommandInset toc
LatexCommand tableofcontents
\end_inset
\end_layout
\begin_layout Section
Filosofia básica
\end_layout
\begin_layout Standard
A filosofia básica de LyX é conseguir que o usuário só se deba preocupar
do contido do documento e non do formato.
\end_layout
\begin_layout Subsection
Como o traballa o LyX
\end_layout
\begin_layout Standard
LyX basea-se no LaTeX, un sistema de preparación de documentos deseñado
por Leslie Lamport en 1985.
Por sua vez o LaTeX elaborou-se sobre unha linguaxe tipográfica chamada
TeX, criada por Donald Knuth en 1984.
Por outra banda a filosofia do LaTeX é similar á de LyX.
Leslie Lamport dixo (ver referéncia
\begin_inset CommandInset citation
LatexCommand cite
key "Lamport"
\end_inset
) :
\end_layout
\begin_layout Quote
"A función do deseño tipográfico é axudar ao leitor a comprender as ideas
do autor.
Para un documento ser de fácil leitura, a sua estrutura visual debe reflectir
a sua estrutura lóxica.
As citas e os programas de computador, sendo elementos estruturalmente
diferentes, deberian distinguir-se visualmente un de outro [...] Como LaTeX
non pode entender directamente o sentido do seu texto, debe indicar-lle
a estrutura lóxica mediante comandos especiais [...] Entanto escrebe o documento,
deberia preocupar-se da sua estrutura lóxica, non da sua aparéncia."
\end_layout
\begin_layout Subsection
Por que o LyX é mellor
\end_layout
\begin_layout Standard
\begin_inset CommandInset label
LatexCommand label
name "sub:LyX-mellor"
\end_inset
LyX pode ser útil a mais xente que LaTeX.
É considerabelmente mais doado de aprender, pois non é como LaTeX unha
linguaxe de programazón.
LyX é basicamente como outros procesadores de texto "WYSIWYG (o que vé
é o que obtén), agás que o LyX realmente é WYSIWYM (o que vé é o que pretende
facer).
De maneira que combina a facilidade de uso dos procesadores de texto coa
poténcia do LaTeX.
O cal é unha boa cousa.
Ademais, o formato de arquivo é independente do sistema operativo.
E o mellor de todo, é LIBRE!
\end_layout
\begin_layout Section
Características do LyX
\end_layout
\begin_layout Standard
LyX posui moitas características que facilitan a escrita de documentos
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
Senón, porque o ia querer usar?
\end_layout
\end_inset
.
E a min
\emph on
agrada-me
\emph default
moito poder falar delas.
Eis unha pequena lista:
\end_layout
\begin_layout Itemize
O LyX encarrega-se sen intervención do usuário das marxes e a numeración
das notas de rodapé.
\end_layout
\begin_layout Itemize
LyX facilita a escrita e edición de fórmulas matemáticas.
\end_layout
\begin_layout Standard
Para unha discusión mais filosófica de por que LyX é mellor que a competéncia
vexa a sección
\begin_inset CommandInset ref
LatexCommand ref
reference "sub:LyX-mellor"
\end_inset
, que se acha na páxina
\begin_inset CommandInset ref
LatexCommand pageref
reference "sub:LyX-mellor"
\end_inset
.
\end_layout
\begin_layout Section
Tentivas eivadas de empregar máis facilidades do LyX
\end_layout
\begin_layout Standard
O outro dia escrebin un programa, algo asi como:
\end_layout
\begin_layout LyX-Code
5 REMARK O MEU MAGNIFICO PROGRAMA
\end_layout
\begin_layout LyX-Code
10 PRINT "SON INIGUALÁBEL!"
\end_layout
\begin_layout LyX-Code
20 GOTO 10
\end_layout
\begin_layout Standard
Após desta inxente lavoura informática, arrebatou-me unha vea poética e
escrebin este haiku:
\end_layout
\begin_layout Verse
LyX, veloz palilleira
\begin_inset Newline newline
\end_inset
teces as miñas palabras
\begin_inset Newline newline
\end_inset
nunha fermosa renda de letras.
\end_layout
\begin_layout Section
Cuestións matemáticas
\end_layout
\begin_layout Standard
A miña ecuación favorita é a solución da ecuación de segundo grau.
Se
\begin_inset Formula $a^{2}+bx+c=0$
\end_inset
(ec.
1), entón
\begin_inset Formula $x=\frac{-b\pm\sqrt{b^{2}-4ac}}{2a}$
\end_inset
(ec.
2).
\end_layout
\begin_layout Standard
Outra das miñas ecuacións favoritas é base do cálculo:
\begin_inset Formula $f'(x)\equiv\lim_{\Delta x\rightarrow0}\frac{f(x+\Delta x)-f(x)}{\Delta x}$
\end_inset
(ec.
3).
\end_layout
\begin_layout Section
Notes
\end_layout
\begin_layout Standard
Tres cousiñas sobre este ficheiro:
\end_layout
\begin_layout Itemize
Eliminei as liñas a trazos que separaban o título e a bibliografia do resto
do documento.
O LyX (LaTeX) xa separa tais partes do documento con os espazos axeitados.
\end_layout
\begin_layout Itemize
Non coloquei as fórmulas en liñas independentes, nen usei a numeración automátic
a que fornece o LyX, porque non se descreben no
\emph on
Tutorial
\emph default
.
\end_layout
\begin_layout Itemize
Non é necesário dixitar a palabra
\begin_inset Quotes eld
\end_inset
References
\begin_inset Quotes erd
\end_inset
que vai a seguir, xa que o LyX a escrebe automaticamente (ou ben a palabra
\begin_inset Quotes eld
\end_inset
Bibliography,
\begin_inset Quotes erd
\end_inset
segundo a clase de documento) ao seleccionar o ambiente
\family sans
Bibliografia
\family default
.
\end_layout
\begin_layout Bibliography
\begin_inset CommandInset bibitem
LatexCommand bibitem
key "Lamport"
\end_inset
Lamport, Leslie.
\emph on
LaTeX: A Document Preparation System.
\emph default
Addison-Wesley, Reading, Massachusetts, second edition, 1994.
\end_layout
\end_body
\end_document
#LyX 1.6.5svn created this file. For more info see http://www.lyx.org/
\lyxformat 345
\begin_document
\begin_header
\textclass article
\use_default_options false
\language galician
\inputencoding auto
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\paperfontsize 12
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_amsmath 0
\use_esint 0
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle plain
\tracking_changes false
\output_changes false
\author ""
\author ""
\end_header
\begin_body
\begin_layout Title
ESTE É O TÍTULO DO DOCUMENTO
\end_layout
\begin_layout Author
por Pepe LyX
\end_layout
\begin_layout Date
12 de Xuño de 1972
\end_layout
\begin_layout Standard
\begin_inset CommandInset toc
LatexCommand tableofcontents
\end_inset
\end_layout
\begin_layout Section
Filosofia básica
\end_layout
\begin_layout Standard
A filosofia básica de LyX é conseguir que o usuário só se deba preocupar
do contido do documento e non do formato.
\end_layout
\begin_layout Subsection
Como o traballa o LyX
\end_layout
\begin_layout Standard
LyX basea-se no LaTeX, un sistema de preparación de documentos deseñado
por Leslie Lamport en 1985.
Por sua vez o LaTeX elaborou-se sobre unha linguaxe tipográfica chamada
TeX, criada por Donald Knuth en 1984.
Por outra banda a filosofia do LaTeX é similar á de LyX.
Leslie Lamport dixo (ver referéncia
\begin_inset CommandInset citation
LatexCommand cite
key "Lamport"
\end_inset
) :
\end_layout
\begin_layout Quote
"A función do deseño tipográfico é axudar ao leitor a comprender as ideas
do autor.
Para un documento ser de fácil leitura, a sua estrutura visual debe reflectir
a sua estrutura lóxica.
As citas e os programas de computador, sendo elementos estruturalmente
diferentes, deberian distinguir-se visualmente un de outro [...] Como LaTeX
non pode entender directamente o sentido do seu texto, debe indicar-lle
a estrutura lóxica mediante comandos especiais [...] Entanto escrebe o documento,
deberia preocupar-se da sua estrutura lóxica, non da sua aparéncia."
\end_layout
\begin_layout Subsection
Por que o LyX é mellor
\end_layout
\begin_layout Standard
\begin_inset CommandInset label
LatexCommand label
name "sub:LyX-mellor"
\end_inset
LyX pode ser útil a mais xente que LaTeX.
É considerabelmente mais doado de aprender, pois non é como LaTeX unha
linguaxe de programazón.
LyX é basicamente como outros procesadores de texto "WYSIWYG (o que vé
é o que obtén), agás que o LyX realmente é WYSIWYM (o que vé é o que pretende
facer).
De maneira que combina a facilidade de uso dos procesadores de texto coa
poténcia do LaTeX.
O cal é unha boa cousa.
Ademais, o formato de arquivo é independente do sistema operativo.
E o mellor de todo, é LIBRE!
\end_layout
\begin_layout Section
Características do LyX
\end_layout
\begin_layout Standard
LyX posui moitas características que facilitan a escrita de documentos
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
Senón, porque o ia querer usar?
\end_layout
\end_inset
.
E a min
\emph on
agrada-me
\emph default
moito poder falar delas.
Eis unha pequena lista:
\end_layout
\begin_layout Itemize
O LyX encarrega-se sen intervención do usuário das marxes e a numeración
das notas de rodapé.
\end_layout
\begin_layout Itemize
LyX facilita a escrita e edición de fórmulas matemáticas.
\end_layout
\begin_layout Standard
Para unha discusión mais filosófica de por que LyX é mellor que a competéncia
vexa a sección
\begin_inset CommandInset ref
LatexCommand ref
reference "sub:LyX-mellor"
\end_inset
, que se acha na páxina
\begin_inset CommandInset ref
LatexCommand pageref
reference "sub:LyX-mellor"
\end_inset
.
\end_layout
\begin_layout Section
Tentivas eivadas de empregar máis facilidades do LyX
\end_layout
\begin_layout Standard
O outro dia escrebin un programa, algo asi como:
\end_layout
\begin_layout LyX-Code
5 REMARK O MEU MAGNIFICO PROGRAMA
\end_layout
\begin_layout LyX-Code
10 PRINT "SON INIGUALÁBEL!"
\end_layout
\begin_layout LyX-Code
20 GOTO 10
\end_layout
\begin_layout Standard
Após desta inxente lavoura informática, arrebatou-me unha vea poética e
escrebin este haiku:
\end_layout
\begin_layout Verse
LyX, veloz palilleira
\begin_inset Newline newline
\end_inset
teces as miñas palabras
\begin_inset Newline newline
\end_inset
nunha fermosa renda de letras.
\end_layout
\begin_layout Section
Cuestións matemáticas
\end_layout
\begin_layout Standard
A miña ecuación favorita é a solución da ecuación de segundo grau.
Se
\begin_inset Formula $a^{2}+bx+c=0$
\end_inset
(ec.
1), entón
\begin_inset Formula $x=\frac{-b\pm\sqrt{b^{2}-4ac}}{2a}$
\end_inset
(ec.
2).
\end_layout
\begin_layout Standard
Outra das miñas ecuacións favoritas é base do cálculo:
\begin_inset Formula $f'(x)\equiv\lim_{\Delta x\rightarrow0}\frac{f(x+\Delta x)-f(x)}{\Delta x}$
\end_inset
(ec.
3).
\end_layout
\begin_layout Section
Notes
\end_layout
\begin_layout Standard
Tres cousiñas sobre este ficheiro:
\end_layout
\begin_layout Itemize
Eliminei as liñas a trazos que separaban o título e a bibliografia do resto
do documento.
O LyX (LaTeX) xa separa tais partes do documento con os espazos axeitados.
\end_layout
\begin_layout Itemize
Non coloquei as fórmulas en liñas independentes, nen usei a numeración automátic
a que fornece o LyX, porque non se descreben no
\emph on
Tutorial
\emph default
.
\end_layout
\begin_layout Itemize
Non é necesário dixitar a palabra
\begin_inset Quotes eld
\end_inset
References
\begin_inset Quotes erd
\end_inset
que vai a seguir, xa que o LyX a escrebe automaticamente (ou ben a palabra
\begin_inset Quotes eld
\end_inset
Bibliography,
\begin_inset Quotes erd
\end_inset
segundo a clase de documento) ao seleccionar o ambiente
\family sans
Bibliografia
\family default
.
\end_layout
\begin_layout Bibliography
\begin_inset CommandInset bibitem
LatexCommand bibitem
key "Lamport"
\end_inset
Lamport, Leslie.
\emph on
LaTeX: A Document Preparation System.
\emph default
Addison-Wesley, Reading, Massachusetts, second edition, 1994.
\end_layout
\end_body
\end_document

View File

@ -1,165 +1,165 @@
#LyX 1.6.2svn created this file. For more info see http://www.lyx.org/
\lyxformat 345
\begin_document
\begin_header
\textclass article
\use_default_options false
\language galician
\inputencoding default
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\paperfontsize default
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_amsmath 0
\use_esint 0
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\author ""
\author ""
\end_header
\begin_body
\begin_layout Title
Ben-vido ao LyX!
\end_layout
\begin_layout Section*
O primeiro que debe saber para empregar o LyX
\end_layout
\begin_layout Enumerate
LyX ven con unha excelente documentación —use-a, por favor! Comece con
\family sans
Axuda\SpecialChar \menuseparator
Introdución
\family default
, onde se apresenta a filosofia que guia o LyX, e a sua documentación.
A seguir é o momento de ler o tutorial,
\family sans
Axuda\SpecialChar \menuseparator
Tutorial
\family default
, para aprender as cuestións mais básicas.
\end_layout
\begin_layout Enumerate
LyX é o que nos chamamos un
\begin_inset Quotes eld
\end_inset
procesador de documentos
\begin_inset Quotes erd
\end_inset
.
Non está moi lonxe dos procesadores de texto comuns, mais parte dunha filosofia
diferente, facilitando a escrita de documentos, sobre todo os complexos.
A documentación permitira-lle ver as diferéncias, e a forma de sacar proveito
das características únicas do LyX.
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
Mencionamos xa que debe ler a documentación?
\end_layout
\end_inset
\end_layout
\begin_layout Enumerate
O resultado ao imprimir os documentos no LyX é excelente! Seleccione
\family sans
Arquivo\SpecialChar \menuseparator
Ver
\begin_inset space ~
\end_inset
Postcript
\family default
para comproba-lo por si mesmo.
\end_layout
\begin_layout Enumerate
Si, LyX pode reproducir (case todas) as funcionalidades do LaTeX.
E si, LyX pode importar arquivos do LaTeX.
Os usuários experientes do LaTeX deben ler o capítulo
\begin_inset Quotes eld
\end_inset
LyX para usuários de LaTeX
\begin_inset Quotes erd
\end_inset
do
\emph on
Tutorial,
\emph default
e ler por riba o resto do documento.
(O resto dos mortais non teñen por que se preocupar, non é preciso coñecer
LaTeX para usar o LyX.)
\end_layout
\begin_layout Enumerate
LyX incorpora diversos recursos para os que non escrebemos en inglés.
As teclas de atallo, barra de ferramentas, e moitas outras características
son altamente configurábeis (a maioria editando o seu arquivo
\family typewriter
lyxrc
\family default
).
Vexa
\family sans
Axuda\SpecialChar \menuseparator
Personalización
\family default
para máis detalles.
\end_layout
\begin_layout Enumerate
A páxina na internet do LyX é
\family typewriter
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
http://www.lyx.org/
\end_layout
\end_inset
\family default
.
Nela pode obter mais información sobre o programa, inscreber-se na(s) lista(s)
de discusión, ver a Turnê Gráfica etc.
\end_layout
\end_body
\end_document
#LyX 1.6.2svn created this file. For more info see http://www.lyx.org/
\lyxformat 345
\begin_document
\begin_header
\textclass article
\use_default_options false
\language galician
\inputencoding default
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\paperfontsize default
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_amsmath 0
\use_esint 0
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\author ""
\author ""
\end_header
\begin_body
\begin_layout Title
Ben-vido ao LyX!
\end_layout
\begin_layout Section*
O primeiro que debe saber para empregar o LyX
\end_layout
\begin_layout Enumerate
LyX ven con unha excelente documentación —use-a, por favor! Comece con
\family sans
Axuda\SpecialChar \menuseparator
Introdución
\family default
, onde se apresenta a filosofia que guia o LyX, e a sua documentación.
A seguir é o momento de ler o tutorial,
\family sans
Axuda\SpecialChar \menuseparator
Tutorial
\family default
, para aprender as cuestións mais básicas.
\end_layout
\begin_layout Enumerate
LyX é o que nos chamamos un
\begin_inset Quotes eld
\end_inset
procesador de documentos
\begin_inset Quotes erd
\end_inset
.
Non está moi lonxe dos procesadores de texto comuns, mais parte dunha filosofia
diferente, facilitando a escrita de documentos, sobre todo os complexos.
A documentación permitira-lle ver as diferéncias, e a forma de sacar proveito
das características únicas do LyX.
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
Mencionamos xa que debe ler a documentación?
\end_layout
\end_inset
\end_layout
\begin_layout Enumerate
O resultado ao imprimir os documentos no LyX é excelente! Seleccione
\family sans
Arquivo\SpecialChar \menuseparator
Ver
\begin_inset space ~
\end_inset
Postcript
\family default
para comproba-lo por si mesmo.
\end_layout
\begin_layout Enumerate
Si, LyX pode reproducir (case todas) as funcionalidades do LaTeX.
E si, LyX pode importar arquivos do LaTeX.
Os usuários experientes do LaTeX deben ler o capítulo
\begin_inset Quotes eld
\end_inset
LyX para usuários de LaTeX
\begin_inset Quotes erd
\end_inset
do
\emph on
Tutorial,
\emph default
e ler por riba o resto do documento.
(O resto dos mortais non teñen por que se preocupar, non é preciso coñecer
LaTeX para usar o LyX.)
\end_layout
\begin_layout Enumerate
LyX incorpora diversos recursos para os que non escrebemos en inglés.
As teclas de atallo, barra de ferramentas, e moitas outras características
son altamente configurábeis (a maioria editando o seu arquivo
\family typewriter
lyxrc
\family default
).
Vexa
\family sans
Axuda\SpecialChar \menuseparator
Personalización
\family default
para máis detalles.
\end_layout
\begin_layout Enumerate
A páxina na internet do LyX é
\family typewriter
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
http://www.lyx.org/
\end_layout
\end_inset
\family default
.
Nela pode obter mais información sobre o programa, inscreber-se na(s) lista(s)
de discusión, ver a Turnê Gráfica etc.
\end_layout
\end_body
\end_document

View File

@ -1,345 +1,345 @@
#LyX 1.6.5svn created this file. For more info see http://www.lyx.org/
\lyxformat 345
\begin_document
\begin_header
\textclass article
\begin_preamble
%\def\magyarOptions{defaults=over-1.4,footnote=huplain}
\usepackage{indentfirst}
\frenchspacing
\end_preamble
\use_default_options false
\language magyar
\inputencoding auto
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\paperfontsize 12
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_amsmath 1
\use_esint 0
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language polish
\papercolumns 1
\papersides 1
\paperpagestyle plain
\tracking_changes false
\output_changes false
\author ""
\author ""
\end_header
\begin_body
\begin_layout Title
Ez a dokumentum címe
\end_layout
\begin_layout Author
készítette egy LyX-es
\end_layout
\begin_layout Date
1972.
június 12
\end_layout
\begin_layout Standard
\begin_inset CommandInset toc
LatexCommand tableofcontents
\end_inset
\end_layout
\begin_layout Section
Alap filozófia
\end_layout
\begin_layout Standard
A LyX alapfilozófiája az, hogy csak arra kell koncentrálnia amit le akarni
írni, nem arra hogyan fog kinézni.
\end_layout
\begin_layout Subsection
Hogyan valósítja meg ezt a LyX
\end_layout
\begin_layout Standard
A LyX a LaTeX-et használja, ami egy dokumentum elkészítő rendszer, amit
1985-ben készített Leslie Lamport.
Ezt egy TeX nevű írásszedő rendszerre építette, amit Donald Knuth készített
1984-ben.
A LaTeX-et, a LyX-hez hasonló filozófia miatt készítették.
Leslie Lamport egyszer azt mondta (lásd a hivatkozásban
\begin_inset CommandInset citation
LatexCommand cite
key "lamport"
\end_inset
):
\end_layout
\begin_layout Quote
A tipográfiai tervezés célja az, hogy segítsen az olvasónak megérteni a
szerző mondanivalóját.
Ahhoz, hogy egy művet könnyen el lehessen olvasni, a vizuális szerkezetének
követnie kell a logikai felépítését.
Az idézetek és számítógépprogramok teljesen különálló logikai elemek, ezért
meg kell tudni őket egymásól különböztetni\SpecialChar \ldots{}
Mivel a LyX nem érti az írott
szöveget, ezért világosan meg kell adnia a logikai struktúrát bizonyos
parancsok használatával\SpecialChar \ldots{}
Miközben művét készíti, a logikai felépítésével
kell törődnie, nem a megjelenésével.
\end_layout
\begin_layout Subsection
Miért jobb a LyX
\end_layout
\begin_layout Standard
\begin_inset CommandInset label
LatexCommand label
name "sec:lyxbetter"
\end_inset
A LyX sokkal több embernek lehet hasznos, mint a LaTeX.
Meglehetősen könnyebb megtanulni, mivel nem kell megtanulni a LaTeX-et
(ami gyakorlatilag egy programozási nyelv).
A LyX alapvetően egy másik
\begin_inset Quotes pld
\end_inset
azt kapod amit látsz
\begin_inset Quotes prd
\end_inset
szövegszerkesztő, bár inkább
\begin_inset Quotes pld
\end_inset
amit lát arra gondol
\begin_inset Quotes prd
\end_inset
típusú.
Ezáltal a word típusú szövegszerkesztők könnyű használatát kombinálja,
a LaTeX hatékonyságával.
Ez egy jó dolog.
A fájl formátuma platform független.
De legfőképpen, ingyenes!
\end_layout
\begin_layout Section
A LyX jellemzői
\end_layout
\begin_layout Standard
A LyX rengeteg olyan jellemzővel rendelkezik, amelyek megkönnyítik az írást.
\begin_inset Foot
status open
\begin_layout Plain Layout
\begin_inset space ~
\end_inset
Ezek után, miért ne akarná használni?
\end_layout
\end_inset
\shape italic
Nagyon igazgatott
\shape default
vagyok, hogy beszélhessek róluk.
Íme közülük néhány.
\end_layout
\begin_layout Itemize
A LyX gondoskodik a margókról és a lábjegyzetek számozásáról
\end_layout
\begin_layout Itemize
A LyX-el könnyen készíthet és szerkeszthet képleteket
\end_layout
\begin_layout Standard
A filozófiai értekezést, hogy miért jobb a LyX a többi szövegszerkesztőnél,
megtalálja a
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:lyxbetter"
\end_inset
.
szakaszban, amit a
\begin_inset CommandInset ref
LatexCommand pageref
reference "sec:lyxbetter"
\end_inset
.
oldalon talál.
\end_layout
\begin_layout Section
Gyenge próbálkozások más LyX-es cuccok használatához
\end_layout
\begin_layout Standard
Egy nap írtam egy programot.
Így nézett ki.
\end_layout
\begin_layout LyX-Code
5 REMARK A FELEMETES PROGRAMOM
\end_layout
\begin_layout LyX-Code
10 PRINT
\begin_inset Quotes eld
\end_inset
FELEMETES VAGYOK!
\begin_inset Quotes erd
\end_inset
\end_layout
\begin_layout LyX-Code
20 GOTO 10
\end_layout
\begin_layout Standard
A tudományos gondolkodás után, teljesen művészien éreztem magam, és írtam
egy haiku-t
\end_layout
\begin_layout Verse
A LyX egy nagyon szuper
\begin_inset Newline newline
\end_inset
Szövegszedő szövegszerkesztő
\begin_inset Newline newline
\end_inset
Sok időt takarít meg
\end_layout
\begin_layout Section
Képletes dolgok
\end_layout
\begin_layout Standard
A kedvenc egyenletem a másodfokú egyenlet megoldóképlete.
Ha
\begin_inset Formula $ax^{2}+bx+c=0$
\end_inset
(1.
képlet), akkor
\begin_inset Formula $x=\frac{-b\pm\sqrt{b^{2}-4ac}}{2a}$
\end_inset
(2.
képlet).
\end_layout
\begin_layout Standard
A másik kedvenc képletem egy elemi kalkulus:
\begin_inset Formula $f'(x)\equiv\lim_{\Delta x\rightarrow0}\frac{f(x+\Delta x)-f(x)}{\Delta x}$
\end_inset
(3.
képlet).
\end_layout
\begin_layout Section
Megjegyzések
\end_layout
\begin_layout Standard
Pár megjegyzés a fájl lyx-esítéséről:
\end_layout
\begin_layout Itemize
Ki tudtam szedni a kötőjeles sorokat.
Amelyek egyszerűen elválasztották a címet és a hivatkozást a dokumentum
többi részétől.
A LyX (LaTeX) elég sokat tud arról, hogyan kell ezt az elkülönítést elvégezni.
\end_layout
\begin_layout Itemize
Nem zavartam be a képlet megjelenítési módjával.
Valamint nem használtam az automatikus képlet számozást sem, mivel az nincs
leírva a
\emph on
Tankönyvben
\emph default
.
\end_layout
\begin_layout Itemize
Nem kellett begépelnem a
\begin_inset Quotes pld
\end_inset
Hivatkozások
\begin_inset Quotes prd
\end_inset
szót lentebb.
A LyX magától odaírta nekem (vagy az
\begin_inset Quotes pld
\end_inset
Irodalomjegyzék
\begin_inset Quotes prd
\end_inset
szót, függően a szövegosztálytól)
\end_layout
\begin_layout Bibliography
\begin_inset CommandInset bibitem
LatexCommand bibitem
key "lamport"
\end_inset
Lamport, Leslie.
\emph on
LaTeX: A Document Preparation System.
\emph default
Addison-Wesley, Reading, Massachusetts, második kiadás, 1994.
\end_layout
\end_body
\end_document
#LyX 1.6.5svn created this file. For more info see http://www.lyx.org/
\lyxformat 345
\begin_document
\begin_header
\textclass article
\begin_preamble
%\def\magyarOptions{defaults=over-1.4,footnote=huplain}
\usepackage{indentfirst}
\frenchspacing
\end_preamble
\use_default_options false
\language magyar
\inputencoding auto
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\paperfontsize 12
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_amsmath 1
\use_esint 0
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language polish
\papercolumns 1
\papersides 1
\paperpagestyle plain
\tracking_changes false
\output_changes false
\author ""
\author ""
\end_header
\begin_body
\begin_layout Title
Ez a dokumentum címe
\end_layout
\begin_layout Author
készítette egy LyX-es
\end_layout
\begin_layout Date
1972.
június 12
\end_layout
\begin_layout Standard
\begin_inset CommandInset toc
LatexCommand tableofcontents
\end_inset
\end_layout
\begin_layout Section
Alap filozófia
\end_layout
\begin_layout Standard
A LyX alapfilozófiája az, hogy csak arra kell koncentrálnia amit le akarni
írni, nem arra hogyan fog kinézni.
\end_layout
\begin_layout Subsection
Hogyan valósítja meg ezt a LyX
\end_layout
\begin_layout Standard
A LyX a LaTeX-et használja, ami egy dokumentum elkészítő rendszer, amit
1985-ben készített Leslie Lamport.
Ezt egy TeX nevű írásszedő rendszerre építette, amit Donald Knuth készített
1984-ben.
A LaTeX-et, a LyX-hez hasonló filozófia miatt készítették.
Leslie Lamport egyszer azt mondta (lásd a hivatkozásban
\begin_inset CommandInset citation
LatexCommand cite
key "lamport"
\end_inset
):
\end_layout
\begin_layout Quote
A tipográfiai tervezés célja az, hogy segítsen az olvasónak megérteni a
szerző mondanivalóját.
Ahhoz, hogy egy művet könnyen el lehessen olvasni, a vizuális szerkezetének
követnie kell a logikai felépítését.
Az idézetek és számítógépprogramok teljesen különálló logikai elemek, ezért
meg kell tudni őket egymásól különböztetni\SpecialChar \ldots{}
Mivel a LyX nem érti az írott
szöveget, ezért világosan meg kell adnia a logikai struktúrát bizonyos
parancsok használatával\SpecialChar \ldots{}
Miközben művét készíti, a logikai felépítésével
kell törődnie, nem a megjelenésével.
\end_layout
\begin_layout Subsection
Miért jobb a LyX
\end_layout
\begin_layout Standard
\begin_inset CommandInset label
LatexCommand label
name "sec:lyxbetter"
\end_inset
A LyX sokkal több embernek lehet hasznos, mint a LaTeX.
Meglehetősen könnyebb megtanulni, mivel nem kell megtanulni a LaTeX-et
(ami gyakorlatilag egy programozási nyelv).
A LyX alapvetően egy másik
\begin_inset Quotes pld
\end_inset
azt kapod amit látsz
\begin_inset Quotes prd
\end_inset
szövegszerkesztő, bár inkább
\begin_inset Quotes pld
\end_inset
amit lát arra gondol
\begin_inset Quotes prd
\end_inset
típusú.
Ezáltal a word típusú szövegszerkesztők könnyű használatát kombinálja,
a LaTeX hatékonyságával.
Ez egy jó dolog.
A fájl formátuma platform független.
De legfőképpen, ingyenes!
\end_layout
\begin_layout Section
A LyX jellemzői
\end_layout
\begin_layout Standard
A LyX rengeteg olyan jellemzővel rendelkezik, amelyek megkönnyítik az írást.
\begin_inset Foot
status open
\begin_layout Plain Layout
\begin_inset space ~
\end_inset
Ezek után, miért ne akarná használni?
\end_layout
\end_inset
\shape italic
Nagyon igazgatott
\shape default
vagyok, hogy beszélhessek róluk.
Íme közülük néhány.
\end_layout
\begin_layout Itemize
A LyX gondoskodik a margókról és a lábjegyzetek számozásáról
\end_layout
\begin_layout Itemize
A LyX-el könnyen készíthet és szerkeszthet képleteket
\end_layout
\begin_layout Standard
A filozófiai értekezést, hogy miért jobb a LyX a többi szövegszerkesztőnél,
megtalálja a
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:lyxbetter"
\end_inset
.
szakaszban, amit a
\begin_inset CommandInset ref
LatexCommand pageref
reference "sec:lyxbetter"
\end_inset
.
oldalon talál.
\end_layout
\begin_layout Section
Gyenge próbálkozások más LyX-es cuccok használatához
\end_layout
\begin_layout Standard
Egy nap írtam egy programot.
Így nézett ki.
\end_layout
\begin_layout LyX-Code
5 REMARK A FELEMETES PROGRAMOM
\end_layout
\begin_layout LyX-Code
10 PRINT
\begin_inset Quotes eld
\end_inset
FELEMETES VAGYOK!
\begin_inset Quotes erd
\end_inset
\end_layout
\begin_layout LyX-Code
20 GOTO 10
\end_layout
\begin_layout Standard
A tudományos gondolkodás után, teljesen művészien éreztem magam, és írtam
egy haiku-t
\end_layout
\begin_layout Verse
A LyX egy nagyon szuper
\begin_inset Newline newline
\end_inset
Szövegszedő szövegszerkesztő
\begin_inset Newline newline
\end_inset
Sok időt takarít meg
\end_layout
\begin_layout Section
Képletes dolgok
\end_layout
\begin_layout Standard
A kedvenc egyenletem a másodfokú egyenlet megoldóképlete.
Ha
\begin_inset Formula $ax^{2}+bx+c=0$
\end_inset
(1.
képlet), akkor
\begin_inset Formula $x=\frac{-b\pm\sqrt{b^{2}-4ac}}{2a}$
\end_inset
(2.
képlet).
\end_layout
\begin_layout Standard
A másik kedvenc képletem egy elemi kalkulus:
\begin_inset Formula $f'(x)\equiv\lim_{\Delta x\rightarrow0}\frac{f(x+\Delta x)-f(x)}{\Delta x}$
\end_inset
(3.
képlet).
\end_layout
\begin_layout Section
Megjegyzések
\end_layout
\begin_layout Standard
Pár megjegyzés a fájl lyx-esítéséről:
\end_layout
\begin_layout Itemize
Ki tudtam szedni a kötőjeles sorokat.
Amelyek egyszerűen elválasztották a címet és a hivatkozást a dokumentum
többi részétől.
A LyX (LaTeX) elég sokat tud arról, hogyan kell ezt az elkülönítést elvégezni.
\end_layout
\begin_layout Itemize
Nem zavartam be a képlet megjelenítési módjával.
Valamint nem használtam az automatikus képlet számozást sem, mivel az nincs
leírva a
\emph on
Tankönyvben
\emph default
.
\end_layout
\begin_layout Itemize
Nem kellett begépelnem a
\begin_inset Quotes pld
\end_inset
Hivatkozások
\begin_inset Quotes prd
\end_inset
szót lentebb.
A LyX magától odaírta nekem (vagy az
\begin_inset Quotes pld
\end_inset
Irodalomjegyzék
\begin_inset Quotes prd
\end_inset
szót, függően a szövegosztálytól)
\end_layout
\begin_layout Bibliography
\begin_inset CommandInset bibitem
LatexCommand bibitem
key "lamport"
\end_inset
Lamport, Leslie.
\emph on
LaTeX: A Document Preparation System.
\emph default
Addison-Wesley, Reading, Massachusetts, második kiadás, 1994.
\end_layout
\end_body
\end_document

View File

@ -1,424 +1,424 @@
#LyX 1.6.5svn created this file. For more info see http://www.lyx.org/
\lyxformat 345
\begin_document
\begin_header
\textclass article
\begin_preamble
%\def\magyarOptions{defaults=over-1.4,footnote=huplain}
\usepackage{indentfirst}
\frenchspacing
\end_preamble
\use_default_options false
\language magyar
\inputencoding auto
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\paperfontsize 12
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_amsmath 1
\use_esint 0
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language polish
\papercolumns 1
\papersides 1
\paperpagestyle plain
\tracking_changes false
\output_changes false
\author ""
\author ""
\end_header
\begin_body
\begin_layout Standard
EZ A DOKUMENTUM CÍME
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: a címnek jobban CÍMNEK kell látszania
\end_layout
\end_inset
\end_layout
\begin_layout Standard
készítette egy LyX-es
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: ide kerül a SZERZŐ
\end_layout
\end_inset
\end_layout
\begin_layout Standard
1972.
június 12
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: ez lesz a DÁTUM
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Tartalomjegyzék
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: jó lenne nem kellene külön begépelni a tartalomjegyzéket
\end_layout
\end_inset
\end_layout
\begin_layout Standard
1.
Alap filozófia..................1
\end_layout
\begin_layout Standard
1.1 Hogyan valósítja meg ezt a LyX...............1
\end_layout
\begin_layout Standard
1.2 Miért jobb a LyX ...............1
\end_layout
\begin_layout Standard
2.
A LyX jellemzői
\end_layout
\begin_layout Standard
3.
Gyenge próbálkozások más LyX-es cuccok használatához
\end_layout
\begin_layout Standard
4.
Képletes dolgok
\end_layout
\begin_layout Standard
---------------------------------------------------
\end_layout
\begin_layout Standard
1.
Alap filozófia
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: a szakaszcímnek jobban ki kellene tűnnie
\end_layout
\end_inset
\end_layout
\begin_layout Standard
A LyX alapfilozófiája az, hogy csak arra kell koncentrálnia amit le akarni
írni, nem arra hogyan fog kinézni.
\end_layout
\begin_layout Standard
1.1 Hogyan valósítja meg ezt a LyX
\end_layout
\begin_layout Standard
A LyX a LaTeX-et használja, ami egy dokumentum elkészítő rendszer, amit
1985-ben készített Leslie Lamport.
Ezt egy TeX nevű írásszedő rendszerre építette, amit Donald Knuth készített
1984-ben.
A LaTeX-et, a LyX-hez hasonló filozófia miatt készítették.
Leslie Lamport egyszer azt mondta (lásd a [2] hivatkozásban):
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: valószínűleg ennek az IDÉZET HIVATKOZÁSNAK nem kellene be betonozva
lennie.
Mi lenne, ha Lamport könyve a második elem lenne az irodalomjegyzéknek?
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Quotes pld
\end_inset
A tipográfiai tervezés célja az, hogy segítsen az olvasónak megérteni a
szerző mondanivalóját.
Ahhoz, hogy egy művet könnyen el lehessen olvasni, a vizuális szerkezetének
követnie kell a logikai felépítését.
Az idézetek és számítógépprogramok teljesen különálló logikai elemek, ezért
meg kell tudni őket egymásól különböztetni...
Mivel a LyX nem érti az írott szöveget, ezért világosan meg kell adnia
a logikai struktúrát bizonyos parancsok használatával\SpecialChar \ldots{}
Miközben művét készíti,
a logikai felépítésével kell törődnie, nem a megjelenésével.
\begin_inset Quotes prd
\end_inset
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: ez egy IDÉZET
\end_layout
\end_inset
\end_layout
\begin_layout Standard
1.2 Miért jobb a LyX
\end_layout
\begin_layout Standard
A LyX sokkal több embernek lehet hasznos, mint a LaTeX.
Meglehetősen könnyebb megtanulni, mivel nem kell megtanulni a LaTeX-et
(ami gyakorlatilag egy programozási nyelv).
A LyX alapvetően egy másik
\begin_inset Quotes pld
\end_inset
azt kapod amit látsz
\begin_inset Quotes prd
\end_inset
szövegszerkesztő, bár inkább
\begin_inset Quotes pld
\end_inset
amit lát arra gondol
\begin_inset Quotes prd
\end_inset
típusú.
Ezáltal a word típusú szövegszerkesztők könnyű használatát kombinálja,
a LaTeX hatékonyságával.
Ez egy jó dolog.
A fájl formátuma platform független.
De legfőképpen, ingyenes!
\end_layout
\begin_layout Standard
2.
A LyX jellemzői
\end_layout
\begin_layout Standard
A LyX rengeteg olyan jellemzővel rendelkezik, amelyek megkönnyítik az írást.
(Ezek után, miért ne akarná használni?
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: a zárójelben lévő sokkal jobban mutatna a LÁBJEGYZETben
\end_layout
\end_inset
).
\shape italic
\emph on
NAGYON IZGATOTT
\shape default
\emph default
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: KIEMELÉS!
\end_layout
\end_inset
vagyok, hogy beszélhessek róluk.
Íme közülük néhány.
\end_layout
\begin_layout Standard
*A LyX gondoskodik a margókról és a lábjegyzetek számozásáról
\end_layout
\begin_layout Standard
*A LyX-el könnyen készíthet és szerkeszthet képleteket
\end_layout
\begin_layout Standard
A filozófiai értekezést, hogy miért jobb a LyX a többi szövegszerkesztőnél,
megtalálja a 1.2 szakaszban, amit az 1.
oldalon talál.
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: ennek a KERESZT-HIVATKOZÁSNAK nem kellene fixnek lennie.
Mi történik, ha megváltoztatjuk a szakaszszámozást?
\end_layout
\end_inset
\end_layout
\begin_layout Standard
3.
Gyenge próbálkozások más LyX-es cuccok használatához
\end_layout
\begin_layout Standard
Egy nap írtam egy programot.
Így nézett ki.
\end_layout
\begin_layout Standard
5 REMARK A FELEMETES PROGRAMOM
\end_layout
\begin_layout Standard
10 PRINT
\begin_inset Quotes eld
\end_inset
FELEMETES VAGYOK!
\begin_inset Quotes erd
\end_inset
\end_layout
\begin_layout Standard
20 GOTO 10
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: ez egy PROGRAM-KÓD
\end_layout
\end_inset
\end_layout
\begin_layout Standard
A tudományos gondolkodás után, teljesen művészien éreztem magam, és írtam
egy haiku-t
\end_layout
\begin_layout Standard
A LyX egy nagyon szuper
\begin_inset Newline newline
\end_inset
Szövegszedő szövegszerkesztő
\begin_inset Newline newline
\end_inset
Sok időt takarít meg
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: ez így nem túl jó mivel egy költemény, azaz egy VERS
\end_layout
\end_inset
\end_layout
\begin_layout Standard
4.
Képletes dolgok
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: ezek a képletek normális módon kellene hogy megjelenjenek.
\end_layout
\end_inset
\end_layout
\begin_layout Standard
A kedvenc egyenletem a másodfokú egyenlet megoldóképlete.
Ha ax^2+bx+c=0 (1.
képlet), akkor x= -b plusz vagy mínusz a b^2-4ac négyzetgyöke, majd mindez
osztva 2a-val (2.
képlet).
\end_layout
\begin_layout Standard
A másik kedvenc képletem egy elemi kalkulus: f'(x) határérték, amikor [f(x+delta
x)- f(x)]-ben deltax tart a nullához és az egész osztva deltax-el (3.
képlet).
\end_layout
\begin_layout Standard
------------------------------------------------
\end_layout
\begin_layout Standard
HIVATKOZÁSOK
\end_layout
\begin_layout Standard
[1] Lamport, Leslie.
\emph on
LaTeX: A Document Preparation System.
\emph default
Addison-Wesley, Reading, Massachusetts, második kiadás, 1994.
\end_layout
\end_body
\end_document
#LyX 1.6.5svn created this file. For more info see http://www.lyx.org/
\lyxformat 345
\begin_document
\begin_header
\textclass article
\begin_preamble
%\def\magyarOptions{defaults=over-1.4,footnote=huplain}
\usepackage{indentfirst}
\frenchspacing
\end_preamble
\use_default_options false
\language magyar
\inputencoding auto
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\paperfontsize 12
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_amsmath 1
\use_esint 0
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language polish
\papercolumns 1
\papersides 1
\paperpagestyle plain
\tracking_changes false
\output_changes false
\author ""
\author ""
\end_header
\begin_body
\begin_layout Standard
EZ A DOKUMENTUM CÍME
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: a címnek jobban CÍMNEK kell látszania
\end_layout
\end_inset
\end_layout
\begin_layout Standard
készítette egy LyX-es
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: ide kerül a SZERZŐ
\end_layout
\end_inset
\end_layout
\begin_layout Standard
1972.
június 12
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: ez lesz a DÁTUM
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Tartalomjegyzék
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: jó lenne nem kellene külön begépelni a tartalomjegyzéket
\end_layout
\end_inset
\end_layout
\begin_layout Standard
1.
Alap filozófia..................1
\end_layout
\begin_layout Standard
1.1 Hogyan valósítja meg ezt a LyX...............1
\end_layout
\begin_layout Standard
1.2 Miért jobb a LyX ...............1
\end_layout
\begin_layout Standard
2.
A LyX jellemzői
\end_layout
\begin_layout Standard
3.
Gyenge próbálkozások más LyX-es cuccok használatához
\end_layout
\begin_layout Standard
4.
Képletes dolgok
\end_layout
\begin_layout Standard
---------------------------------------------------
\end_layout
\begin_layout Standard
1.
Alap filozófia
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: a szakaszcímnek jobban ki kellene tűnnie
\end_layout
\end_inset
\end_layout
\begin_layout Standard
A LyX alapfilozófiája az, hogy csak arra kell koncentrálnia amit le akarni
írni, nem arra hogyan fog kinézni.
\end_layout
\begin_layout Standard
1.1 Hogyan valósítja meg ezt a LyX
\end_layout
\begin_layout Standard
A LyX a LaTeX-et használja, ami egy dokumentum elkészítő rendszer, amit
1985-ben készített Leslie Lamport.
Ezt egy TeX nevű írásszedő rendszerre építette, amit Donald Knuth készített
1984-ben.
A LaTeX-et, a LyX-hez hasonló filozófia miatt készítették.
Leslie Lamport egyszer azt mondta (lásd a [2] hivatkozásban):
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: valószínűleg ennek az IDÉZET HIVATKOZÁSNAK nem kellene be betonozva
lennie.
Mi lenne, ha Lamport könyve a második elem lenne az irodalomjegyzéknek?
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Quotes pld
\end_inset
A tipográfiai tervezés célja az, hogy segítsen az olvasónak megérteni a
szerző mondanivalóját.
Ahhoz, hogy egy művet könnyen el lehessen olvasni, a vizuális szerkezetének
követnie kell a logikai felépítését.
Az idézetek és számítógépprogramok teljesen különálló logikai elemek, ezért
meg kell tudni őket egymásól különböztetni...
Mivel a LyX nem érti az írott szöveget, ezért világosan meg kell adnia
a logikai struktúrát bizonyos parancsok használatával\SpecialChar \ldots{}
Miközben művét készíti,
a logikai felépítésével kell törődnie, nem a megjelenésével.
\begin_inset Quotes prd
\end_inset
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: ez egy IDÉZET
\end_layout
\end_inset
\end_layout
\begin_layout Standard
1.2 Miért jobb a LyX
\end_layout
\begin_layout Standard
A LyX sokkal több embernek lehet hasznos, mint a LaTeX.
Meglehetősen könnyebb megtanulni, mivel nem kell megtanulni a LaTeX-et
(ami gyakorlatilag egy programozási nyelv).
A LyX alapvetően egy másik
\begin_inset Quotes pld
\end_inset
azt kapod amit látsz
\begin_inset Quotes prd
\end_inset
szövegszerkesztő, bár inkább
\begin_inset Quotes pld
\end_inset
amit lát arra gondol
\begin_inset Quotes prd
\end_inset
típusú.
Ezáltal a word típusú szövegszerkesztők könnyű használatát kombinálja,
a LaTeX hatékonyságával.
Ez egy jó dolog.
A fájl formátuma platform független.
De legfőképpen, ingyenes!
\end_layout
\begin_layout Standard
2.
A LyX jellemzői
\end_layout
\begin_layout Standard
A LyX rengeteg olyan jellemzővel rendelkezik, amelyek megkönnyítik az írást.
(Ezek után, miért ne akarná használni?
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: a zárójelben lévő sokkal jobban mutatna a LÁBJEGYZETben
\end_layout
\end_inset
).
\shape italic
\emph on
NAGYON IZGATOTT
\shape default
\emph default
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: KIEMELÉS!
\end_layout
\end_inset
vagyok, hogy beszélhessek róluk.
Íme közülük néhány.
\end_layout
\begin_layout Standard
*A LyX gondoskodik a margókról és a lábjegyzetek számozásáról
\end_layout
\begin_layout Standard
*A LyX-el könnyen készíthet és szerkeszthet képleteket
\end_layout
\begin_layout Standard
A filozófiai értekezést, hogy miért jobb a LyX a többi szövegszerkesztőnél,
megtalálja a 1.2 szakaszban, amit az 1.
oldalon talál.
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: ennek a KERESZT-HIVATKOZÁSNAK nem kellene fixnek lennie.
Mi történik, ha megváltoztatjuk a szakaszszámozást?
\end_layout
\end_inset
\end_layout
\begin_layout Standard
3.
Gyenge próbálkozások más LyX-es cuccok használatához
\end_layout
\begin_layout Standard
Egy nap írtam egy programot.
Így nézett ki.
\end_layout
\begin_layout Standard
5 REMARK A FELEMETES PROGRAMOM
\end_layout
\begin_layout Standard
10 PRINT
\begin_inset Quotes eld
\end_inset
FELEMETES VAGYOK!
\begin_inset Quotes erd
\end_inset
\end_layout
\begin_layout Standard
20 GOTO 10
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: ez egy PROGRAM-KÓD
\end_layout
\end_inset
\end_layout
\begin_layout Standard
A tudományos gondolkodás után, teljesen művészien éreztem magam, és írtam
egy haiku-t
\end_layout
\begin_layout Standard
A LyX egy nagyon szuper
\begin_inset Newline newline
\end_inset
Szövegszedő szövegszerkesztő
\begin_inset Newline newline
\end_inset
Sok időt takarít meg
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: ez így nem túl jó mivel egy költemény, azaz egy VERS
\end_layout
\end_inset
\end_layout
\begin_layout Standard
4.
Képletes dolgok
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Tanács: ezek a képletek normális módon kellene hogy megjelenjenek.
\end_layout
\end_inset
\end_layout
\begin_layout Standard
A kedvenc egyenletem a másodfokú egyenlet megoldóképlete.
Ha ax^2+bx+c=0 (1.
képlet), akkor x= -b plusz vagy mínusz a b^2-4ac négyzetgyöke, majd mindez
osztva 2a-val (2.
képlet).
\end_layout
\begin_layout Standard
A másik kedvenc képletem egy elemi kalkulus: f'(x) határérték, amikor [f(x+delta
x)- f(x)]-ben deltax tart a nullához és az egész osztva deltax-el (3.
képlet).
\end_layout
\begin_layout Standard
------------------------------------------------
\end_layout
\begin_layout Standard
HIVATKOZÁSOK
\end_layout
\begin_layout Standard
[1] Lamport, Leslie.
\emph on
LaTeX: A Document Preparation System.
\emph default
Addison-Wesley, Reading, Massachusetts, második kiadás, 1994.
\end_layout
\end_body
\end_document

View File

@ -1,361 +1,361 @@
#LyX 1.6.1 created this file. For more info see http://www.lyx.org/
\lyxformat 345
\begin_document
\begin_header
\textclass article
\use_default_options true
\begin_modules
sweave
\end_modules
\language english
\inputencoding auto
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\paperfontsize default
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_amsmath 1
\use_esint 1
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation skip
\defskip medskip
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\author ""
\author ""
\end_header
\begin_body
\begin_layout Title
A Test File
\end_layout
\begin_layout Author
Friedrich Leisch
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
LyX
\begin_inset Quotes eld
\end_inset
port
\begin_inset Quotes erd
\end_inset
by Gregor Gorjanc
\end_layout
\end_inset
\end_layout
\begin_layout Standard
A simple example that will run in any S engine: The integers from 1 to 10
are
\end_layout
\begin_layout Chunk
<<print=TRUE>>=
\begin_inset Newline newline
\end_inset
1:10
\begin_inset Newline newline
\end_inset
<<results=hide>>=
\begin_inset Newline newline
\end_inset
print(1:20)
\begin_inset Newline newline
\end_inset
@ % the above is just to ensure that 2 code chunks can follow each other
\end_layout
\begin_layout Standard
We can also emulate a simple calculator:
\end_layout
\begin_layout Chunk
<<echo=TRUE,print=TRUE>>=
\begin_inset Newline newline
\end_inset
1 + 1
\begin_inset Newline newline
\end_inset
1 + pi
\begin_inset Newline newline
\end_inset
sin(pi/2)
\begin_inset Newline newline
\end_inset
@
\end_layout
\begin_layout Standard
Now we look at Gaussian data:
\end_layout
\begin_layout Chunk
<<>>=
\begin_inset Newline newline
\end_inset
library(stats)
\begin_inset Newline newline
\end_inset
x <- rnorm(20)
\begin_inset Newline newline
\end_inset
print(x)
\begin_inset Newline newline
\end_inset
print(t1 <- t.test(x))
\begin_inset Newline newline
\end_inset
@
\end_layout
\begin_layout Standard
Note that we can easily integrate some numbers into standard text: The third
element of vector
\family typewriter
x
\family default
is
\begin_inset Flex S/R expression
status collapsed
\begin_layout Plain Layout
x[3]
\end_layout
\end_inset
, the
\begin_inset Formula $p$
\end_inset
-value of the test is
\begin_inset Flex S/R expression
status collapsed
\begin_layout Plain Layout
format.pval(t1$p.value)
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\family roman
\series medium
\shape up
\size normal
\emph off
\bar no
\noun off
\color none
Now we look at a summary of the famous iris dataset, and we want to see
the commands in the code chunks:
\end_layout
\begin_layout Standard
\begin_inset Flex Sweave Options
status open
\begin_layout Plain Layout
echo=true,keep.source=true
\end_layout
\end_inset
\end_layout
\begin_layout Chunk
<<engine=R>>=
\begin_inset Newline newline
\end_inset
# A comment
\begin_inset Newline newline
\end_inset
data(iris)
\begin_inset Newline newline
\end_inset
summary(iris)
\begin_inset Newline newline
\end_inset
@ % def
\end_layout
\begin_layout Standard
\begin_inset Float figure
placement tbph
wide false
sideways false
status collapsed
\begin_layout Chunk
\align center
<<fig=TRUE>>=
\begin_inset Newline newline
\end_inset
library(graphics)
\begin_inset Newline newline
\end_inset
pairs(iris)
\begin_inset Newline newline
\end_inset
@
\end_layout
\begin_layout Plain Layout
\begin_inset Caption
\begin_layout Plain Layout
Pairs plot of the iris data.
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Float figure
placement tbph
wide false
sideways false
status collapsed
\begin_layout Chunk
\align center
<<fig=true>>=
\begin_inset Newline newline
\end_inset
boxplot(Sepal.Length~Species,data=iris)
\begin_inset Newline newline
\end_inset
@
\end_layout
\begin_layout Plain Layout
\begin_inset Caption
\begin_layout Plain Layout
Boxplot of sepal length grouped by species.
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Chunk
<<engine=S4>>=
\begin_inset Newline newline
\end_inset
function.that.comes.only.with.Splus(x)
\begin_inset Newline newline
\end_inset
@
\end_layout
\begin_layout Standard
\begin_inset Float figure
wide false
sideways false
status open
\begin_layout Chunk
\align center
<<fig=true>>=
\begin_inset Newline newline
\end_inset
boxplot(Sepal.Length~Species,data=iris)
\begin_inset Newline newline
\end_inset
@
\end_layout
\begin_layout Plain Layout
\begin_inset Caption
\begin_layout Plain Layout
Boxplot of sepal length grouped by species
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\end_body
\end_document
#LyX 1.6.1 created this file. For more info see http://www.lyx.org/
\lyxformat 345
\begin_document
\begin_header
\textclass article
\use_default_options true
\begin_modules
sweave
\end_modules
\language english
\inputencoding auto
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\paperfontsize default
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_amsmath 1
\use_esint 1
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation skip
\defskip medskip
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\author ""
\author ""
\end_header
\begin_body
\begin_layout Title
A Test File
\end_layout
\begin_layout Author
Friedrich Leisch
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
LyX
\begin_inset Quotes eld
\end_inset
port
\begin_inset Quotes erd
\end_inset
by Gregor Gorjanc
\end_layout
\end_inset
\end_layout
\begin_layout Standard
A simple example that will run in any S engine: The integers from 1 to 10
are
\end_layout
\begin_layout Chunk
<<print=TRUE>>=
\begin_inset Newline newline
\end_inset
1:10
\begin_inset Newline newline
\end_inset
<<results=hide>>=
\begin_inset Newline newline
\end_inset
print(1:20)
\begin_inset Newline newline
\end_inset
@ % the above is just to ensure that 2 code chunks can follow each other
\end_layout
\begin_layout Standard
We can also emulate a simple calculator:
\end_layout
\begin_layout Chunk
<<echo=TRUE,print=TRUE>>=
\begin_inset Newline newline
\end_inset
1 + 1
\begin_inset Newline newline
\end_inset
1 + pi
\begin_inset Newline newline
\end_inset
sin(pi/2)
\begin_inset Newline newline
\end_inset
@
\end_layout
\begin_layout Standard
Now we look at Gaussian data:
\end_layout
\begin_layout Chunk
<<>>=
\begin_inset Newline newline
\end_inset
library(stats)
\begin_inset Newline newline
\end_inset
x <- rnorm(20)
\begin_inset Newline newline
\end_inset
print(x)
\begin_inset Newline newline
\end_inset
print(t1 <- t.test(x))
\begin_inset Newline newline
\end_inset
@
\end_layout
\begin_layout Standard
Note that we can easily integrate some numbers into standard text: The third
element of vector
\family typewriter
x
\family default
is
\begin_inset Flex S/R expression
status collapsed
\begin_layout Plain Layout
x[3]
\end_layout
\end_inset
, the
\begin_inset Formula $p$
\end_inset
-value of the test is
\begin_inset Flex S/R expression
status collapsed
\begin_layout Plain Layout
format.pval(t1$p.value)
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\family roman
\series medium
\shape up
\size normal
\emph off
\bar no
\noun off
\color none
Now we look at a summary of the famous iris dataset, and we want to see
the commands in the code chunks:
\end_layout
\begin_layout Standard
\begin_inset Flex Sweave Options
status open
\begin_layout Plain Layout
echo=true,keep.source=true
\end_layout
\end_inset
\end_layout
\begin_layout Chunk
<<engine=R>>=
\begin_inset Newline newline
\end_inset
# A comment
\begin_inset Newline newline
\end_inset
data(iris)
\begin_inset Newline newline
\end_inset
summary(iris)
\begin_inset Newline newline
\end_inset
@ % def
\end_layout
\begin_layout Standard
\begin_inset Float figure
placement tbph
wide false
sideways false
status collapsed
\begin_layout Chunk
\align center
<<fig=TRUE>>=
\begin_inset Newline newline
\end_inset
library(graphics)
\begin_inset Newline newline
\end_inset
pairs(iris)
\begin_inset Newline newline
\end_inset
@
\end_layout
\begin_layout Plain Layout
\begin_inset Caption
\begin_layout Plain Layout
Pairs plot of the iris data.
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Float figure
placement tbph
wide false
sideways false
status collapsed
\begin_layout Chunk
\align center
<<fig=true>>=
\begin_inset Newline newline
\end_inset
boxplot(Sepal.Length~Species,data=iris)
\begin_inset Newline newline
\end_inset
@
\end_layout
\begin_layout Plain Layout
\begin_inset Caption
\begin_layout Plain Layout
Boxplot of sepal length grouped by species.
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Chunk
<<engine=S4>>=
\begin_inset Newline newline
\end_inset
function.that.comes.only.with.Splus(x)
\begin_inset Newline newline
\end_inset
@
\end_layout
\begin_layout Standard
\begin_inset Float figure
wide false
sideways false
status open
\begin_layout Chunk
\align center
<<fig=true>>=
\begin_inset Newline newline
\end_inset
boxplot(Sepal.Length~Species,data=iris)
\begin_inset Newline newline
\end_inset
@
\end_layout
\begin_layout Plain Layout
\begin_inset Caption
\begin_layout Plain Layout
Boxplot of sepal length grouped by species
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\end_body
\end_document

View File

@ -1,286 +1,286 @@
/**
* \file InsetParamsDialog.cpp
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Abdelrazak Younes
*
* Full author contact details are available in file CREDITS.
*/
#include <config.h>
#include "InsetParamsDialog.h"
#include "GuiBox.h"
#include "GuiBranch.h"
#include "GuiBibitem.h"
#include "GuiERT.h"
#include "GuiHSpace.h"
#include "GuiHyperlink.h"
#include "GuiInfo.h"
#include "GuiLabel.h"
#include "GuiLine.h"
#include "GuiNomenclature.h"
#include "GuiPrintNomencl.h"
#include "GuiTabular.h"
#include "GuiVSpace.h"
#include "FloatPlacement.h"
#include "InsetParamsWidget.h"
#include "qt_helpers.h"
#include "Buffer.h"
#include "buffer_funcs.h"
#include "BufferParams.h"
#include "BufferView.h"
#include "Cursor.h"
#include "FuncRequest.h"
#include "FuncStatus.h"
#include "LyX.h"
#include "support/debug.h"
#include "support/lstrings.h"
using namespace std;
using namespace lyx::support;
namespace lyx {
namespace frontend {
/////////////////////////////////////////////////////////////////
//
// InsetParamsDialog::Private
//
/////////////////////////////////////////////////////////////////
struct InsetParamsDialog::Private
{
Private() : widget_(0), inset_(0), changed_(false) {}
///
InsetParamsWidget * widget_;
/// The inset that was used at last Restore or Apply operation.
Inset const * inset_;
/// Set to true whenever the dialog is changed and set back to
/// false when the dialog is applied or restored.
bool changed_;
};
/////////////////////////////////////////////////////////////////
//
// InsetParamsDialog
//
/////////////////////////////////////////////////////////////////
InsetParamsDialog::InsetParamsDialog(GuiView & lv, InsetParamsWidget * widget)
: DialogView(lv, toqstr(insetName(widget->insetCode())),
toqstr(insetName(widget->insetCode()))), d(new Private)
{
setupUi(this);
setInsetParamsWidget(widget);
synchronizedViewCB->setChecked(false);
on_synchronizedViewCB_stateChanged(false);
setFocusProxy(widget);
}
InsetParamsDialog::~InsetParamsDialog()
{
delete d;
}
bool InsetParamsDialog::initialiseParams(std::string const & data)
{
if (!d->widget_->initialiseParams(data))
on_restorePB_clicked();
return true;
}
void InsetParamsDialog::setInsetParamsWidget(InsetParamsWidget * widget)
{
d->widget_ = widget;
stackedWidget->addWidget(widget);
stackedWidget->setCurrentWidget(widget);
connect(d->widget_, SIGNAL(changed()), this, SLOT(onWidget_changed()));
}
void InsetParamsDialog::on_restorePB_clicked()
{
updateView(true);
restorePB->setEnabled(false);
d->changed_ = false;
d->inset_ = inset(d->widget_->insetCode());
}
void InsetParamsDialog::on_okPB_clicked()
{
Inset const * i = inset(d->widget_->insetCode());
if (i)
applyView();
else
newInset();
hide();
}
void InsetParamsDialog::newInset()
{
docstring const argument = d->widget_->dialogToParams();
dispatch(FuncRequest(d->widget_->creationCode(), argument));
}
void InsetParamsDialog::on_newPB_clicked()
{
newInset();
}
void InsetParamsDialog::on_applyPB_clicked()
{
applyView();
}
void InsetParamsDialog::on_closePB_clicked()
{
hide();
}
void InsetParamsDialog::on_synchronizedViewCB_stateChanged(int state)
{
checkWidgets(state == Qt::Checked);
}
docstring InsetParamsDialog::checkWidgets(bool synchronized_view)
{
bool const widget_ok = d->widget_->checkWidgets();
Inset const * ins = inset(d->widget_->insetCode());
docstring const argument = d->widget_->dialogToParams();
bool valid_argument = !argument.empty();
if (ins)
valid_argument &= ins->validateModifyArgument(argument);
FuncCode const code = synchronized_view
? d->widget_->creationCode() : LFUN_INSET_MODIFY;
bool const lfun_ok = lyx::getStatus(FuncRequest(code, argument)).enabled();
bool const read_only = buffer().isReadonly();
okPB->setEnabled(!synchronized_view && widget_ok && !read_only && valid_argument);
bool const can_be_restored = !synchronized_view && !read_only
&& ins && (ins != d->inset_ || d->changed_);
restorePB->setEnabled(can_be_restored);
applyPB->setEnabled(lfun_ok && widget_ok && !read_only && valid_argument);
d->widget_->setEnabled(!read_only);
return argument;
}
void InsetParamsDialog::onWidget_changed()
{
d->changed_ = true;
docstring const argument = checkWidgets(synchronizedViewCB->isChecked());
if (synchronizedViewCB->isChecked())
dispatch(FuncRequest(LFUN_INSET_MODIFY, argument));
}
void InsetParamsDialog::applyView()
{
docstring const argument = checkWidgets(synchronizedViewCB->isChecked());
dispatch(FuncRequest(LFUN_INSET_MODIFY, argument));
d->changed_ = false;
d->inset_ = inset(d->widget_->insetCode());
updateView(true);
}
void InsetParamsDialog::updateView(bool update_widget)
{
if (update_widget) {
Inset const * i = inset(d->widget_->insetCode());
if (i) {
d->widget_->blockSignals(true);
d->widget_->paramsToDialog(i);
d->widget_->blockSignals(false);
}
}
checkWidgets(synchronizedViewCB->isChecked());
}
void InsetParamsDialog::updateView()
{
updateView(synchronizedViewCB->isChecked());
}
Dialog * createDialog(GuiView & lv, InsetCode code)
{
InsetParamsWidget * widget;
switch (code) {
case ERT_CODE:
widget = new GuiERT;
break;
case FLOAT_CODE:
widget = new FloatPlacement(true);
break;
case BIBITEM_CODE:
widget = new GuiBibitem;
break;
case BRANCH_CODE:
widget = new GuiBranch;
break;
case BOX_CODE:
widget = new GuiBox;
break;
case HYPERLINK_CODE:
widget = new GuiHyperlink;
break;
case INFO_CODE:
widget = new GuiInfo;
break;
case LABEL_CODE:
widget = new GuiLabel;
break;
case LINE_CODE:
widget = new GuiLine;
break;
case MATH_SPACE_CODE:
widget = new GuiHSpace(true);
break;
case NOMENCL_CODE:
widget = new GuiNomenclature;
break;
case NOMENCL_PRINT_CODE:
widget = new GuiPrintNomencl;
break;
case SPACE_CODE:
widget = new GuiHSpace(false);
break;
case TABULAR_CODE:
widget = new GuiTabular;
break;
case VSPACE_CODE:
widget = new GuiVSpace;
break;
default: return 0;
}
InsetParamsDialog * dialog = new InsetParamsDialog(lv, widget);
return dialog;
}
Dialog * createDialog(GuiView & lv, string const & name)
{
return createDialog(lv, insetCode(name));
}
} // namespace frontend
} // namespace lyx
#include "moc_InsetParamsDialog.cpp"
/**
* \file InsetParamsDialog.cpp
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Abdelrazak Younes
*
* Full author contact details are available in file CREDITS.
*/
#include <config.h>
#include "InsetParamsDialog.h"
#include "GuiBox.h"
#include "GuiBranch.h"
#include "GuiBibitem.h"
#include "GuiERT.h"
#include "GuiHSpace.h"
#include "GuiHyperlink.h"
#include "GuiInfo.h"
#include "GuiLabel.h"
#include "GuiLine.h"
#include "GuiNomenclature.h"
#include "GuiPrintNomencl.h"
#include "GuiTabular.h"
#include "GuiVSpace.h"
#include "FloatPlacement.h"
#include "InsetParamsWidget.h"
#include "qt_helpers.h"
#include "Buffer.h"
#include "buffer_funcs.h"
#include "BufferParams.h"
#include "BufferView.h"
#include "Cursor.h"
#include "FuncRequest.h"
#include "FuncStatus.h"
#include "LyX.h"
#include "support/debug.h"
#include "support/lstrings.h"
using namespace std;
using namespace lyx::support;
namespace lyx {
namespace frontend {
/////////////////////////////////////////////////////////////////
//
// InsetParamsDialog::Private
//
/////////////////////////////////////////////////////////////////
struct InsetParamsDialog::Private
{
Private() : widget_(0), inset_(0), changed_(false) {}
///
InsetParamsWidget * widget_;
/// The inset that was used at last Restore or Apply operation.
Inset const * inset_;
/// Set to true whenever the dialog is changed and set back to
/// false when the dialog is applied or restored.
bool changed_;
};
/////////////////////////////////////////////////////////////////
//
// InsetParamsDialog
//
/////////////////////////////////////////////////////////////////
InsetParamsDialog::InsetParamsDialog(GuiView & lv, InsetParamsWidget * widget)
: DialogView(lv, toqstr(insetName(widget->insetCode())),
toqstr(insetName(widget->insetCode()))), d(new Private)
{
setupUi(this);
setInsetParamsWidget(widget);
synchronizedViewCB->setChecked(false);
on_synchronizedViewCB_stateChanged(false);
setFocusProxy(widget);
}
InsetParamsDialog::~InsetParamsDialog()
{
delete d;
}
bool InsetParamsDialog::initialiseParams(std::string const & data)
{
if (!d->widget_->initialiseParams(data))
on_restorePB_clicked();
return true;
}
void InsetParamsDialog::setInsetParamsWidget(InsetParamsWidget * widget)
{
d->widget_ = widget;
stackedWidget->addWidget(widget);
stackedWidget->setCurrentWidget(widget);
connect(d->widget_, SIGNAL(changed()), this, SLOT(onWidget_changed()));
}
void InsetParamsDialog::on_restorePB_clicked()
{
updateView(true);
restorePB->setEnabled(false);
d->changed_ = false;
d->inset_ = inset(d->widget_->insetCode());
}
void InsetParamsDialog::on_okPB_clicked()
{
Inset const * i = inset(d->widget_->insetCode());
if (i)
applyView();
else
newInset();
hide();
}
void InsetParamsDialog::newInset()
{
docstring const argument = d->widget_->dialogToParams();
dispatch(FuncRequest(d->widget_->creationCode(), argument));
}
void InsetParamsDialog::on_newPB_clicked()
{
newInset();
}
void InsetParamsDialog::on_applyPB_clicked()
{
applyView();
}
void InsetParamsDialog::on_closePB_clicked()
{
hide();
}
void InsetParamsDialog::on_synchronizedViewCB_stateChanged(int state)
{
checkWidgets(state == Qt::Checked);
}
docstring InsetParamsDialog::checkWidgets(bool synchronized_view)
{
bool const widget_ok = d->widget_->checkWidgets();
Inset const * ins = inset(d->widget_->insetCode());
docstring const argument = d->widget_->dialogToParams();
bool valid_argument = !argument.empty();
if (ins)
valid_argument &= ins->validateModifyArgument(argument);
FuncCode const code = synchronized_view
? d->widget_->creationCode() : LFUN_INSET_MODIFY;
bool const lfun_ok = lyx::getStatus(FuncRequest(code, argument)).enabled();
bool const read_only = buffer().isReadonly();
okPB->setEnabled(!synchronized_view && widget_ok && !read_only && valid_argument);
bool const can_be_restored = !synchronized_view && !read_only
&& ins && (ins != d->inset_ || d->changed_);
restorePB->setEnabled(can_be_restored);
applyPB->setEnabled(lfun_ok && widget_ok && !read_only && valid_argument);
d->widget_->setEnabled(!read_only);
return argument;
}
void InsetParamsDialog::onWidget_changed()
{
d->changed_ = true;
docstring const argument = checkWidgets(synchronizedViewCB->isChecked());
if (synchronizedViewCB->isChecked())
dispatch(FuncRequest(LFUN_INSET_MODIFY, argument));
}
void InsetParamsDialog::applyView()
{
docstring const argument = checkWidgets(synchronizedViewCB->isChecked());
dispatch(FuncRequest(LFUN_INSET_MODIFY, argument));
d->changed_ = false;
d->inset_ = inset(d->widget_->insetCode());
updateView(true);
}
void InsetParamsDialog::updateView(bool update_widget)
{
if (update_widget) {
Inset const * i = inset(d->widget_->insetCode());
if (i) {
d->widget_->blockSignals(true);
d->widget_->paramsToDialog(i);
d->widget_->blockSignals(false);
}
}
checkWidgets(synchronizedViewCB->isChecked());
}
void InsetParamsDialog::updateView()
{
updateView(synchronizedViewCB->isChecked());
}
Dialog * createDialog(GuiView & lv, InsetCode code)
{
InsetParamsWidget * widget;
switch (code) {
case ERT_CODE:
widget = new GuiERT;
break;
case FLOAT_CODE:
widget = new FloatPlacement(true);
break;
case BIBITEM_CODE:
widget = new GuiBibitem;
break;
case BRANCH_CODE:
widget = new GuiBranch;
break;
case BOX_CODE:
widget = new GuiBox;
break;
case HYPERLINK_CODE:
widget = new GuiHyperlink;
break;
case INFO_CODE:
widget = new GuiInfo;
break;
case LABEL_CODE:
widget = new GuiLabel;
break;
case LINE_CODE:
widget = new GuiLine;
break;
case MATH_SPACE_CODE:
widget = new GuiHSpace(true);
break;
case NOMENCL_CODE:
widget = new GuiNomenclature;
break;
case NOMENCL_PRINT_CODE:
widget = new GuiPrintNomencl;
break;
case SPACE_CODE:
widget = new GuiHSpace(false);
break;
case TABULAR_CODE:
widget = new GuiTabular;
break;
case VSPACE_CODE:
widget = new GuiVSpace;
break;
default: return 0;
}
InsetParamsDialog * dialog = new InsetParamsDialog(lv, widget);
return dialog;
}
Dialog * createDialog(GuiView & lv, string const & name)
{
return createDialog(lv, insetCode(name));
}
} // namespace frontend
} // namespace lyx
#include "moc_InsetParamsDialog.cpp"

View File

@ -1,71 +1,71 @@
// -*- C++ -*-
/**
* \file InsetParamsDialog.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Abdelrazak Younes
*
* Full author contact details are available in file CREDITS.
*/
#ifndef INSET_PARAMS_DIALOG_H
#define INSET_PARAMS_DIALOG_H
#include "DialogView.h"
#include "ui_InsetParamsUi.h"
#include "qt_i18n.h"
namespace lyx {
class Inset;
namespace frontend {
class InsetParamsWidget;
class InsetParamsDialog : public DialogView, public Ui::InsetParamsUi
{
Q_OBJECT
public:
InsetParamsDialog(GuiView & lv, InsetParamsWidget * widget);
~InsetParamsDialog();
///
void setInsetParamsWidget(InsetParamsWidget * widget);
protected Q_SLOTS:
void onWidget_changed();
void applyView();
void on_restorePB_clicked();
void on_newPB_clicked();
void on_okPB_clicked();
void on_applyPB_clicked();
void on_closePB_clicked();
void on_synchronizedViewCB_stateChanged(int state);
private:
/// \name DialogView inherited methods
//@{
void updateView();
void dispatchParams() {}
bool isBufferDependent() const { return true; }
bool canApply() const { return true; }
bool initialiseParams(std::string const &);
//@}
///
void newInset();
///
void updateView(bool update_widget);
///
docstring checkWidgets(bool synchronized_view);
/// pimpl
struct Private;
Private * d;
};
} // namespace frontend
} // namespace lyx
#endif // INSET_PARAMS_DIALOG_H
// -*- C++ -*-
/**
* \file InsetParamsDialog.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Abdelrazak Younes
*
* Full author contact details are available in file CREDITS.
*/
#ifndef INSET_PARAMS_DIALOG_H
#define INSET_PARAMS_DIALOG_H
#include "DialogView.h"
#include "ui_InsetParamsUi.h"
#include "qt_i18n.h"
namespace lyx {
class Inset;
namespace frontend {
class InsetParamsWidget;
class InsetParamsDialog : public DialogView, public Ui::InsetParamsUi
{
Q_OBJECT
public:
InsetParamsDialog(GuiView & lv, InsetParamsWidget * widget);
~InsetParamsDialog();
///
void setInsetParamsWidget(InsetParamsWidget * widget);
protected Q_SLOTS:
void onWidget_changed();
void applyView();
void on_restorePB_clicked();
void on_newPB_clicked();
void on_okPB_clicked();
void on_applyPB_clicked();
void on_closePB_clicked();
void on_synchronizedViewCB_stateChanged(int state);
private:
/// \name DialogView inherited methods
//@{
void updateView();
void dispatchParams() {}
bool isBufferDependent() const { return true; }
bool canApply() const { return true; }
bool initialiseParams(std::string const &);
//@}
///
void newInset();
///
void updateView(bool update_widget);
///
docstring checkWidgets(bool synchronized_view);
/// pimpl
struct Private;
Private * d;
};
} // namespace frontend
} // namespace lyx
#endif // INSET_PARAMS_DIALOG_H

View File

@ -1,64 +1,64 @@
// -*- C++ -*-
/**
* \file InsetParamsWidget.cpp
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Abdelrazak Younes
*
* Full author contact details are available in file CREDITS.
*/
#include <config.h>
#include "InsetParamsWidget.h"
#include "qt_helpers.h"
#include <QLineEdit>
namespace lyx {
namespace frontend {
CheckedWidget::CheckedWidget(QLineEdit * input, QWidget * label)
: input_(input), label_(label)
{
}
bool CheckedWidget::check() const
{
bool const valid = input_->hasAcceptableInput();
// Visual feedback.
setValid(input_, valid);
if (label_)
setValid(label_, valid);
return valid;
}
InsetParamsWidget::InsetParamsWidget(QWidget * parent) : QWidget(parent)
{
}
void InsetParamsWidget::addCheckedWidget(QLineEdit * input, QWidget * label)
{
checked_widgets_.append(CheckedWidget(input, label));
}
bool InsetParamsWidget::checkWidgets() const
{
bool valid = true;
Q_FOREACH(CheckedWidget const & le, checked_widgets_)
valid &= le.check();
return valid;
}
} // namespace frontend
} // namespace lyx
#include "moc_InsetParamsWidget.cpp"
// -*- C++ -*-
/**
* \file InsetParamsWidget.cpp
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Abdelrazak Younes
*
* Full author contact details are available in file CREDITS.
*/
#include <config.h>
#include "InsetParamsWidget.h"
#include "qt_helpers.h"
#include <QLineEdit>
namespace lyx {
namespace frontend {
CheckedWidget::CheckedWidget(QLineEdit * input, QWidget * label)
: input_(input), label_(label)
{
}
bool CheckedWidget::check() const
{
bool const valid = input_->hasAcceptableInput();
// Visual feedback.
setValid(input_, valid);
if (label_)
setValid(label_, valid);
return valid;
}
InsetParamsWidget::InsetParamsWidget(QWidget * parent) : QWidget(parent)
{
}
void InsetParamsWidget::addCheckedWidget(QLineEdit * input, QWidget * label)
{
checked_widgets_.append(CheckedWidget(input, label));
}
bool InsetParamsWidget::checkWidgets() const
{
bool valid = true;
Q_FOREACH(CheckedWidget const & le, checked_widgets_)
valid &= le.check();
return valid;
}
} // namespace frontend
} // namespace lyx
#include "moc_InsetParamsWidget.cpp"

View File

@ -1,87 +1,87 @@
// -*- C++ -*-
/**
* \file InsetParamsWidget.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Abdelrazak Younes
*
* Full author contact details are available in file CREDITS.
*/
#ifndef INSET_PARAMS_WIDGET_H
#define INSET_PARAMS_WIDGET_H
#include "insets/InsetCode.h"
#include "FuncCode.h"
#include "support/strfwd.h"
#include <QWidget>
class QLineEdit;
namespace lyx {
class Inset;
namespace frontend {
/// CheckedWidget
// FIXME: Get rid of CheckedLineEdit in ButtonController and rename this one
// to it.
class CheckedWidget
{
public:
CheckedWidget(QLineEdit * input, QWidget * label = 0);
///
bool check() const;
private:
// non-owned
QLineEdit * input_;
QWidget * label_;
};
typedef QList<CheckedWidget> CheckedWidgets;
class InsetParamsWidget : public QWidget
{
Q_OBJECT
Q_SIGNALS:
void changed();
public:
InsetParamsWidget(QWidget * parent);
/// This is a base class; destructor must exist and be virtual.
virtual ~InsetParamsWidget() {}
///
virtual InsetCode insetCode() const = 0;
///
virtual FuncCode creationCode() const = 0;
///
virtual void paramsToDialog(Inset const *) = 0;
///
virtual docstring dialogToParams() const = 0;
///
virtual bool initialiseParams(std::string const & /*data*/)
{ return false; }
/// \return true if all CheckedWidgets are in a valid state.
virtual bool checkWidgets() const;
protected:
/// Add a widget to the list of all widgets whose validity should
/// be checked explicitly when the buttons are refreshed.
void addCheckedWidget(QLineEdit * input, QWidget * label = 0);
private:
///
CheckedWidgets checked_widgets_;
};
} // namespace frontend
} // namespace lyx
#endif // INSET_PARAMS_WIDGET_H
// -*- C++ -*-
/**
* \file InsetParamsWidget.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Abdelrazak Younes
*
* Full author contact details are available in file CREDITS.
*/
#ifndef INSET_PARAMS_WIDGET_H
#define INSET_PARAMS_WIDGET_H
#include "insets/InsetCode.h"
#include "FuncCode.h"
#include "support/strfwd.h"
#include <QWidget>
class QLineEdit;
namespace lyx {
class Inset;
namespace frontend {
/// CheckedWidget
// FIXME: Get rid of CheckedLineEdit in ButtonController and rename this one
// to it.
class CheckedWidget
{
public:
CheckedWidget(QLineEdit * input, QWidget * label = 0);
///
bool check() const;
private:
// non-owned
QLineEdit * input_;
QWidget * label_;
};
typedef QList<CheckedWidget> CheckedWidgets;
class InsetParamsWidget : public QWidget
{
Q_OBJECT
Q_SIGNALS:
void changed();
public:
InsetParamsWidget(QWidget * parent);
/// This is a base class; destructor must exist and be virtual.
virtual ~InsetParamsWidget() {}
///
virtual InsetCode insetCode() const = 0;
///
virtual FuncCode creationCode() const = 0;
///
virtual void paramsToDialog(Inset const *) = 0;
///
virtual docstring dialogToParams() const = 0;
///
virtual bool initialiseParams(std::string const & /*data*/)
{ return false; }
/// \return true if all CheckedWidgets are in a valid state.
virtual bool checkWidgets() const;
protected:
/// Add a widget to the list of all widgets whose validity should
/// be checked explicitly when the buttons are refreshed.
void addCheckedWidget(QLineEdit * input, QWidget * label = 0);
private:
///
CheckedWidgets checked_widgets_;
};
} // namespace frontend
} // namespace lyx
#endif // INSET_PARAMS_WIDGET_H

View File

@ -1,166 +1,166 @@
/**
* \file InsetPreview.cpp
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Vincent van Ravesteijn
*
* Full author contact details are available in file CREDITS.
*/
#include "config.h"
#include "InsetPreview.h"
#include "Buffer.h"
#include "BufferParams.h"
#include "BufferView.h"
#include "Cursor.h"
#include "Lexer.h"
#include "LyXRC.h"
#include "MetricsInfo.h"
#include "OutputParams.h"
#include "RenderPreview.h"
#include "frontends/Painter.h"
#include "graphics/PreviewImage.h"
#include <sstream>
using namespace std;
namespace lyx {
InsetPreview::InsetPreview(Buffer * buf)
: InsetText(buf),
preview_(new RenderPreview(this)), use_preview_(true)
{
setAutoBreakRows(true);
setDrawFrame(true);
setFrameColor(Color_previewframe);
}
InsetPreview::~InsetPreview()
{}
InsetPreview::InsetPreview(InsetPreview const & other)
: InsetText(other)
{
preview_.reset(new RenderPreview(*other.preview_, this));
}
void InsetPreview::write(ostream & os) const
{
os << "Preview" << "\n";
text().write(os);
}
void InsetPreview::addPreview(DocIterator const & inset_pos,
graphics::PreviewLoader &) const
{
preparePreview(inset_pos);
}
void InsetPreview::preparePreview(DocIterator const & pos) const
{
odocstringstream str;
OutputParams runparams(&pos.buffer()->params().encoding());
latex(str, runparams);
docstring const snippet = str.str();
preview_->addPreview(snippet, *pos.buffer());
}
bool InsetPreview::previewState(BufferView * bv) const
{
if (!editing(bv) && (RenderPreview::status() == LyXRC::PREVIEW_ON ||
RenderPreview::status() == LyXRC::PREVIEW_NO_MATH)) {
graphics::PreviewImage const * pimage =
preview_->getPreviewImage(bv->buffer());
return pimage && pimage->image();
}
return false;
}
void InsetPreview::reloadPreview(DocIterator const & pos) const
{
preparePreview(pos);
preview_->startLoading(*pos.buffer());
}
void InsetPreview::draw(PainterInfo & pi, int x, int y) const
{
use_preview_ = previewState(pi.base.bv);
if (use_preview_) {
// one pixel gap in front
preview_->draw(pi, x + 1 + TEXT_TO_INSET_OFFSET, y);
setPosCache(pi, x, y);
return;
}
InsetText::draw(pi, x, y);
}
void InsetPreview::edit(Cursor & cur, bool front, EntryDirection entry_from)
{
cur.push(*this);
InsetText::edit(cur, front, entry_from);
}
Inset * InsetPreview::editXY(Cursor & cur, int x, int y)
{
if (use_preview_) {
edit(cur, true, ENTRY_DIRECTION_IGNORE);
return this;
}
cur.push(*this);
return InsetText::editXY(cur, x, y);
}
void InsetPreview::metrics(MetricsInfo & mi, Dimension & dim) const
{
if (previewState(mi.base.bv)) {
preview_->metrics(mi, dim);
mi.base.textwidth += 2 * TEXT_TO_INSET_OFFSET;
dim.wid = max(dim.wid, 4);
dim.asc = max(dim.asc, 4);
dim.asc += TEXT_TO_INSET_OFFSET;
dim.des += TEXT_TO_INSET_OFFSET;
dim.wid += TEXT_TO_INSET_OFFSET;
dim_ = dim;
dim.wid += TEXT_TO_INSET_OFFSET;
// insert a one pixel gap
dim.wid += 1;
// Cache the inset dimension.
setDimCache(mi, dim);
Dimension dim_dummy;
MetricsInfo mi_dummy = mi;
InsetText::metrics(mi_dummy, dim_dummy);
return;
}
InsetText::metrics(mi, dim);
}
bool InsetPreview::notifyCursorLeaves(Cursor const & old, Cursor & cur)
{
reloadPreview(old);
cur.screenUpdateFlags(Update::Force);
return InsetText::notifyCursorLeaves(old, cur);
}
} // namespace lyx
/**
* \file InsetPreview.cpp
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Vincent van Ravesteijn
*
* Full author contact details are available in file CREDITS.
*/
#include "config.h"
#include "InsetPreview.h"
#include "Buffer.h"
#include "BufferParams.h"
#include "BufferView.h"
#include "Cursor.h"
#include "Lexer.h"
#include "LyXRC.h"
#include "MetricsInfo.h"
#include "OutputParams.h"
#include "RenderPreview.h"
#include "frontends/Painter.h"
#include "graphics/PreviewImage.h"
#include <sstream>
using namespace std;
namespace lyx {
InsetPreview::InsetPreview(Buffer * buf)
: InsetText(buf),
preview_(new RenderPreview(this)), use_preview_(true)
{
setAutoBreakRows(true);
setDrawFrame(true);
setFrameColor(Color_previewframe);
}
InsetPreview::~InsetPreview()
{}
InsetPreview::InsetPreview(InsetPreview const & other)
: InsetText(other)
{
preview_.reset(new RenderPreview(*other.preview_, this));
}
void InsetPreview::write(ostream & os) const
{
os << "Preview" << "\n";
text().write(os);
}
void InsetPreview::addPreview(DocIterator const & inset_pos,
graphics::PreviewLoader &) const
{
preparePreview(inset_pos);
}
void InsetPreview::preparePreview(DocIterator const & pos) const
{
odocstringstream str;
OutputParams runparams(&pos.buffer()->params().encoding());
latex(str, runparams);
docstring const snippet = str.str();
preview_->addPreview(snippet, *pos.buffer());
}
bool InsetPreview::previewState(BufferView * bv) const
{
if (!editing(bv) && (RenderPreview::status() == LyXRC::PREVIEW_ON ||
RenderPreview::status() == LyXRC::PREVIEW_NO_MATH)) {
graphics::PreviewImage const * pimage =
preview_->getPreviewImage(bv->buffer());
return pimage && pimage->image();
}
return false;
}
void InsetPreview::reloadPreview(DocIterator const & pos) const
{
preparePreview(pos);
preview_->startLoading(*pos.buffer());
}
void InsetPreview::draw(PainterInfo & pi, int x, int y) const
{
use_preview_ = previewState(pi.base.bv);
if (use_preview_) {
// one pixel gap in front
preview_->draw(pi, x + 1 + TEXT_TO_INSET_OFFSET, y);
setPosCache(pi, x, y);
return;
}
InsetText::draw(pi, x, y);
}
void InsetPreview::edit(Cursor & cur, bool front, EntryDirection entry_from)
{
cur.push(*this);
InsetText::edit(cur, front, entry_from);
}
Inset * InsetPreview::editXY(Cursor & cur, int x, int y)
{
if (use_preview_) {
edit(cur, true, ENTRY_DIRECTION_IGNORE);
return this;
}
cur.push(*this);
return InsetText::editXY(cur, x, y);
}
void InsetPreview::metrics(MetricsInfo & mi, Dimension & dim) const
{
if (previewState(mi.base.bv)) {
preview_->metrics(mi, dim);
mi.base.textwidth += 2 * TEXT_TO_INSET_OFFSET;
dim.wid = max(dim.wid, 4);
dim.asc = max(dim.asc, 4);
dim.asc += TEXT_TO_INSET_OFFSET;
dim.des += TEXT_TO_INSET_OFFSET;
dim.wid += TEXT_TO_INSET_OFFSET;
dim_ = dim;
dim.wid += TEXT_TO_INSET_OFFSET;
// insert a one pixel gap
dim.wid += 1;
// Cache the inset dimension.
setDimCache(mi, dim);
Dimension dim_dummy;
MetricsInfo mi_dummy = mi;
InsetText::metrics(mi_dummy, dim_dummy);
return;
}
InsetText::metrics(mi, dim);
}
bool InsetPreview::notifyCursorLeaves(Cursor const & old, Cursor & cur)
{
reloadPreview(old);
cur.screenUpdateFlags(Update::Force);
return InsetText::notifyCursorLeaves(old, cur);
}
} // namespace lyx

View File

@ -1,95 +1,95 @@
// -*- C++ -*-
/**
* \file InsetPreview.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Vincent van Ravesteijn
*
* Full author contact details are available in file CREDITS.
*/
#ifndef INSETPREVIEW_H
#define INSETPREVIEW_H
#include "InsetText.h"
#include "Dimension.h"
#include <boost/scoped_ptr.hpp>
namespace lyx {
class RenderPreview;
namespace graphics {
class PreviewLoader;
}
/// An inset with an instant preview
class InsetPreview : public InsetText {
public:
///
InsetPreview(Buffer *);
///
~InsetPreview();
///
InsetPreview(InsetPreview const & other);
/// \name Methods inherited from Inset class
//@{
Inset * clone() const { return new InsetPreview(*this); }
bool neverIndent() const { return true; }
InsetCode lyxCode() const { return PREVIEW_CODE; }
docstring name() const { return from_ascii("Preview"); }
bool descendable(BufferView const & /*bv*/) const { return true; }
docstring contextMenu(BufferView const &, int, int) const
{ return from_ascii("context-preview"); }
void metrics(MetricsInfo & mi, Dimension & dim) const;
Inset * editXY(Cursor & cur, int x, int y);
void draw(PainterInfo & pi, int x, int y) const;
void addPreview(DocIterator const & inset_pos,
graphics::PreviewLoader & ploader) const;
bool notifyCursorLeaves(Cursor const & old, Cursor & cur);
void write(std::ostream & os) const;
void edit(Cursor & cur, bool front, EntryDirection entry_from);
//@}
protected:
/// Retrieves the preview state. Returns true if preview
/// is enabled and the preview image is availabled.
bool previewState(BufferView * bv) const;
/// Recreates the preview if preview is enabled.
void reloadPreview(DocIterator const & pos) const;
/// Prepare the preview if preview is enabled.
void preparePreview(DocIterator const & pos) const;
///
boost::scoped_ptr<RenderPreview> preview_;
///
mutable bool use_preview_;
private:
///
mutable Dimension dim_;
};
} // namespace lyx
#endif
// -*- C++ -*-
/**
* \file InsetPreview.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Vincent van Ravesteijn
*
* Full author contact details are available in file CREDITS.
*/
#ifndef INSETPREVIEW_H
#define INSETPREVIEW_H
#include "InsetText.h"
#include "Dimension.h"
#include <boost/scoped_ptr.hpp>
namespace lyx {
class RenderPreview;
namespace graphics {
class PreviewLoader;
}
/// An inset with an instant preview
class InsetPreview : public InsetText {
public:
///
InsetPreview(Buffer *);
///
~InsetPreview();
///
InsetPreview(InsetPreview const & other);
/// \name Methods inherited from Inset class
//@{
Inset * clone() const { return new InsetPreview(*this); }
bool neverIndent() const { return true; }
InsetCode lyxCode() const { return PREVIEW_CODE; }
docstring name() const { return from_ascii("Preview"); }
bool descendable(BufferView const & /*bv*/) const { return true; }
docstring contextMenu(BufferView const &, int, int) const
{ return from_ascii("context-preview"); }
void metrics(MetricsInfo & mi, Dimension & dim) const;
Inset * editXY(Cursor & cur, int x, int y);
void draw(PainterInfo & pi, int x, int y) const;
void addPreview(DocIterator const & inset_pos,
graphics::PreviewLoader & ploader) const;
bool notifyCursorLeaves(Cursor const & old, Cursor & cur);
void write(std::ostream & os) const;
void edit(Cursor & cur, bool front, EntryDirection entry_from);
//@}
protected:
/// Retrieves the preview state. Returns true if preview
/// is enabled and the preview image is availabled.
bool previewState(BufferView * bv) const;
/// Recreates the preview if preview is enabled.
void reloadPreview(DocIterator const & pos) const;
/// Prepare the preview if preview is enabled.
void preparePreview(DocIterator const & pos) const;
///
boost::scoped_ptr<RenderPreview> preview_;
///
mutable bool use_preview_;
private:
///
mutable Dimension dim_;
};
} // namespace lyx
#endif