userguides/sanitycheck/Addons.xcu                           |  304 ++++
 userguides/sanitycheck/META-INF/manifest.xml                |   16 
 userguides/sanitycheck/Makefile                             |   15 
 userguides/sanitycheck/Office/UI/BaseWindowState.xcu        |   17 
 userguides/sanitycheck/Office/UI/BasicIDEWindowState.xcu    |   17 
 userguides/sanitycheck/Office/UI/CalcWindowState.xcu        |   17 
 userguides/sanitycheck/Office/UI/DrawWindowState.xcu        |   17 
 userguides/sanitycheck/Office/UI/ImpressWindowState.xcu     |   17 
 userguides/sanitycheck/Office/UI/MathWindowState.xcu        |   17 
 userguides/sanitycheck/Office/UI/StartModuleWindowState.xcu |   17 
 userguides/sanitycheck/Office/UI/WriterWindowState.xcu      |   17 
 userguides/sanitycheck/README                               |   11 
 userguides/sanitycheck/SanityCheck/Campos.xba               |  188 ++
 userguides/sanitycheck/SanityCheck/Comunes.xba              |  322 ++++
 userguides/sanitycheck/SanityCheck/DlgAsistente.xdl         |   55 
 userguides/sanitycheck/SanityCheck/DlgCampos.xdl            |   63 
 userguides/sanitycheck/SanityCheck/DlgEstilos.xdl           |   40 
 userguides/sanitycheck/SanityCheck/DlgFormatos.xdl          |   26 
 userguides/sanitycheck/SanityCheck/DlgImagenes.xdl          |   69 +
 userguides/sanitycheck/SanityCheck/DlgRenombrar.xdl         |   28 
 userguides/sanitycheck/SanityCheck/DlgResaltes.xdl          |   33 
 userguides/sanitycheck/SanityCheck/DlgTablas.xdl            |   40 
 userguides/sanitycheck/SanityCheck/Estilos.xba              |  454 +++++++
 userguides/sanitycheck/SanityCheck/Formatos.xba             |  309 ++++
 userguides/sanitycheck/SanityCheck/Imagenes.xba             |  550 ++++++++
 userguides/sanitycheck/SanityCheck/L10n.xba                 |  778 ++++++++++++
 userguides/sanitycheck/SanityCheck/Renombrar.xba            |  175 ++
 userguides/sanitycheck/SanityCheck/Resaltes.xba             |  677 ++++++++++
 userguides/sanitycheck/SanityCheck/Tablas.xba               |  273 ++++
 userguides/sanitycheck/SanityCheck/dialog.xlb               |   12 
 userguides/sanitycheck/SanityCheck/script.xlb               |   13 
 userguides/sanitycheck/description.xml                      |   21 
 userguides/sanitycheck/dist/Sanitycheck-1.0.0.oxt           |binary
 userguides/sanitycheck/icons/Image14_16.bmp                 |binary
 userguides/sanitycheck/icons/Image14_26.bmp                 |binary
 userguides/sanitycheck/icons/image11_16.bmp                 |binary
 userguides/sanitycheck/icons/image11_26.bmp                 |binary
 userguides/sanitycheck/icons/image12_16.bmp                 |binary
 userguides/sanitycheck/icons/image12_26.bmp                 |binary
 userguides/sanitycheck/icons/image13_16.bmp                 |binary
 userguides/sanitycheck/icons/image13_26.bmp                 |binary
 userguides/sanitycheck/icons/image1_16.bmp                  |binary
 userguides/sanitycheck/icons/image1_26.bmp                  |binary
 userguides/sanitycheck/icons/image2_16.bmp                  |binary
 userguides/sanitycheck/icons/image2_26.bmp                  |binary
 userguides/sanitycheck/icons/image4_16.bmp                  |binary
 userguides/sanitycheck/icons/image4_26.bmp                  |binary
 userguides/sanitycheck/icons/image5_16.bmp                  |binary
 userguides/sanitycheck/icons/image5_26.bmp                  |binary
 userguides/sanitycheck/icons/image7_16.bmp                  |binary
 userguides/sanitycheck/icons/image7_26.bmp                  |binary
 userguides/sanitycheck/icons/image8_16.bmp                  |binary
 userguides/sanitycheck/icons/image8_26.bmp                  |binary
 userguides/sanitycheck/icons/image9_16.bmp                  |binary
 userguides/sanitycheck/icons/image9_26.bmp                  |binary
 userguides/sanitycheck/pkg-desc/pkg-description.es          |    4 
 userguides/sanitycheck/pkg-desc/pkg-description.pt          |    4 
 userguides/sanitycheck/pkg-desc/pkg-description.txt         |    5 
 userguides/sanitycheck/registration/LGPLv3.0.txt            |  165 ++
 userguides/sanitycheck/registration/LGPLv3_es.txt           |  635 +++++++++
 userguides/sanitycheck/registration/LGPLv3_pt-br.txt        |  167 ++
 61 files changed, 5588 insertions(+)

New commits:
commit de15ef3b10a2ac49322a363e855a4ef63b45be02
Author:     Olivier Hallot <olivier.hal...@libreoffice.org>
AuthorDate: Tue Mar 5 09:28:47 2024 -0300
Commit:     Olivier Hallot <olivier.hal...@libreoffice.org>
CommitDate: Tue Mar 5 13:34:36 2024 +0100

    Add User Guides sanity check scripts
    
    This extension runs several scripts in chapter of the user guides
    to check compliance with documentation team best practices and chapter
    template for the current edition.
    
    Change-Id: I006ab1ffb193ae32324c204a7423b1c4d765dcdf
    Reviewed-on: https://gerrit.libreoffice.org/c/dev-tools/+/164421
    Tested-by: Olivier Hallot <olivier.hal...@libreoffice.org>
    Reviewed-by: Olivier Hallot <olivier.hal...@libreoffice.org>

diff --git a/userguides/sanitycheck/Addons.xcu 
b/userguides/sanitycheck/Addons.xcu
new file mode 100644
index 00000000..54586968
--- /dev/null
+++ b/userguides/sanitycheck/Addons.xcu
@@ -0,0 +1,304 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<oor:component-data 
+ xmlns:oor="http://openoffice.org/2001/registry";
+ xmlns:xs="http://www.w3.org/2001/XMLSchema";
+ oor:name="Addons"
+ oor:package="org.openoffice.Office">
+       <node oor:name="AddonUI">
+               <node oor:name="OfficeToolBar">
+                       <node oor:name="SanityCheck.OfficeToolBar" 
oor:op="replace">
+                               <node oor:name="m001" oor:op="replace">
+                                       <prop oor:name="Context" 
oor:type="xs:string">
+                                               
<value>com.sun.star.text.TextDocument</value>
+                                       </prop>
+                                       <prop oor:name="URL" 
oor:type="xs:string">
+                                               
<value>vnd.sun.star.script:SanityCheck.Resaltes.AlternarResalte?language=Basic&amp;location=application</value>
+                                       </prop>
+                                       <prop oor:name="ImageIdentifier" 
oor:type="xs:string">
+                                               
<value>%origin%/icons/image1</value>
+                                       </prop>
+                                       <prop oor:name="Title" 
oor:type="xs:string">
+                                               <value>Toggle Highlight</value>
+                                               <value 
xml:lang="pt-BR">Alternar destaque</value>
+                                               <value 
xml:lang="es-ES">Alternar resalte</value>
+                                       </prop>
+                                       <prop oor:name="Target" 
oor:type="xs:string">
+                                               <value>_self</value>
+                                       </prop>
+                               </node>
+                               <node oor:name="m002" oor:op="replace">
+                                       <prop oor:name="Context" 
oor:type="xs:string">
+                                               <value></value>
+                                       </prop>
+                                       <prop oor:name="URL" 
oor:type="xs:string">
+                                               <value>private:separator</value>
+                                       </prop>
+                               </node>
+                               <node oor:name="m003" oor:op="replace">
+                                       <prop oor:name="Context" 
oor:type="xs:string">
+                                               
<value>com.sun.star.text.TextDocument</value>
+                                       </prop>
+                                       <prop oor:name="URL" 
oor:type="xs:string">
+                                               
<value>vnd.sun.star.script:SanityCheck.Comunes.Dlg_Asist?language=Basic&amp;location=application</value>
+                                       </prop>
+                                       <prop oor:name="ImageIdentifier" 
oor:type="xs:string">
+                                               
<value>%origin%/icons/image2</value>
+                                       </prop>
+                                       <prop oor:name="Title" 
oor:type="xs:string">
+                                               <value>Wizard</value>
+                                               <value 
xml:lang="pt-BR">Asistente</value>
+                                               <value 
xml:lang="es-ES">Asistente</value>
+                                       </prop>
+                                       <prop oor:name="Target" 
oor:type="xs:string">
+                                               <value>_self</value>
+                                       </prop>
+                               </node>
+                               <node oor:name="m004" oor:op="replace">
+                                       <prop oor:name="Context" 
oor:type="xs:string">
+                                               
<value>com.sun.star.text.TextDocument</value>
+                                       </prop>
+                                       <prop oor:name="URL" 
oor:type="xs:string">
+                                               
<value>vnd.sun.star.script:SanityCheck.Imagenes.DlgImagenes?language=Basic&amp;location=application</value>
+                                       </prop>
+                                       <prop oor:name="ImageIdentifier" 
oor:type="xs:string">
+                                               
<value>%origin%/icons/image14</value>
+                                       </prop>
+                                       <prop oor:name="Title" 
oor:type="xs:string">
+                                               <value>Browse images</value>
+                                               <value xml:lang="pt-BR">Navegar 
pelas imagens</value>
+                                               <value 
xml:lang="es-ES">Recorrer Im&#225;genes</value>
+                                       </prop>
+                                       <prop oor:name="Target" 
oor:type="xs:string">
+                                               <value>_self</value>
+                                       </prop>
+                               </node>
+                       </node>
+               </node>
+               <node oor:name="OfficeMenuBar">
+                       <node oor:name="SanityCheck.OfficeMenuBar" 
oor:op="replace">
+                               <prop oor:name="Context" oor:type="xs:string">
+                                       
<value>com.sun.star.text.TextDocument</value>
+                               </prop>
+                               <prop oor:name="Title" oor:type="xs:string">
+                                       <value>SanityChek</value>
+                                       <value 
xml:lang="pt-BR">SanityChek</value>
+                                       <value 
xml:lang="es-ES">SanityChek</value>
+                               </prop>
+                               <node oor:name="Submenu">
+                               <node oor:name="m001" oor:op="replace">
+                                       <prop oor:name="Context" 
oor:type="xs:string">
+                                               
<value>com.sun.star.text.TextDocument</value>
+                                       </prop>
+                                       <prop oor:name="URL" 
oor:type="xs:string">
+                                               
<value>vnd.sun.star.script:SanityCheck.Resaltes.AlternarResalte?language=Basic&amp;location=application</value>
+                                       </prop>
+                                       <prop oor:name="ImageIdentifier" 
oor:type="xs:string">
+                                               
<value>%origin%/icons/image4</value>
+                                       </prop>
+                                       <prop oor:name="Title" 
oor:type="xs:string">
+                                               <value>Toggle Highlight</value>
+                                               <value 
xml:lang="pt-BR">Alternar destaque</value>
+                                               <value 
xml:lang="es-ES">Alternar resalte</value>
+                                       </prop>
+                                       <prop oor:name="Target" 
oor:type="xs:string">
+                                               <value>_self</value>
+                                       </prop>
+                               </node>
+                               <node oor:name="m002" oor:op="replace">
+                                       <prop oor:name="Context" 
oor:type="xs:string">
+                                               
<value>com.sun.star.text.TextDocument</value>
+                                       </prop>
+                                       <prop oor:name="URL" 
oor:type="xs:string">
+                                               
<value>vnd.sun.star.script:SanityCheck.Comunes.Dlg_Asist?language=Basic&amp;location=application</value>
+                                       </prop>
+                                       <prop oor:name="ImageIdentifier" 
oor:type="xs:string">
+                                               
<value>%origin%/icons/image5</value>
+                                       </prop>
+                                       <prop oor:name="Title" 
oor:type="xs:string">
+                                               <value>Wizard</value>
+                                               <value 
xml:lang="pt-BR">Asistente</value>
+                                               <value 
xml:lang="es-ES">Asistente</value>
+                                       </prop>
+                                       <prop oor:name="Target" 
oor:type="xs:string">
+                                               <value>_self</value>
+                                       </prop>
+                               </node>
+                               <node oor:name="m003" oor:op="replace">
+                                       <prop oor:name="Context" 
oor:type="xs:string">
+                                               
<value>com.sun.star.text.TextDocument</value>
+                                       </prop>
+                                       <prop oor:name="URL" 
oor:type="xs:string">
+                                               <value>private:separator</value>
+                                       </prop>
+                               </node>
+                               <node oor:name="m004" oor:op="replace">
+                                       <prop oor:name="Context" 
oor:type="xs:string">
+                                               
<value>com.sun.star.text.TextDocument</value>
+                                       </prop>
+                                       <prop oor:name="Title" 
oor:type="xs:string">
+                                               <value>1. Prepare 
document</value>
+                                               <value xml:lang="pt-BR">1. 
Preparar documento</value>
+                                               <value xml:lang="es-ES">1. 
Preparar documento</value>
+                                       </prop>
+                                       <node oor:name="Submenu">
+                                       <node oor:name="m001" oor:op="replace">
+                                               <prop oor:name="Context" 
oor:type="xs:string">
+                                                       
<value>com.sun.star.text.TextDocument</value>
+                                               </prop>
+                                               <prop oor:name="URL" 
oor:type="xs:string">
+                                                       
<value>vnd.sun.star.script:SanityCheck.Campos.Dlg_Campos?language=Basic&amp;location=application</value>
+                                               </prop>
+                                               <prop 
oor:name="ImageIdentifier" oor:type="xs:string">
+                                                       
<value>%origin%/icons/image7</value>
+                                               </prop>
+                                               <prop oor:name="Title" 
oor:type="xs:string">
+                                                       <value>Document 
Fields</value>
+                                                       <value 
xml:lang="pt-BR">Campos do documento</value>
+                                                       <value 
xml:lang="es-ES">Campos del documento</value>
+                                               </prop>
+                                               <prop oor:name="Target" 
oor:type="xs:string">
+                                                       <value>_self</value>
+                                               </prop>
+                                       </node>
+                                       <node oor:name="m002" oor:op="replace">
+                                               <prop oor:name="Context" 
oor:type="xs:string">
+                                                       
<value>com.sun.star.text.TextDocument</value>
+                                               </prop>
+                                               <prop oor:name="URL" 
oor:type="xs:string">
+                                                       
<value>vnd.sun.star.script:SanityCheck.Estilos.ComprobacionEstilos?language=Basic&amp;location=application</value>
+                                               </prop>
+                                               <prop 
oor:name="ImageIdentifier" oor:type="xs:string">
+                                                       
<value>%origin%/icons/image8</value>
+                                               </prop>
+                                               <prop oor:name="Title" 
oor:type="xs:string">
+                                                       <value>Check 
Styles</value>
+                                                       <value 
xml:lang="pt-PT">Verificar estilos</value>
+                                                       <value 
xml:lang="es-ES">Verificar estilos</value>
+                                               </prop>
+                                               <prop oor:name="Target" 
oor:type="xs:string">
+                                                       <value>_self</value>
+                                               </prop>
+                                       </node>
+                                       <node oor:name="m003" oor:op="replace">
+                                               <prop oor:name="Context" 
oor:type="xs:string">
+                                                       
<value>com.sun.star.text.TextDocument</value>
+                                               </prop>
+                                               <prop oor:name="URL" 
oor:type="xs:string">
+                                                       
<value>vnd.sun.star.script:SanityCheck.Renombrar.Dlg_Renombrar?language=Basic&amp;location=application</value>
+                                               </prop>
+                                               <prop 
oor:name="ImageIdentifier" oor:type="xs:string">
+                                                       
<value>%origin%/icons/image9</value>
+                                               </prop>
+                                               <prop oor:name="Title" 
oor:type="xs:string">
+                                                       <value>Rename 
Objects</value>
+                                                       <value 
xml:lang="pt-BR">Renomear objetos</value>
+                                                       <value 
xml:lang="es-ES">Renombrar objetos</value>
+                                               </prop>
+                                               <prop oor:name="Target" 
oor:type="xs:string">
+                                                       <value>_self</value>
+                                               </prop>
+                                       </node>
+                                       </node>
+                               </node>
+                               <node oor:name="m005" oor:op="replace">
+                                       <prop oor:name="Context" 
oor:type="xs:string">
+                                               
<value>com.sun.star.text.TextDocument</value>
+                                       </prop>
+                                       <prop oor:name="Title" 
oor:type="xs:string">
+                                               <value>2. Clean and 
adjust</value>
+                                               <value xml:lang="pt-BR">2. 
limpeza e ajustes</value>
+                                               <value xml:lang="es-ES">2. 
limpeza e ajustes</value>
+                                       </prop>
+                                       <node oor:name="Submenu">
+                                       <node oor:name="m001" oor:op="replace">
+                                               <prop oor:name="Context" 
oor:type="xs:string">
+                                                       
<value>com.sun.star.text.TextDocument</value>
+                                               </prop>
+                                               <prop oor:name="URL" 
oor:type="xs:string">
+                                                       
<value>vnd.sun.star.script:SanityCheck.Formatos.Dlg_Formatos?language=Basic&amp;location=application</value>
+                                               </prop>
+                                               <prop 
oor:name="ImageIdentifier" oor:type="xs:string">
+                                                       
<value>%origin%/icons/image11</value>
+                                               </prop>
+                                               <prop oor:name="Title" 
oor:type="xs:string">
+                                                       <value>Text and 
Paragraph Cleaning</value>
+                                                       <value 
xml:lang="pt-BR">Limpeza de texto e par&#225;grafos</value>
+                                                       <value 
xml:lang="es-ES">Limpieza de texto y p&#225;rrafos</value>
+                                               </prop>
+                                               <prop oor:name="Target" 
oor:type="xs:string">
+                                                       <value>_self</value>
+                                               </prop>
+                                       </node>
+                                       <node oor:name="m002" oor:op="replace">
+                                               <prop oor:name="Context" 
oor:type="xs:string">
+                                                       
<value>com.sun.star.text.TextDocument</value>
+                                               </prop>
+                                               <prop oor:name="URL" 
oor:type="xs:string">
+                                                       
<value>vnd.sun.star.script:SanityCheck.Imagenes.F_Ajuste_Imagenes_Marcos?language=Basic&amp;location=application</value>
+                                               </prop>
+                                               <prop 
oor:name="ImageIdentifier" oor:type="xs:string">
+                                                       
<value>%origin%/icons/image12</value>
+                                               </prop>
+                                               <prop oor:name="Title" 
oor:type="xs:string">
+                                                       <value>Images and 
Frames Adjust</value>
+                                                       <value 
xml:lang="pt-BR">Ajuste de Imagens e quadros</value>
+                                                       <value 
xml:lang="es-ES">Ajuste de Im&#225;genes y marcos</value>
+                                               </prop>
+                                               <prop oor:name="Target" 
oor:type="xs:string">
+                                                       <value>_self</value>
+                                               </prop>
+                                       </node>
+                                       <node oor:name="m003" oor:op="replace">
+                                               <prop oor:name="Context" 
oor:type="xs:string">
+                                                       
<value>com.sun.star.text.TextDocument</value>
+                                               </prop>
+                                               <prop oor:name="URL" 
oor:type="xs:string">
+                                                       
<value>vnd.sun.star.script:SanityCheck.Tablas.DlgTablas?language=Basic&amp;location=application</value>
+                                               </prop>
+                                               <prop 
oor:name="ImageIdentifier" oor:type="xs:string">
+                                                       
<value>%origin%/icons/image13</value>
+                                               </prop>
+                                               <prop oor:name="Title" 
oor:type="xs:string">
+                                                       <value>Tables 
Adjust</value>
+                                                       <value 
xml:lang="pt-BR">Ajuste de tabelas</value>
+                                                       <value 
xml:lang="es-ES">Ajuste de tablas</value>
+                                               </prop>
+                                               <prop oor:name="Target" 
oor:type="xs:string">
+                                                       <value>_self</value>
+                                               </prop>
+                                       </node>
+                                       </node>
+                               </node>
+                               <node oor:name="m006" oor:op="replace">
+                                       <prop oor:name="Context" 
oor:type="xs:string">
+                                               
<value>com.sun.star.text.TextDocument</value>
+                                       </prop>
+                                       <prop oor:name="Title" 
oor:type="xs:string">
+                                               <value>3. Web 
Publicati&#243;n</value>
+                                               <value xml:lang="es-ES">3. 
Publicaci&#243;n Web</value>
+                                               <value xml:lang="pt-BR">3 
Publica&#231;ao Web</value>
+                                       </prop>
+                                       <node oor:name="Submenu">
+                                       <node oor:name="m001" oor:op="replace">
+                                               <prop oor:name="Context" 
oor:type="xs:string">
+                                                       
<value>com.sun.star.text.TextDocument</value>
+                                               </prop>
+                                               <prop oor:name="URL" 
oor:type="xs:string">
+                                                       
<value>vnd.sun.star.script:SanityCheck.Imagenes.F_AlternarLeyenda?language=Basic&amp;location=application</value>
+                                               </prop>
+                                               <prop oor:name="Title" 
oor:type="xs:string">
+                                                       <value>Toggle 
Captions</value>
+                                                       <value 
xml:lang="pt-BR">Alternar legendas</value>
+                                                       <value 
xml:lang="en-US">Alternar leyendas</value>
+                                               </prop>
+                                               <prop oor:name="Target" 
oor:type="xs:string">
+                                                       <value>_self</value>
+                                               </prop>
+                                       </node>
+                                       </node>
+                               </node>
+                               </node>
+                       </node>
+               </node>
+       </node>
+</oor:component-data>
diff --git a/userguides/sanitycheck/META-INF/manifest.xml 
b/userguides/sanitycheck/META-INF/manifest.xml
new file mode 100644
index 00000000..1bdfb190
--- /dev/null
+++ b/userguides/sanitycheck/META-INF/manifest.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<manifest:manifest>
+ <manifest:file-entry manifest:full-path="SanityCheck/" 
manifest:media-type="application/vnd.sun.star.basic-library"/>
+ <manifest:file-entry manifest:full-path="pkg-desc/pkg-description.txt" 
manifest:media-type="application/vnd.sun.star.package-bundle-description"/>
+ <manifest:file-entry manifest:full-path="pkg-desc/pkg-description.pt" 
manifest:media-type="application/vnd.sun.star.package-bundle-description;locale=pt"/>
+ <manifest:file-entry manifest:full-path="pkg-desc/pkg-description.es" 
manifest:media-type="application/vnd.sun.star.package-bundle-description;locale=es"/>
+ <manifest:file-entry manifest:full-path="Addons.xcu" 
manifest:media-type="application/vnd.sun.star.configuration-data"/>
+ <manifest:file-entry manifest:full-path="Office/UI/BaseWindowState.xcu" 
manifest:media-type="application/vnd.sun.star.configuration-data"/>
+ <manifest:file-entry manifest:full-path="Office/UI/BasicIDEWindowState.xcu" 
manifest:media-type="application/vnd.sun.star.configuration-data"/>
+ <manifest:file-entry manifest:full-path="Office/UI/CalcWindowState.xcu" 
manifest:media-type="application/vnd.sun.star.configuration-data"/>
+ <manifest:file-entry manifest:full-path="Office/UI/DrawWindowState.xcu" 
manifest:media-type="application/vnd.sun.star.configuration-data"/>
+ <manifest:file-entry manifest:full-path="Office/UI/ImpressWindowState.xcu" 
manifest:media-type="application/vnd.sun.star.configuration-data"/>
+ <manifest:file-entry manifest:full-path="Office/UI/MathWindowState.xcu" 
manifest:media-type="application/vnd.sun.star.configuration-data"/>
+ <manifest:file-entry 
manifest:full-path="Office/UI/StartModuleWindowState.xcu" 
manifest:media-type="application/vnd.sun.star.configuration-data"/>
+ <manifest:file-entry manifest:full-path="Office/UI/WriterWindowState.xcu" 
manifest:media-type="application/vnd.sun.star.configuration-data"/>
+</manifest:manifest>
\ No newline at end of file
diff --git a/userguides/sanitycheck/Makefile b/userguides/sanitycheck/Makefile
new file mode 100644
index 00000000..44e7e464
--- /dev/null
+++ b/userguides/sanitycheck/Makefile
@@ -0,0 +1,15 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at https://mozilla.org/MPL/2.0/.
+#
+
+default:
+       VER=`grep '<version' description.xml | sed -e 's/^.*value="//' -e 
's/".*//'` ; \
+           rm -f dist/SanityCheck-$$VER.oxt ; \
+           zip -r dist/Sanitycheck-$$VER.oxt . -x '*.oxt' '.*.sw*' '*.xcf' 
'*.svg' 'Makefile'
+
+# vim: set noet:
diff --git a/userguides/sanitycheck/Office/UI/BaseWindowState.xcu 
b/userguides/sanitycheck/Office/UI/BaseWindowState.xcu
new file mode 100644
index 00000000..2ab3d2f3
--- /dev/null
+++ b/userguides/sanitycheck/Office/UI/BaseWindowState.xcu
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry";
+ xmlns:xs="http://www.w3.org/2001/XMLSchema";
+ oor:name="BaseWindowState"
+ oor:package="org.openoffice.Office.UI">
+       <node oor:name="UIElements">
+               <node oor:name="States">
+                       <node 
oor:name="private:resource/toolbar/addon_SanityCheck.OfficeToolBar" 
oor:op="replace">
+                               <prop oor:name="UIName" oor:type="xs:string">
+                                       <value>SanityCheck</value>
+                                       <value xml:lang="pt-BR">SanityChek 
</value>
+                                       <value xml:lang="es-ES">SanityChek 
</value>
+                               </prop>
+                       </node>
+               </node>
+       </node>
+</oor:component-data>
diff --git a/userguides/sanitycheck/Office/UI/BasicIDEWindowState.xcu 
b/userguides/sanitycheck/Office/UI/BasicIDEWindowState.xcu
new file mode 100644
index 00000000..17f1d6f7
--- /dev/null
+++ b/userguides/sanitycheck/Office/UI/BasicIDEWindowState.xcu
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry";
+ xmlns:xs="http://www.w3.org/2001/XMLSchema";
+ oor:name="BasicIDEWindowState"
+ oor:package="org.openoffice.Office.UI">
+       <node oor:name="UIElements">
+               <node oor:name="States">
+                       <node 
oor:name="private:resource/toolbar/addon_SanityCheck.OfficeToolBar" 
oor:op="replace">
+                               <prop oor:name="UIName" oor:type="xs:string">
+                                       <value>SanityCheck</value>
+                                       <value xml:lang="pt-BR">SanityChek 
</value>
+                                       <value xml:lang="es-ES">SanityChek 
</value>
+                               </prop>
+                       </node>
+               </node>
+       </node>
+</oor:component-data>
diff --git a/userguides/sanitycheck/Office/UI/CalcWindowState.xcu 
b/userguides/sanitycheck/Office/UI/CalcWindowState.xcu
new file mode 100644
index 00000000..89d12504
--- /dev/null
+++ b/userguides/sanitycheck/Office/UI/CalcWindowState.xcu
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry";
+ xmlns:xs="http://www.w3.org/2001/XMLSchema";
+ oor:name="CalcWindowState"
+ oor:package="org.openoffice.Office.UI">
+       <node oor:name="UIElements">
+               <node oor:name="States">
+                       <node 
oor:name="private:resource/toolbar/addon_SanityCheck.OfficeToolBar" 
oor:op="replace">
+                               <prop oor:name="UIName" oor:type="xs:string">
+                                       <value>SanityCheck</value>
+                                       <value xml:lang="pt-BR">SanityChek 
</value>
+                                       <value xml:lang="es-ES">SanityChek 
</value>
+                               </prop>
+                       </node>
+               </node>
+       </node>
+</oor:component-data>
diff --git a/userguides/sanitycheck/Office/UI/DrawWindowState.xcu 
b/userguides/sanitycheck/Office/UI/DrawWindowState.xcu
new file mode 100644
index 00000000..6ef2014a
--- /dev/null
+++ b/userguides/sanitycheck/Office/UI/DrawWindowState.xcu
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry";
+ xmlns:xs="http://www.w3.org/2001/XMLSchema";
+ oor:name="DrawWindowState"
+ oor:package="org.openoffice.Office.UI">
+       <node oor:name="UIElements">
+               <node oor:name="States">
+                       <node 
oor:name="private:resource/toolbar/addon_SanityCheck.OfficeToolBar" 
oor:op="replace">
+                               <prop oor:name="UIName" oor:type="xs:string">
+                                       <value>SanityCheck</value>
+                                       <value xml:lang="pt-BR">SanityChek 
</value>
+                                       <value xml:lang="es-ES">SanityChek 
</value>
+                               </prop>
+                       </node>
+               </node>
+       </node>
+</oor:component-data>
diff --git a/userguides/sanitycheck/Office/UI/ImpressWindowState.xcu 
b/userguides/sanitycheck/Office/UI/ImpressWindowState.xcu
new file mode 100644
index 00000000..50ce3cab
--- /dev/null
+++ b/userguides/sanitycheck/Office/UI/ImpressWindowState.xcu
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry";
+ xmlns:xs="http://www.w3.org/2001/XMLSchema";
+ oor:name="ImpressWindowState"
+ oor:package="org.openoffice.Office.UI">
+       <node oor:name="UIElements">
+               <node oor:name="States">
+                       <node 
oor:name="private:resource/toolbar/addon_SanityCheck.OfficeToolBar" 
oor:op="replace">
+                               <prop oor:name="UIName" oor:type="xs:string">
+                                       <value>SanityCheck</value>
+                                       <value xml:lang="pt-BR">SanityChek 
</value>
+                                       <value xml:lang="es-ES">SanityChek 
</value>
+                               </prop>
+                       </node>
+               </node>
+       </node>
+</oor:component-data>
diff --git a/userguides/sanitycheck/Office/UI/MathWindowState.xcu 
b/userguides/sanitycheck/Office/UI/MathWindowState.xcu
new file mode 100644
index 00000000..f122dabe
--- /dev/null
+++ b/userguides/sanitycheck/Office/UI/MathWindowState.xcu
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry";
+ xmlns:xs="http://www.w3.org/2001/XMLSchema";
+ oor:name="MathWindowState"
+ oor:package="org.openoffice.Office.UI">
+       <node oor:name="UIElements">
+               <node oor:name="States">
+                       <node 
oor:name="private:resource/toolbar/addon_SanityCheck.OfficeToolBar" 
oor:op="replace">
+                               <prop oor:name="UIName" oor:type="xs:string">
+                                       <value>SanityCheck</value>
+                                       <value xml:lang="pt-BR">SanityChek 
</value>
+                                       <value xml:lang="es-ES">SanityChek 
</value>
+                               </prop>
+                       </node>
+               </node>
+       </node>
+</oor:component-data>
diff --git a/userguides/sanitycheck/Office/UI/StartModuleWindowState.xcu 
b/userguides/sanitycheck/Office/UI/StartModuleWindowState.xcu
new file mode 100644
index 00000000..62dfcef4
--- /dev/null
+++ b/userguides/sanitycheck/Office/UI/StartModuleWindowState.xcu
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry";
+ xmlns:xs="http://www.w3.org/2001/XMLSchema";
+ oor:name="StartModuleWindowState"
+ oor:package="org.openoffice.Office.UI">
+       <node oor:name="UIElements">
+               <node oor:name="States">
+                       <node 
oor:name="private:resource/toolbar/addon_SanityCheck.OfficeToolBar" 
oor:op="replace">
+                               <prop oor:name="UIName" oor:type="xs:string">
+                                       <value>SanityCheck</value>
+                                       <value xml:lang="pt-BR">SanityChek 
</value>
+                                       <value xml:lang="es-ES">SanityChek 
</value>
+                               </prop>
+                       </node>
+               </node>
+       </node>
+</oor:component-data>
diff --git a/userguides/sanitycheck/Office/UI/WriterWindowState.xcu 
b/userguides/sanitycheck/Office/UI/WriterWindowState.xcu
new file mode 100644
index 00000000..abdb982f
--- /dev/null
+++ b/userguides/sanitycheck/Office/UI/WriterWindowState.xcu
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry";
+ xmlns:xs="http://www.w3.org/2001/XMLSchema";
+ oor:name="WriterWindowState"
+ oor:package="org.openoffice.Office.UI">
+       <node oor:name="UIElements">
+               <node oor:name="States">
+                       <node 
oor:name="private:resource/toolbar/addon_SanityCheck.OfficeToolBar" 
oor:op="replace">
+                               <prop oor:name="UIName" oor:type="xs:string">
+                                       <value>SanityCheck</value>
+                                       <value xml:lang="pt-BR">SanityChek 
</value>
+                                       <value xml:lang="es-ES">SanityChek 
</value>
+                               </prop>
+                       </node>
+               </node>
+       </node>
+</oor:component-data>
diff --git a/userguides/sanitycheck/README b/userguides/sanitycheck/README
new file mode 100644
index 00000000..8584226d
--- /dev/null
+++ b/userguides/sanitycheck/README
@@ -0,0 +1,11 @@
+User Guides Sanity Check
+
+This extension performs several checkings on the chapter user guides
+
+To build the extension
+cd userguide/sanitycheck
+make
+
+The extension will pick the version number from the description file.
+the extension is localted in the dist folder.
+
diff --git a/userguides/sanitycheck/SanityCheck/Campos.xba 
b/userguides/sanitycheck/SanityCheck/Campos.xba
new file mode 100644
index 00000000..d77a1e4b
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/Campos.xba
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" 
"module.dtd">
+<script:module xmlns:script="http://openoffice.org/2000/script"; 
script:name="Campos" script:language="StarBasic" script:moduleType="normal">REM 
 *****  BASIC  Módulo Campos *****
+Option Explicit
+
+ Private oDlgProps
+ Const  Extension as string  = &quot;Revisiones v 1.0.0&quot; 
+
+ Rem ############
+Sub Dlg_Campos
+   
+   Call L10n.Trad_Campos 
+   If  Thiscomponent.HasLocation = false then : Msgbox (C_Txt(16),0+48+0, 
Extension) : Exit Sub : End If
+   Call Comunes.Carga_Tools
+   DialogLibraries.loadLibrary(&quot;SanityCheck&quot;)
+   oDlgProps = 
CreateUnoDialog(DialogLibraries.getByName(&quot;SanityCheck&quot;).getByName(&quot;DlgCampos&quot;))
+   Call Campos.Cargar_Parametros
+   oDlgProps.execute
+   
+End sub
+
+ Rem ############
+Sub Cargar_Parametros
+
+ Dim oDocprops : oDocProps = ThisComponent.getDocumentProperties
+ Dim oUDP : oUDP = oDocProps().UserDefinedProperties   
+ Dim archivo : archivo = 
ConvertFromURL(GetFileNameWithoutExtension(ThisComponent.getURL(), 
&quot;/&quot;))
+
+ Dim version
+   With oDlgProps.getModel
+      .TiTle = C_Txt(15)
+     .getbyname(&quot;Lbl_Doc&quot;).label = C_Txt(0)
+     .getbyname(&quot;Lbl_DocT&quot;).label = C_Txt(1) 
+     .getbyname(&quot;Lbl_Conex&quot;).label = C_Txt(2)
+     .getbyname(&quot;Lbl_Guía&quot;).label = C_Txt(3)
+     .getbyname(&quot;Lbl_Version&quot;).label = C_Txt(4)
+  &apos;   .getbyname(&quot;Lbl_Capitulo&quot;).label = C_Txt(5)
+     .getbyname(&quot;Fr_Titulo&quot;).label = C_Txt(6)
+     .getbyname(&quot;Fr_Publicacion&quot;).label = C_Txt(7)
+     .getbyname(&quot;Btn_Corregir&quot;).label = C_Txt(9)
+     .getbyname(&quot;Btn_Cambia&quot;).label = C_Txt(10)
+     .getbyname(&quot;Lbl_Establecidas&quot;).label = C_Txt(13)
+ &apos;    .getbyname(&quot;List_Mes&quot;).StringItemList = Lista
+     .getbyname(&quot;Lbl_Archivo&quot;).label = archivo
+     .getbyname(&quot;Lbl_DocTitle&quot;).label = oDocProps.Title
+
+     If oDocProps.TemplateName &lt;&gt; &quot;&quot; then 
+     .getbyname(&quot;Lbl_Plantilla&quot;).label = oDocProps.TemplateName
+     End If
+
+     If NOT oUDP.getPropertySetInfo().hasPropertyByName(&quot;LibreOffice 
Version&quot;) then
+       .getbyname(&quot;Num_Version&quot;).Value = 24
+       .getbyname(&quot;Num_Sub&quot;).Value = 2
+     Else
+       version = Split(Consulta(&quot;LibreOffice Version&quot;),&quot;.&quot;)
+       .getbyname(&quot;Num_Version&quot;).Value = Version(0)
+       .getbyname(&quot;Num_Sub&quot;).Value = Version(1)
+     End If    
+     .getbyname(&quot;Tx_Guia&quot;).Text = Consulta(&quot;Guide Name&quot;)
+&apos;     .getbyname(&quot;Num_Cap&quot;).Value = Consulta(&quot;Chapter 
Number&quot;)
+     .getbyname(&quot;Tx_Cap_N&quot;).Text = Consulta(&quot;Chapter 
Number&quot;)
+     .getbyname(&quot;Tx_Cap_T&quot;).Text = Consulta(&quot;Chapter 
Title&quot;)
+     .getbyname(&quot;Lbl_Mes&quot;).Label = Consulta(&quot;Month&quot;)
+     If Consulta(&quot;Year&quot;) = &quot;&quot; then
+       .getbyname(&quot;Num_Ano&quot;).Value = 2024
+     else
+       .getbyname(&quot;Num_Ano&quot;).Value = CSng(Consulta(&quot;Year&quot;))
+     End If
+     .getbyname(&quot;Num_Version&quot;).Enabled = True
+     .getbyname(&quot;Num_Sub&quot;).Enabled = True
+     .getbyname(&quot;Tx_Guia&quot;).Enabled = True
+&apos;     .getbyname(&quot;Num_Cap&quot;).Enabled = True
+     .getbyname(&quot;Tx_Cap_N&quot;).Enabled = True
+     .getbyname(&quot;Tx_Cap_T&quot;).Enabled = True
+     .getbyname(&quot;List_Mes&quot;).EnableVisible = True    
+     .getbyname(&quot;Num_Ano&quot;).Enabled = True
+     .getbyname(&quot;Lbl_Establecidas&quot;).EnableVisible = False
+     .getbyname(&quot;Btn_Corregir&quot;).EnableVisible = False
+     .getbyname(&quot;Btn_Salir&quot;).Label = C_Txt(12)
+     .getbyname(&quot;Btn_Cambia&quot;).EnableVisible = True
+   End With
+End Sub
+
+ Rem ############
+Sub Cargar_Parametros2
+   With oDlgProps.getModel
+     .getbyname(&quot;Num_Version&quot;).Enabled = False
+     .getbyname(&quot;Num_Sub&quot;).Enabled = False
+     .getbyname(&quot;Tx_Guia&quot;).Enabled = False
+&apos;     .getbyname(&quot;Num_Cap&quot;).Enabled = False
+     .getbyname(&quot;Tx_Cap_N&quot;).Enabled = False
+     .getbyname(&quot;Tx_Cap_T&quot;).Enabled = False
+     .getbyname(&quot;Lbl_Mes&quot;).Label = Consulta(&quot;Month&quot;)
+     .getbyname(&quot;List_Mes&quot;).EnableVisible = False
+     .getbyname(&quot;Num_Ano&quot;).Enabled = False
+     .getbyname(&quot;Lbl_Establecidas&quot;).EnableVisible = True
+     .getbyname(&quot;Btn_Corregir&quot;).EnableVisible = True
+     .getbyname(&quot;Btn_Salir&quot;).Label = C_Txt(11)
+     .getbyname(&quot;Btn_Cambia&quot;).EnableVisible = False
+   End With
+End Sub
+
+ Rem ############
+Sub Onbtn_Establecer(oEv)
+
+ Dim Dato as String
+ Dim oDocprops : oDocProps = ThisComponent.getDocumentProperties
+  oDlgProps = oEv.Source.Context
+
+   If oDlgProps.getControl(&quot;List_Mes&quot;).SelectedItem() = &quot;&quot; 
Then
+     Msgbox (C_Txt(17),,Extension)
+     exit sub
+   End If
+
+   With oDlgProps.getModel  
+     Dato = .getbyname(&quot;Tx_Guia&quot;).Text
+     Establece_UDP(&quot;Guide Name&quot;, Dato)
+     Dato = .getbyname(&quot;Num_Version&quot;).Value &amp; &quot;.&quot; 
&amp; .getbyname(&quot;Num_Sub&quot;).Value
+     Establece_UDP(&quot;LibreOffice Version&quot;, Dato)
+&apos;     Dato = .getbyname(&quot;Num_Cap&quot;).Value &apos;en lugar de 
Tx_Cap_N
+&apos;     Establece_UDP(&quot;Chapter Number&quot;,Dato)
+     Dato = .getbyname(&quot;Tx_Cap_N&quot;).Text
+     Establece_UDP(&quot;Chapter Number&quot;, Dato)
+     Dato = .getbyname(&quot;Tx_Cap_T&quot;).Text
+     Establece_UDP(&quot;Chapter Title&quot;, Dato)
+     Dato =  oDlgProps.getControl(&quot;List_Mes&quot;).SelectedItem() 
&apos;No model, sino control
+     Establece_UDP(&quot;Month&quot;, Dato)
+     Dato = CStr(.getbyname(&quot;Num_Ano&quot;).Value)
+     Establece_UDP(&quot;Year&quot;, Dato)
+&apos;     Dato = C_Txt(5) &amp; .getbyname(&quot;Num_Cap&quot;).Value &amp; 
&quot;, &quot; &amp; .getbyname(&quot;Tx_Cap_T&quot;).Text
+&apos;     oDocProps.Title = Dato
+&apos;     Dato = .getbyname(&quot;Tx_Cap_N&quot;).Text &amp; &quot;, &quot; 
&amp; .getbyname(&quot;Tx_Cap_T&quot;).Text
+&apos;     oDocProps.Title = Dato
+     Dato =  .getbyname(&quot;Tx_Guia&quot;).Text &amp; Chr(13) 
+     If oDocProps.TemplateName &lt;&gt; &quot;&quot; then
+       Dato = Dato &amp; C_Txt(14) &amp; oDocProps.TemplateName
+     else
+       Dato = Dato &amp; &quot;&quot;
+     End If
+     oDocProps.Description = Dato
+     
+   End With
+  Call Campos.Cargar_Parametros2
+End Sub
+
+ Rem ############
+Sub onBtn_Revisar(oEv)
+
+   oDlgProps = oEv.Source.Context
+   Call Campos.Cargar_Parametros
+End Sub
+
+ Rem ############
+Sub onBtn_Salir(oEv)
+
+   oDlgProps = oEv.Source.Context
+   oDlgProps.EndExecute
+End Sub
+
+ Rem ############
+Function Consulta(ByVal Propiedad)
+ Dim oUDP : oUDP = ThisComponent.getDocumentProperties().UserDefinedProperties
+ If NOT oUDP.getPropertySetInfo().hasPropertyByName(Propiedad) then
+ Consulta = &quot;&quot;
+ Else
+ Consulta = oUDP.getPropertyValue(Propiedad)
+ end if 
+End Function  
+
+ Rem ############
+Sub Establece_UDP(sProp, sVal)
+
+ Dim oDocprops : oDocProps = ThisComponent.getDocumentProperties()
+ Dim oUDP : oUDP = oDocProps().UserDefinedProperties
+
+   If NOT oUDP.getPropertySetInfo().hasPropertyByName(sProp) Then
+     oUDP.addProperty(sProp, _
+     com.sun.star.beans.PropertyAttribute.MAYBEVOID + _
+     com.sun.star.beans.PropertyAttribute.REMOVEABLE + _
+     com.sun.star.beans.PropertyAttribute.MAYBEDEFAULT, sVal)
+    Else
+     oUDP.setPropertyValue(Sprop, sVal)
+    End If
+&apos;removeProperty(name)
+End Sub
+
+ REM ================= Fin Propiedades 
===========================================
+</script:module>
\ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/Comunes.xba 
b/userguides/sanitycheck/SanityCheck/Comunes.xba
new file mode 100644
index 00000000..c99ac5d7
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/Comunes.xba
@@ -0,0 +1,322 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" 
"module.dtd">
+<script:module xmlns:script="http://openoffice.org/2000/script"; 
script:name="Comunes" script:language="StarBasic" 
script:moduleType="normal">REM  *****  BASIC  Módulo Comunes *****
+Option Explicit
+
+ Const  Extension as string  = &quot;Revisiones v 1.0.0&quot; 
+ Dim oDlgAsist as Object
+ Dim paso &apos;as integer
+
+ Rem ############
+Sub Dlg_Asist
+
+   Call L10n.Trad_Comunes
+   If  Thiscomponent.HasLocation = false then : Msgbox (V_Txt(19),0+48+0, 
Extension) : Exit Sub : End If
+   If Imagenes.F_Prueba_Sel = 0 Then : Exit Sub : End If
+
+   DialogLibraries.loadLibrary(&quot;SanityCheck&quot;)
+   oDlgAsist = 
CreateUnoDialog(DialogLibraries.getByName(&quot;SanityCheck&quot;).getByName(&quot;DlgAsistente&quot;))
+ &apos;  If Not IsMissing(paso) then: oDlgAsist.Model.Step(paso): else:  
oDlgAsist.Model.Step(1): end if
+
+   With oDlgAsist.getModel
+     .Step = 1 
+     .getbyname(&quot;Btn_Atras&quot;).Label = V_Txt(1)
+     .getbyname(&quot;Btn_Salir&quot;).Label = V_Txt(3)
+     .getbyname(&quot;Btn_Campos&quot;).Label = V_Txt(4)
+     .getbyname(&quot;Btn_Estilos&quot;).Label = V_Txt(5)
+     .getbyname(&quot;Btn_Limpiar&quot;).Label = V_Txt(6)
+     .getbyname(&quot;Btn_Renombrar&quot;).Label = V_Txt(7)
+     .getbyname(&quot;Btn_Corregir&quot;).Label = V_Txt(8)
+     .getbyname(&quot;Btn_Leyendas&quot;).Label = V_Txt(9)
+&apos;     .getbyname(&quot;Tx_Registro&quot;).Text = &quot;&quot;
+   End With
+ Call Comunes.ParametrosAsistente
+&apos;  If Not IsMissing(paso) then: oDlgAsist.Model.Step(paso): end if&apos;: 
else:  oDlgAsist.Model.Step(1): end if
+   oDlgAsist.execute
+End Sub
+
+ Rem ############
+Sub ParametrosAsistente&apos;(oEv)
+
+   With oDlgAsist.getModel
+     .Title = V_Txt(0)
+     .getbyname(&quot;Lbl_N_Pagina&quot;).label = oDlgAsist.Model.Step()
+     .getbyname(&quot;Btn_Atras&quot;).Label = V_Txt(1)
+     .getbyname(&quot;Btn_Omitir&quot;).Label = V_Txt(2)
+
+     Select case oDlgAsist.Model.Step()
+       Case 1 &apos;Campos
+         .getbyName(&quot;Lbl_Pagina&quot;).Label = V_Txt(10)
+         .getbyName(&quot;Lbl_P_Info&quot;).enableVisible = True
+         .getByName(&quot;Lbl_P_Info&quot;).Label = V_Txt(11)
+         .getbyName(&quot;Tx_Ayuda&quot;).Text = V_Txt(32)
+       Case 2 &apos;Estilos
+         .getbyName(&quot;Lbl_Pagina&quot;).Label = V_Txt(12)
+         .getbyName(&quot;Lbl_P_Info&quot;).enableVisible = True
+         .getByName(&quot;Lbl_P_Info&quot;).Label = V_Txt(13)
+         .getbyName(&quot;Tx_Ayuda&quot;).Text = V_Txt(33)
+       Case 3 &apos;Renombrar
+         .getbyName(&quot;Lbl_Pagina&quot;).Label = V_Txt(17)
+         .getbyName(&quot;Lbl_P_Info&quot;).enableVisible = True
+         .getByName(&quot;Lbl_P_Info&quot;).Label = V_Txt(18)
+         .getbyName(&quot;Tx_Ayuda&quot;).Text = V_Txt(35)        
+       Case 4 &apos;Limpiar
+         .getbyName(&quot;Lbl_Pagina&quot;).Label = V_Txt(14)
+         .getbyName(&quot;Lbl_P_Info&quot;).enableVisible = True
+         .getByName(&quot;Lbl_P_Info&quot;).Label = V_Txt(15)
+         .getbyName(&quot;Tx_Ayuda&quot;).Text = V_Txt(34)
+       Case 5 &apos;Corregir Imgs
+         .getbyName(&quot;Lbl_Pagina&quot;).Label = V_Txt(24)
+         .getbyName(&quot;Lbl_P_Info&quot;).enableVisible = True
+         .getByName(&quot;Lbl_P_Info&quot;).Label = V_Txt(25)
+         .getbyName(&quot;Tx_Ayuda&quot;).Text = V_Txt(36)
+       Case 6 &apos;Leyendas
+         .getbyName(&quot;Lbl_Pagina&quot;).Label = V_Txt(27)
+         .getbyName(&quot;Lbl_P_Info&quot;).enableVisible = True
+         .getByName(&quot;Lbl_P_Info&quot;).Label = V_Txt(28)
+         .getbyName(&quot;Tx_Ayuda&quot;).Text = V_Txt(37)
+       Case 7 &apos;Registro
+         .getbyName(&quot;Lbl_Pagina&quot;).Label = V_Txt(29)
+         .getbyName(&quot;Lbl_P_Info&quot;).enableVisible = False
+         .getbyName(&quot;Tx_Ayuda&quot;).Text = V_Txt(38)
+       Case -1 &apos;Ayuda
+         .getbyName(&quot;Lbl_Pagina&quot;).Label = V_Txt(31)
+         .getbyName(&quot;Lbl_P_Info&quot;).enableVisible = False
+     End select
+   End With
+End sub
+
+ Rem ############
+Sub OnBtn_Atras(oEv)
+
+   oDlgAsist = oEv.Source.Context
+   If oDlgAsist.Model.Step &lt;&gt; 1 then oDlgAsist.Model.Step = 
oDlgAsist.Model.Step - 1
+   With oDlgAsist.getModel
+     If oDlgAsist.Model.Step &lt;&gt; 7 then 
.getbyname(&quot;Btn_Omitir&quot;).EnableVisible = True &apos;3
+     If oDlgAsist.Model.Step = 1 then
+      .getbyname(&quot;Btn_Atras&quot;).EnableVisible = False
+     else 
+      .getbyname(&quot;Btn_Atras&quot;).EnableVisible = True
+     end If 
+   End WIth
+   Call Comunes.ParametrosAsistente   
+End Sub
+
+ Rem ############
+Sub OnBtn_Omitir(oEv)&apos;Siguiente
+
+  oDlgAsist = oEv.Source.Context
+  With oDlgAsist.getModel
+     .Step = .Step + 1
+   Call Comunes.ParametrosAsistente
+     If oDlgAsist.Model.Step = 1 then
+      .getbyname(&quot;Btn_Atras&quot;).EnableVisible = False
+     else 
+      .getbyname(&quot;Btn_Atras&quot;).EnableVisible = True
+     end If 
+   If oDlgAsist.Model.Step = 7 then 
.getbyname(&quot;Btn_Omitir&quot;).EnableVisible = False&apos;3
+  End With
+End Sub
+
+ Rem ############
+Sub OnBtn_Campos(oEv)
+
+  oDlgAsist = oEv.Source.Context
+  Call Campos.Dlg_Campos
+  oDlgAsist.getModel.getbyname(&quot;Btn_Omitir&quot;).Label = V_Txt(30)
+ Dim s : s = oDlgAsist.getModel.getbyname(&quot;Tx_Registro&quot;).Text
+   s = s &amp; V_Txt(20)  &amp; Chr(13)
+   oDlgAsist.getModel.getbyname(&quot;Tx_Registro&quot;).Text = s
+End Sub
+
+ Rem ############
+Sub OnBtn_Estilos(oEv)
+
+   oDlgAsist = oEv.Source.Context
+   With oDlgAsist.Model
+     .getbyname(&quot;Btn_Omitir&quot;).Label = V_Txt(30)
+     Call Estilos.ComprobacionEstilos
+    Dim s : s = .getbyname(&quot;Tx_Registro&quot;).Text
+     s = s &amp; V_Txt(21) &amp; Chr(13)
+     .getbyname(&quot;Tx_Registro&quot;).Text = s
+   End With   
+End Sub
+
+ Rem ############
+Sub OnBtn_Limpiar(oEv)
+
+   oDlgAsist = oEv.Source.Context
+   oDlgAsist.getModel.getbyname(&quot;Btn_Omitir&quot;).Label = V_Txt(30)
+   Call Formatos.Dlg_Formatos
+ Dim s : s = oDlgAsist.getModel.getbyname(&quot;Tx_Registro&quot;).Text
+   s = s &amp; V_Txt(22)  &amp; Chr(13)
+   oDlgAsist.getModel.getbyname(&quot;Tx_Registro&quot;).Text = s
+End Sub
+
+ Rem ############
+Sub OnBtn_Renombrar(oEv)
+
+   oDlgAsist = oEv.Source.Context
+   oDlgAsist.getModel.getbyname(&quot;Btn_Omitir&quot;).Label = V_Txt(30)   
+ Dim s : s = oDlgAsist.getModel.getbyname(&quot;Tx_Registro&quot;).Text
+   s = s &amp; V_Txt(23)  &amp; Chr(13)
+   oDlgAsist.getModel.getbyname(&quot;Tx_Registro&quot;).Text = s
+   Call Renombrar.Dlg_Renombrar
+
+End sub  
+
+ Rem ############
+Sub OnBtn_Corregir(oEv)
+
+   oDlgAsist = oEv.Source.Context
+   oDlgAsist.getModel.getbyname(&quot;Btn_Omitir&quot;).Label = V_Txt(30)
+ Dim ajuste : ajuste = F_Ajuste_Imagenes_Marcos
+ Dim s : s = oDlgAsist.getModel.getbyName(&quot;Tx_Registro&quot;).Text
+   s = s &amp; Ajuste
+   oDlgAsist.getModel.getbyName(&quot;Tx_Registro&quot;).Text = s
+End Sub
+
+ Rem ############
+Sub OnBtn_SubirLeyendas(oEv)
+
+   oDlgAsist = oEv.Source.Context
+ Dim ajuste : ajuste = F_AlternarLeyenda   
+   With oDlgAsist.getModel
+     .getbyname(&quot;Btn_Omitir&quot;).Label = V_Txt(30)
+     Dim s : s = .getbyName(&quot;Tx_Registro&quot;).text
+     s = s &amp; Ajuste
+     .getbyName(&quot;Tx_Registro&quot;).Text = s
+   End With
+End Sub
+
+ Rem ############
+Sub OnBtn_Revisar(oEv)
+
+  oDlgAsist = oEv.Source.Context
+  oDlgAsist.EndExecute
+  Call Imagenes.DlgImagenes
+End Sub
+
+ Rem ############
+Sub OnBtn_Ayuda(oEv)
+
+  oDlgAsist = oEv.Source.Context
+ Paso =  oDlgAsist.Model.Step 
+ oDlgAsist.Model.Step = -1
+ 
+   With oDlgAsist.getModel
+     .getbyname(&quot;Btn_Volver&quot;).EnableVisible = True
+     .getbyname(&quot;Lbl_N_Pagina&quot;).EnableVisible = False
+     .getbyname(&quot;Btn_Ayuda&quot;).EnableVisible = False
+     .getbyname(&quot;Btn_Omitir&quot;).EnableVisible = False
+     .getbyname(&quot;Btn_Atras&quot;).EnableVisible = False
+     .getbyname(&quot;Btn_Salir&quot;).EnableVisible = False
+     .getbyname(&quot;Lbl_P_Info&quot;).EnableVisible = False 
+   End WIth
+End Sub
+
+ Rem ############
+Sub OnBtn_Volver(oEv)
+
+  oDlgAsist = oEv.Source.Context
+
+   With oDlgAsist.getModel
+     .Step = Paso
+     .getbyname(&quot;Btn_Volver&quot;).EnableVisible = False
+     .getbyname(&quot;Lbl_N_Pagina&quot;).EnableVisible = True
+     .getbyname(&quot;Btn_Ayuda&quot;).EnableVisible = True
+     .getbyname(&quot;Btn_Atras&quot;).EnableVisible = True
+     .getbyname(&quot;Btn_Salir&quot;).EnableVisible = True
+     .getbyname(&quot;Lbl_P_Info&quot;).EnableVisible = True
+     If oDlgAsist.Model.Step = 7 Then
+       .getbyname(&quot;Btn_Omitir&quot;).EnableVisible = False
+     else
+       .getbyname(&quot;Btn_Omitir&quot;).EnableVisible = True
+     End If
+   End WIth
+   Call Comunes.ParametrosAsistente       
+End Sub
+
+ Rem ############
+Sub InsertAnnotation(oParSection As Object, oCursor As Object, sMytext As 
String)
+
+   Dim oAnno As Object
+   oAnno = 
ThisComponent.createInstance(&quot;com.sun.star.text.TextField.Annotation&quot;)
+   oAnno.Content = sMytext
+   oAnno.Author = Extension &apos;MyName
+   oAnno.DateTimeValue = Fecha
+   oParSection.Text.insertTextContent(oCursor, oAnno, True)
+End Sub
+
+ Rem ############
+Function Fecha
+Dim oDT As New com.sun.star.util.DateTime
+   With oDT
+   .Day = Day(Now) : .Month = Month(Now): .Year = Year(Now) 
+   .Hours = Hour(Now) : .Minutes = Minute(Now) : .Seconds = Second(Now)
+     &apos;.NanoSeconds = 300&apos;parece que no funciona
+   End With
+   Fecha = oDT
+End Function
+
+ Rem ############
+Function Carga_Tools
+Dim Nombre as String : Nombre = &quot;Tools&quot;
+   If GlobalScope.BasicLibraries.hasByName(Nombre) Then
+     if Not GlobalScope.BasicLibraries.isLibraryLoaded(Nombre) Then
+       GlobalScope.BasicLibraries.LoadLibrary(Nombre)
+     end If
+   Else
+     Msgbox &quot;La biblioteca &quot; &amp; Nombre &amp; &quot; no existe , 
la macro dará errores&quot;
+   End If
+End Function
+
+
+ Rem ############
+Function F_LOVersion() As String
+&apos;-----------------------------------------------------------------------------------------
+&apos; Devuelve la versión de LibreOffice
+ Dim oSet, oCfgProvider
+ Dim aAux(0) As New com.sun.star.beans.PropertyValue
+ 
+   oCfgProvider = 
createUnoService(&quot;com.sun.star.configuration.ConfigurationProvider&quot;)
+   aAux(0).Name = &quot;nodepath&quot;
+   aAux(0).Value = &quot;/org.openoffice.Setup/Product&quot;
+   oSet = 
oCfgProvider.createInstanceWithArguments(&quot;com.sun.star.configuration.ConfigurationAccess&quot;,
 aAux())
+  F_LOVersion = oSet.getByName(&quot;ooSetupVersion&quot;)
+End Function
+
+ REM ================= Fin Comunes 
===========================================================
+
+
+ Rem ############
+Function MyName
+   Dim aProps(0) As New com.sun.star.beans.PropertyValue
+   Dim oRegKey, oConfig As Object
+   aProps(0).Name  = &quot;nodepath&quot;
+   aProps(0).Value = &quot;/org.openoffice.UserProfile/Data/&quot;
+   oConfig = 
createUnoService(&quot;com.sun.star.configuration.ConfigurationProvider&quot;)
+   oRegKey = 
oConfig.createInstanceWithArguments(&quot;com.sun.star.configuration.ConfigurationUpdateAccess&quot;,
 aProps())
+   MyName = oRegKey.givenname &amp; &quot; &quot; &amp; oRegKey.sn
+
+End Function
+
+ Rem ############ posible incorporación? Recargar documento.
+sub ActualizarTodo
+rem ----------------------------------------------------------------------
+rem define variables
+dim document   as object
+dim dispatcher as object
+rem ----------------------------------------------------------------------
+rem get access to the document
+document   = ThisComponent.CurrentController.Frame
+dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
+
+rem ----------------------------------------------------------------------
+dispatcher.executeDispatch(document, &quot;.uno:UpdateAll&quot;, &quot;&quot;, 
0, Array())
+end sub
+
+
+
+
+</script:module>
diff --git a/userguides/sanitycheck/SanityCheck/DlgAsistente.xdl 
b/userguides/sanitycheck/SanityCheck/DlgAsistente.xdl
new file mode 100644
index 00000000..c81386ab
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/DlgAsistente.xdl
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" 
"dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog"; 
xmlns:script="http://openoffice.org/2000/script"; dlg:id="Asistente" 
dlg:tab-index="0" dlg:left="83" dlg:top="110" dlg:width="222" dlg:height="136" 
dlg:page="1" dlg:closeable="true" dlg:moveable="true" dlg:title="Titulo">
+ <dlg:styles>
+  <dlg:style dlg:style-id="0" dlg:font-height="9" dlg:font-weight="100"/>
+  <dlg:style dlg:style-id="1" dlg:text-color="0xff" dlg:font-height="20" 
dlg:font-weight="150"/>
+  <dlg:style dlg:style-id="2" dlg:font-height="18" dlg:font-weight="150"/>
+  <dlg:style dlg:style-id="3" dlg:font-height="13" dlg:font-weight="150"/>
+ </dlg:styles>
+ <dlg:bulletinboard>
+  <dlg:button dlg:id="Btn_Renombrar" dlg:tab-index="0" dlg:left="77" 
dlg:top="115" dlg:width="38" dlg:height="12" dlg:page="3" 
dlg:value="Btn_Renombrar">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Renombrar?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:button dlg:style-id="0" dlg:id="Btn_Atras" dlg:tab-index="2" 
dlg:left="30" dlg:top="115" dlg:width="35" dlg:height="12" dlg:tabstop="false" 
dlg:value="Btn_Atras">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Atras?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:text dlg:id="Label3" dlg:tab-index="4" dlg:left="135" dlg:top="37" 
dlg:width="2" dlg:height="0" dlg:page="1" dlg:value="Label3"/>
+  <dlg:button dlg:id="Btn_Salir" dlg:tab-index="5" dlg:left="182" 
dlg:top="115" dlg:width="30" dlg:height="12" dlg:tabstop="false" 
dlg:value="Btn_Salir" dlg:button-type="cancel"/>
+  <dlg:button dlg:id="Btn_Corregir" dlg:tab-index="6" dlg:left="80" 
dlg:top="115" dlg:width="34" dlg:height="12" dlg:page="5" 
dlg:value="Btn_Corregir">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Corregir?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:button dlg:id="Btn_Leyendas" dlg:tab-index="7" dlg:left="77" 
dlg:top="115" dlg:width="38" dlg:height="12" dlg:page="6" 
dlg:value="Btn_Leyendas">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_SubirLeyendas?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:text dlg:id="Label2" dlg:tab-index="9" dlg:left="29" dlg:top="89" 
dlg:width="183" dlg:height="26" dlg:page="7" dlg:value="Al pulsar el botón 
&quot;Revisar&quot;, se cierra este asistente y abrirá el diálogo 
&quot;Comprobar&quot;.  Lo puedes usar para recorrer las imágenes del 
documento, y modificar  sus propiedades." dlg:multiline="true"/>
+  <dlg:button dlg:id="Btn_Revisar" dlg:tab-index="10" dlg:visible="false" 
dlg:left="79" dlg:top="115" dlg:width="40" dlg:height="12" dlg:page="7" 
dlg:value="Revisar">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Revisar?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:button dlg:style-id="0" dlg:id="Btn_Omitir" dlg:tab-index="1" 
dlg:left="129" dlg:top="115" dlg:width="35" dlg:height="12" dlg:tabstop="false" 
dlg:value="Btn_Omitir">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Omitir?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:textfield dlg:id="TextField2" dlg:tab-index="12" dlg:left="13" 
dlg:top="93" dlg:width="0" dlg:height="2" dlg:page="4"/>
+  <dlg:textfield dlg:id="Tx_Registro" dlg:tab-index="11" dlg:left="42" 
dlg:top="17" dlg:width="171" dlg:height="66" dlg:page="7" dlg:vscroll="true" 
dlg:multiline="true" dlg:readonly="true"/>
+  <dlg:button dlg:style-id="1" dlg:id="Btn_Ayuda" dlg:tab-index="13" 
dlg:left="5" dlg:top="32" dlg:width="16" dlg:height="19" dlg:tabstop="false" 
dlg:value="?">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Ayuda?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:button dlg:id="Btn_Volver" dlg:tab-index="15" dlg:left="99" 
dlg:top="115" dlg:width="30" dlg:height="12" dlg:page="-1" dlg:tabstop="false" 
dlg:value="Volver">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Volver?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:textfield dlg:id="Tx_Ayuda" dlg:tab-index="14" dlg:left="27" 
dlg:top="13" dlg:width="188" dlg:height="95" dlg:page="-1" dlg:vscroll="true" 
dlg:multiline="true" dlg:readonly="true" dlg:value="Tx_Ayuda"/>
+  <dlg:text dlg:style-id="2" dlg:id="Lbl_N_Pagina" dlg:tab-index="3" 
dlg:left="7" dlg:top="6" dlg:width="12" dlg:height="13" dlg:value="X" 
dlg:align="center"/>
+  <dlg:text dlg:style-id="3" dlg:id="Lbl_Pagina" dlg:tab-index="16" 
dlg:left="44" dlg:top="0" dlg:width="138" dlg:height="13" 
dlg:value="Lbl_Pagina" dlg:align="center" dlg:valign="center"/>
+  <dlg:text dlg:id="Lbl_P_Info" dlg:tab-index="8" dlg:left="44" dlg:top="13" 
dlg:width="171" dlg:height="90" dlg:value="Lbl_P_Info" dlg:multiline="true"/>
+  <dlg:button dlg:id="Btn_Campos" dlg:tab-index="18" dlg:left="80" 
dlg:top="115" dlg:width="35" dlg:height="12" dlg:page="1" 
dlg:value="Btn_Campos">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Campos?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:button dlg:id="Btn_Estilos" dlg:tab-index="17" dlg:left="80" 
dlg:top="115" dlg:width="34" dlg:height="12" dlg:page="2" 
dlg:value="Btn_Estilos">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Estilos?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:button dlg:id="Btn_Limpiar" dlg:tab-index="19" dlg:left="80" 
dlg:top="115" dlg:width="34" dlg:height="12" dlg:page="4" 
dlg:value="Btn_Limpiar">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Limpiar?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:fixedline dlg:id="FixedLine1" dlg:tab-index="20" dlg:left="25" 
dlg:top="6" dlg:width="2" dlg:height="102" dlg:align="vertical"/>
+ </dlg:bulletinboard>
+</dlg:window>
\ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/DlgCampos.xdl 
b/userguides/sanitycheck/SanityCheck/DlgCampos.xdl
new file mode 100644
index 00000000..0fe37ad5
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/DlgCampos.xdl
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" 
"dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog"; 
xmlns:script="http://openoffice.org/2000/script"; dlg:id="Campos" dlg:left="132" 
dlg:top="116" dlg:width="233" dlg:height="144" dlg:page="2" 
dlg:closeable="true" dlg:moveable="true" dlg:title="Campos  personalizados  del 
documento">
+ <dlg:styles>
+  <dlg:style dlg:style-id="0" dlg:background-color="0xffffff" 
dlg:font-height="11" dlg:font-weight="150"/>
+  <dlg:style dlg:style-id="1" dlg:font-height="9" dlg:font-weight="100"/>
+  <dlg:style dlg:style-id="2" dlg:font-height="10" dlg:font-weight="150"/>
+  <dlg:style dlg:style-id="3" dlg:font-height="10"/>
+ </dlg:styles>
+ <dlg:bulletinboard>
+  <dlg:textfield dlg:id="TextField6" dlg:tab-index="13" dlg:left="22" 
dlg:top="85" dlg:width="0" dlg:height="2"/>
+  <dlg:text dlg:id="Lbl_Guía" dlg:tab-index="12" dlg:left="19" dlg:top="45" 
dlg:width="24" dlg:height="10" dlg:value="Guía:" dlg:valign="center"/>
+  <dlg:text dlg:id="Lbl_Version" dlg:tab-index="14" dlg:left="127" 
dlg:top="45" dlg:width="40" dlg:height="10" dlg:value="Lbl_Version" 
dlg:valign="center"/>
+  <dlg:textfield dlg:id="Tx_Guia" dlg:tab-index="1" dlg:left="45" dlg:top="45" 
dlg:width="77" dlg:height="10" dlg:value="Tx_Guia"/>
+  <dlg:button dlg:id="Btn_Cambia" dlg:tab-index="8" dlg:left="105" 
dlg:top="127" dlg:width="46" dlg:height="12" dlg:value="Establecer">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Campos.Onbtn_Establecer?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:text dlg:id="Lbl_Plantilla" dlg:tab-index="16" dlg:left="84" 
dlg:top="30" dlg:width="131" dlg:height="9" dlg:valign="center"/>
+  <dlg:numericfield dlg:id="Num_Ano" dlg:tab-index="7" dlg:left="160" 
dlg:top="102" dlg:width="42" dlg:height="12" dlg:strict-format="true" 
dlg:decimal-accuracy="0" dlg:value-min="2024" dlg:value-max="2050" 
dlg:spin="true"/>
+  <dlg:text dlg:style-id="0" dlg:id="Label1" dlg:tab-index="17" dlg:left="78" 
dlg:top="70" dlg:width="3" dlg:height="11" dlg:value="," dlg:align="center"/>
+  <dlg:text dlg:style-id="0" dlg:id="Label2" dlg:tab-index="18" dlg:left="197" 
dlg:top="45" dlg:width="5" dlg:height="11" dlg:value="." dlg:align="center" 
dlg:valign="center"/>
+  <dlg:text dlg:id="Lbl_Archivo" dlg:tab-index="15" dlg:left="62" dlg:top="9" 
dlg:width="121" dlg:height="9" dlg:value="lbl_Archivo" dlg:valign="center"/>
+  <dlg:numericfield dlg:id="Num_Version" dlg:tab-index="2" dlg:left="179" 
dlg:top="45" dlg:width="19" dlg:height="10" dlg:align="right" 
dlg:strict-format="true" dlg:decimal-accuracy="0" dlg:value="24" 
dlg:value-min="6" dlg:value-max="44"/>
+  <dlg:numericfield dlg:id="Num_Sub" dlg:tab-index="3" dlg:left="202" 
dlg:top="45" dlg:width="15" dlg:height="10" dlg:strict-format="true" 
dlg:decimal-accuracy="0" dlg:value="2" dlg:value-min="1" dlg:value-max="12"/>
+  <dlg:text dlg:id="Label5" dlg:tab-index="21" dlg:left="35" dlg:top="26" 
dlg:width="0" dlg:height="0" dlg:value="Label5"/>
+  <dlg:text dlg:id="Lbl_DocTitle" dlg:tab-index="20" dlg:left="56" 
dlg:top="19" dlg:width="160" dlg:height="10" dlg:value="Lbl_DocTitle" 
dlg:valign="center"/>
+  <dlg:textfield dlg:id="Tx_Cap_T" dlg:tab-index="5" dlg:left="83" 
dlg:top="70" dlg:width="138" dlg:height="10" dlg:maxlength="60" 
dlg:value="Tx_Cap_T"/>
+  <dlg:textfield dlg:style-id="1" dlg:id="Tx_Cap_N" dlg:tab-index="4" 
dlg:left="20" dlg:top="70" dlg:width="57" dlg:height="10" dlg:valign="center" 
dlg:value="Tx_Cap_N"/>
+  <dlg:text dlg:style-id="2" dlg:id="Lbl_Establecidas" dlg:tab-index="22" 
dlg:left="17" dlg:top="127" dlg:width="88" dlg:height="12" 
dlg:value="Lbl_Establecidas" dlg:align="center" dlg:valign="center"/>
+  <dlg:button dlg:id="Btn_Salir" dlg:tab-index="10" dlg:left="167" 
dlg:top="127" dlg:width="35" dlg:height="12" dlg:value="Cancelar">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Campos.onBtn_Salir?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:text dlg:id="Lbl_Doc" dlg:tab-index="0" dlg:left="19" dlg:top="8" 
dlg:width="37" dlg:height="10" dlg:value="Lbl_Doc" dlg:valign="center"/>
+  <dlg:text dlg:id="Lbl_DocT" dlg:tab-index="19" dlg:left="19" dlg:top="19" 
dlg:width="34" dlg:height="8" dlg:value="Lbl_DocT" dlg:valign="center"/>
+  <dlg:text dlg:id="Lbl_Conex" dlg:tab-index="9" dlg:left="19" dlg:top="30" 
dlg:width="63" dlg:height="10" dlg:value="Lbl_Conex" dlg:valign="center"/>
+  <dlg:menulist dlg:id="List_Mes" dlg:tab-index="6" dlg:left="24" 
dlg:top="102" dlg:width="73" dlg:height="12" dlg:spin="true" dlg:linecount="12">
+   <dlg:menupopup>
+    <dlg:menuitem dlg:value="Enero"/>
+    <dlg:menuitem dlg:value="Febrero"/>
+    <dlg:menuitem dlg:value="Marzo"/>
+    <dlg:menuitem dlg:value="Abril"/>
+    <dlg:menuitem dlg:value="Mayo"/>
+    <dlg:menuitem dlg:value="Junio"/>
+    <dlg:menuitem dlg:value="Julio"/>
+    <dlg:menuitem dlg:value="Agosto"/>
+    <dlg:menuitem dlg:value="Septiembre"/>
+    <dlg:menuitem dlg:value="Octubre"/>
+    <dlg:menuitem dlg:value="Noviembre"/>
+    <dlg:menuitem dlg:value="Diciembre"/>
+   </dlg:menupopup>
+  </dlg:menulist>
+  <dlg:titledbox dlg:id="Fr_Publicacion" dlg:tab-index="23" dlg:left="12" 
dlg:top="92" dlg:width="212" dlg:height="27" dlg:page="2">
+   <dlg:title dlg:value="Fr_Publicacion"/>
+  </dlg:titledbox>
+  <dlg:text dlg:style-id="3" dlg:id="Lbl_Mes" dlg:tab-index="24" 
dlg:left="107" dlg:top="101" dlg:width="42" dlg:height="12" dlg:page="2" 
dlg:value="Lbl_Mes" dlg:align="right" dlg:valign="center"/>
+  <dlg:titledbox dlg:id="Fr_Titulo" dlg:tab-index="25" dlg:left="12" 
dlg:top="60" dlg:width="212" dlg:height="24" dlg:page="2">
+   <dlg:title dlg:value="Fr_Titulo"/>
+  </dlg:titledbox>
+  <dlg:button dlg:id="Btn_Corregir" dlg:tab-index="11" dlg:left="118" 
dlg:top="127" dlg:width="35" dlg:height="12" dlg:value="Btn_Corregir">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Campos.onBtn_Revisar?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+ </dlg:bulletinboard>
+</dlg:window>
\ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/DlgEstilos.xdl 
b/userguides/sanitycheck/SanityCheck/DlgEstilos.xdl
new file mode 100644
index 00000000..4a5dd1e0
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/DlgEstilos.xdl
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" 
"dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog"; 
xmlns:script="http://openoffice.org/2000/script"; dlg:style-id="4" 
dlg:id="DlgEstilos" dlg:left="53" dlg:top="38" dlg:width="326" dlg:height="196" 
dlg:page="1" dlg:closeable="true" dlg:moveable="true" dlg:title="Gestión de 
estilos">
+ <dlg:styles>
+  <dlg:style dlg:style-id="0" dlg:text-color="0x127622" dlg:font-height="11" 
dlg:font-weight="150"/>
+  <dlg:style dlg:style-id="1" dlg:font-height="10" dlg:font-weight="150" 
dlg:font-underline="single"/>
+  <dlg:style dlg:style-id="2" dlg:font-height="10" dlg:font-weight="150"/>
+  <dlg:style dlg:style-id="3" dlg:text-color="0xff" dlg:font-height="24" 
dlg:font-weight="150"/>
+  <dlg:style dlg:style-id="4" dlg:font-weight="150"/>
+ </dlg:styles>
+ <dlg:bulletinboard>
+  <dlg:button dlg:id="Btn_Eliminar_P" dlg:tab-index="2" dlg:left="265" 
dlg:top="88" dlg:width="49" dlg:height="15" dlg:page="1" 
dlg:help-text="Selecciona un estilo de la lista para eliminar" 
dlg:tabstop="true" dlg:value="Btn_Eliminar_P">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Estilos.OnBtEliminar_P?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:button dlg:id="Btn_Eliminar_C" dlg:tab-index="4" dlg:left="265" 
dlg:top="169" dlg:width="49" dlg:height="15" dlg:page="1" 
dlg:help-text="Selecciona un estilo de la lista para eliminar" 
dlg:tabstop="true" dlg:value="Btn_Eliminar_C">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Estilos.OnBtEliminar_C?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:menulist dlg:id="Lst_Eliminar_P" dlg:tab-index="1" dlg:left="137" 
dlg:top="33" dlg:width="120" dlg:height="70" dlg:page="1" dlg:tabstop="true" 
dlg:linecount="10">
+   <script:event script:event-name="on-itemstatechange" 
script:macro-name="vnd.sun.star.script:SanityCheck.Estilos.OnLstBox_P_Change?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:menulist>
+  <dlg:menulist dlg:id="Lst_Eliminar_C" dlg:tab-index="3" dlg:left="137" 
dlg:top="114" dlg:width="120" dlg:height="70" dlg:page="1" dlg:tabstop="true" 
dlg:multiselection="true" dlg:linecount="10">
+   <script:event script:event-name="on-itemstatechange" 
script:macro-name="vnd.sun.star.script:SanityCheck.Estilos.OnLstBox_C_Change?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:menulist>
+  <dlg:textfield dlg:id="Tx_C_Uso" dlg:tab-index="9" dlg:left="10" 
dlg:top="114" dlg:width="120" dlg:height="70" dlg:page="1" dlg:tabstop="false" 
dlg:vscroll="true" dlg:multiline="true" dlg:readonly="true" 
dlg:value="Tx_C_Uso"/>
+  <dlg:textfield dlg:id="Tx_P_Uso" dlg:tab-index="10" dlg:left="10" 
dlg:top="33" dlg:width="120" dlg:height="70" dlg:page="1" dlg:tabstop="false" 
dlg:vscroll="true" dlg:multiline="true" dlg:readonly="true" 
dlg:value="Tx_P_Uso"/>
+  <dlg:fixedline dlg:id="FixedLine2" dlg:tab-index="11" dlg:left="12" 
dlg:top="106" dlg:width="302" dlg:height="2" dlg:page="1"/>
+  <dlg:fixedline dlg:id="FixedLine1" dlg:tab-index="12" dlg:left="132" 
dlg:top="33" dlg:width="2" dlg:height="153" dlg:page="1" dlg:align="vertical"/>
+  <dlg:text dlg:style-id="0" dlg:id="Lbl_Estilos" dlg:tab-index="0" 
dlg:left="33" dlg:top="5" dlg:width="200" dlg:height="12" dlg:page="1" 
dlg:value="Lbl_Estilos" dlg:align="center"/>
+  <dlg:text dlg:style-id="1" dlg:id="Lbl_Aplicados" dlg:tab-index="6" 
dlg:left="10" dlg:top="20" dlg:width="120" dlg:height="10" dlg:page="1" 
dlg:value="Lbl_Aplicados" dlg:align="center"/>
+  <dlg:text dlg:style-id="1" dlg:id="Lbl_NoUsados" dlg:tab-index="8" 
dlg:left="141" dlg:top="20" dlg:width="120" dlg:height="10" dlg:page="1" 
dlg:value="Lbl_NoUsados" dlg:align="center"/>
+  <dlg:text dlg:style-id="2" dlg:id="Lbl_Parrafo" dlg:tab-index="5" 
dlg:left="259" dlg:top="34" dlg:width="63" dlg:height="8" dlg:page="1" 
dlg:value="Lbl_Parrafo" dlg:align="center"/>
+  <dlg:text dlg:style-id="2" dlg:id="Lbl_Caracter" dlg:tab-index="7" 
dlg:left="261" dlg:top="116" dlg:width="62" dlg:height="8" dlg:page="1" 
dlg:value="Lbl_Caracter" dlg:align="center"/>
+  <dlg:text dlg:id="Lbl_InfoP" dlg:tab-index="13" dlg:left="263" dlg:top="46" 
dlg:width="55" dlg:height="42" dlg:page="1" dlg:value="Selecciona un estilo de 
la lista&#x0a; &quot;No utilizados&quot; para eliminarlo" dlg:align="center" 
dlg:multiline="true"/>
+  <dlg:text dlg:id="Lbl_InfoC" dlg:tab-index="14" dlg:left="263" dlg:top="127" 
dlg:width="55" dlg:height="42" dlg:page="1" dlg:value="Lbl_InfoC" 
dlg:align="center" dlg:multiline="true"/>
+  <dlg:button dlg:style-id="3" dlg:id="Btn_Ayuda" dlg:tab-index="15" 
dlg:left="293" dlg:top="8" dlg:width="20" dlg:height="20" dlg:tabstop="false" 
dlg:value="?" dlg:valign="center">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Estilos.OnBtn_Ayuda?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:textfield dlg:id="Tx_Ayuda" dlg:tab-index="16" dlg:left="29" 
dlg:top="17" dlg:width="246" dlg:height="161" dlg:page="2" dlg:multiline="true" 
dlg:readonly="true" dlg:value="Tx_Ayuda"/>
+ </dlg:bulletinboard>
+</dlg:window>
\ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/DlgFormatos.xdl 
b/userguides/sanitycheck/SanityCheck/DlgFormatos.xdl
new file mode 100644
index 00000000..29d6e041
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/DlgFormatos.xdl
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" 
"dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog"; 
xmlns:script="http://openoffice.org/2000/script"; dlg:id="DlgFormatos" 
dlg:left="257" dlg:top="127" dlg:width="196" dlg:height="135" dlg:page="2" 
dlg:closeable="true" dlg:moveable="true">
+ <dlg:bulletinboard>
+  <dlg:button dlg:id="Btn_Limpiar" dlg:tab-index="4" dlg:left="70" 
dlg:top="110" dlg:width="36" dlg:height="12" dlg:page="1" 
dlg:value="Btn_Limpiar">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Formatos.OnBtn_Limpiar?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:button dlg:id="Btn_Salir" dlg:tab-index="5" dlg:left="131" 
dlg:top="110" dlg:width="36" dlg:height="12" dlg:value="Btn_Salir">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Formatos.onBtn_Salir?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:text dlg:id="Lbl_Info" dlg:tab-index="0" dlg:left="20" dlg:top="10" 
dlg:width="168" dlg:height="55" dlg:page="1" dlg:value="- Texto: Limpia el 
formato directo de caracteres aplicado al texto&#x0a;- Parrafos: Limpia el 
fomato directo aplicado a los párrafos (Incluidas las listas no 
numeradas)&#x0a;- Numerados: Limpia el formato aplicado a los párrafos de 
listas numeradas " dlg:multiline="true"/>
+  <dlg:textfield dlg:id="Tx_Registro" dlg:tab-index="6" dlg:left="25" 
dlg:top="14" dlg:width="150" dlg:height="69" dlg:page="2" dlg:multiline="true" 
dlg:value="Espere..."/>
+  <dlg:button dlg:id="Btn_Volver" dlg:tab-index="7" dlg:left="78" 
dlg:top="110" dlg:width="38" dlg:height="12" dlg:page="2" 
dlg:value="Btn_Volver">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Formatos.OnBtn_Volver?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:checkbox dlg:id="Ch_Text" dlg:tab-index="1" dlg:left="48" dlg:top="74" 
dlg:width="60" dlg:height="12" dlg:page="1" dlg:value="Ch_Text" 
dlg:valign="center" dlg:checked="false">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Formatos.OnCasillaFormatos?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:checkbox>
+  <dlg:checkbox dlg:id="Ch_Par" dlg:tab-index="2" dlg:left="115" dlg:top="74" 
dlg:width="60" dlg:height="12" dlg:page="1" dlg:value="Ch_Par" 
dlg:valign="center" dlg:checked="false">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Formatos.OnCasillaFormatos?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:checkbox>
+  <dlg:checkbox dlg:id="Ch_Num" dlg:tab-index="3" dlg:left="48" dlg:top="91" 
dlg:width="73" dlg:height="12" dlg:page="1" dlg:value="Ch_Num" 
dlg:valign="center" dlg:checked="false">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Formatos.OnCasillaFormatos?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:checkbox>
+ </dlg:bulletinboard>
+</dlg:window>
\ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/DlgImagenes.xdl 
b/userguides/sanitycheck/SanityCheck/DlgImagenes.xdl
new file mode 100644
index 00000000..67ddfaeb
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/DlgImagenes.xdl
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" 
"dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog"; 
xmlns:script="http://openoffice.org/2000/script"; dlg:id="Imagenes" 
dlg:tab-index="0" dlg:left="100" dlg:top="110" dlg:width="233" dlg:height="177" 
dlg:page="2" dlg:closeable="true" dlg:moveable="true" dlg:title="Revisión">
+ <dlg:styles>
+  <dlg:style dlg:style-id="0" dlg:font-weight="150"/>
+  <dlg:style dlg:style-id="1" dlg:font-weight="100"/>
+  <dlg:style dlg:style-id="2" dlg:text-color="0xc9211e" dlg:font-weight="150"/>
+  <dlg:style dlg:style-id="3" dlg:font-height="10" dlg:font-weight="150"/>
+  <dlg:style dlg:style-id="4" dlg:text-color="0xff" dlg:font-height="20" 
dlg:font-weight="150"/>
+ </dlg:styles>
+ <dlg:bulletinboard>
+  <dlg:text dlg:style-id="0" dlg:id="Lbl_Recorte" dlg:tab-index="0" 
dlg:left="14" dlg:top="115" dlg:width="135" dlg:height="18" dlg:page="1" 
dlg:value="Lbl_Recorte" dlg:multiline="true"/>
+  <dlg:text dlg:style-id="0" dlg:id="Lbl_Ancla" dlg:tab-index="11" 
dlg:left="55" dlg:top="35" dlg:width="53" dlg:height="8" dlg:page="1" 
dlg:value="Lbl_Ancla" dlg:tabstop="true"/>
+  <dlg:button dlg:style-id="1" dlg:id="Btn_Ancla" dlg:tab-index="3" 
dlg:left="160" dlg:top="34" dlg:width="50" dlg:height="12" dlg:page="1" 
dlg:value="Como Carácter">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Ancla?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:button dlg:style-id="1" dlg:id="Btn_De_Marco" dlg:tab-index="8" 
dlg:left="157" dlg:top="96" dlg:width="50" dlg:height="12" dlg:page="1" 
dlg:help-text="Copia la descripción del marco " dlg:value="Desde Marco">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Desde_Marco?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:button dlg:style-id="1" dlg:id="Btn_Editar" dlg:tab-index="7" 
dlg:left="155" dlg:top="80" dlg:width="55" dlg:height="12" dlg:page="1" 
dlg:value="Cambiar /Asignar">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Cambiar_Desc_Img?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:button dlg:style-id="1" dlg:id="Btn_Img_Name" dlg:tab-index="2" 
dlg:left="160" dlg:top="14" dlg:width="50" dlg:height="12" dlg:page="1" 
dlg:value="Cambiar">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Cambiar_Nombre_Img?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:textfield dlg:id="Tx_Desc_Marco" dlg:tab-index="4" dlg:left="14" 
dlg:top="56" dlg:width="135" dlg:height="10" dlg:page="1">
+   <script:event script:event-name="on-textchange" 
script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnTx_Desc_Marco?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:textfield>
+  <dlg:button dlg:style-id="1" dlg:id="Btn_Desc_Marco" dlg:tab-index="5" 
dlg:left="160" dlg:top="56" dlg:width="50" dlg:height="12" dlg:page="1" 
dlg:value="Cambiar">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Cambiar_Desc_Marco?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:button dlg:style-id="1" dlg:id="Btn_Recorte" dlg:tab-index="9" 
dlg:left="154" dlg:top="123" dlg:width="57" dlg:height="13" dlg:page="1" 
dlg:help-text="Abre el programa asociado para editar la imagen (dependiente del 
S.O.)" dlg:value="Editar (externo)">
+   <script:event script:event-name="on-mousedown" 
script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Editar_pulsado?language=Basic&amp;location=application"
 script:language="Script"/>
+   <script:event script:event-name="on-mouseup" 
script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Editar_soltado?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:textfield dlg:id="Tx_Desc_Img" dlg:tab-index="6" dlg:left="14" 
dlg:top="85" dlg:width="135" dlg:height="18" dlg:page="1" dlg:valign="top" 
dlg:multiline="true">
+   <script:event script:event-name="on-textchange" 
script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnTx_Desc_Img?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:textfield>
+  <dlg:text dlg:style-id="2" dlg:id="Lbl_Escala" dlg:tab-index="13" 
dlg:left="14" dlg:top="133" dlg:width="135" dlg:height="10" dlg:page="1" 
dlg:value="Lbl_Escala" dlg:valign="center"/>
+  <dlg:text dlg:style-id="3" dlg:id="Lbl_Ultima" dlg:tab-index="14" 
dlg:left="105" dlg:top="144" dlg:width="53" dlg:height="12" dlg:page="1" 
dlg:value="Ultima imagen" dlg:align="center" dlg:valign="center"/>
+  <dlg:text dlg:id="Label3" dlg:tab-index="15" dlg:left="186" dlg:top="176" 
dlg:width="2" dlg:height="0" dlg:value="Label3"/>
+  <dlg:titledbox dlg:style-id="0" dlg:id="Fr_Img" dlg:tab-index="16" 
dlg:left="10" dlg:top="6" dlg:width="205" dlg:height="24" dlg:page="1" 
dlg:help-text="Alterna el orden de las leyendas dentro del marco">
+   <dlg:title dlg:value="Nombre de la imagen"/>
+  </dlg:titledbox>
+  <dlg:textfield dlg:id="Tx_Nombre_Img" dlg:tab-index="1" dlg:left="14" 
dlg:top="16" dlg:width="135" dlg:height="10" dlg:page="1">
+   <script:event script:event-name="on-textchange" 
script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnTx_Nombre_Img?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:textfield>
+  <dlg:button dlg:style-id="1" dlg:id="Btn_Anterior" dlg:tab-index="19" 
dlg:left="84" dlg:top="155" dlg:width="36" dlg:height="13" dlg:page="1" 
dlg:value="&lt; Anterior">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Anterior?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:button dlg:style-id="1" dlg:id="Btn_Salir" dlg:tab-index="21" 
dlg:left="186" dlg:top="155" dlg:width="32" dlg:height="13" dlg:page="1" 
dlg:value="Salir">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Salir?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:button dlg:style-id="1" dlg:id="Btn_Siguiente" dlg:tab-index="20" 
dlg:left="131" dlg:top="155" dlg:width="37" dlg:height="13" dlg:page="1" 
dlg:value="Siguiente &gt;">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Siguiente?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:titledbox dlg:style-id="0" dlg:id="Fr_Marco" dlg:tab-index="17" 
dlg:left="10" dlg:top="47" dlg:width="205" dlg:height="24" dlg:page="1">
+   <dlg:title dlg:value="Descripción del marco"/>
+  </dlg:titledbox>
+  <dlg:titledbox dlg:style-id="0" dlg:id="Fr_Desc" dlg:tab-index="12" 
dlg:left="10" dlg:top="74" dlg:width="205" dlg:height="38" dlg:page="1">
+   <dlg:title dlg:value="Descripción de la imagen"/>
+  </dlg:titledbox>
+  <dlg:text dlg:style-id="0" dlg:id="Lbl_Anclaje" dlg:tab-index="10" 
dlg:left="16" dlg:top="35" dlg:width="34" dlg:height="8" dlg:page="1" 
dlg:value="Anclaje"/>
+  <dlg:button dlg:style-id="4" dlg:id="Btn_Ayuda" dlg:tab-index="22" 
dlg:left="18" dlg:top="151" dlg:width="16" dlg:height="19" dlg:tabstop="false" 
dlg:value="?">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Ayuda?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:textfield dlg:id="Tx_Ayuda" dlg:tab-index="18" dlg:left="14" 
dlg:top="6" dlg:width="208" dlg:height="143" dlg:page="2" dlg:vscroll="true" 
dlg:multiline="true" dlg:readonly="true" dlg:value="Tx_Ayuda"/>
+ </dlg:bulletinboard>
+</dlg:window>
\ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/DlgRenombrar.xdl 
b/userguides/sanitycheck/SanityCheck/DlgRenombrar.xdl
new file mode 100644
index 00000000..b9d64d19
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/DlgRenombrar.xdl
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" 
"dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog"; 
xmlns:script="http://openoffice.org/2000/script"; dlg:id="Renombrar" 
dlg:left="253" dlg:top="116" dlg:width="196" dlg:height="135" dlg:page="2" 
dlg:closeable="true" dlg:moveable="true">
+ <dlg:bulletinboard>
+  <dlg:text dlg:id="Lbl_P_Info" dlg:tab-index="7" dlg:left="13" dlg:top="5" 
dlg:width="171" dlg:height="50" dlg:page="1" dlg:value="Lbl_P_Info" 
dlg:multiline="true"/>
+  <dlg:button dlg:id="Btn_Renombrar" dlg:tab-index="5" dlg:left="72" 
dlg:top="110" dlg:width="38" dlg:height="12" dlg:page="1" 
dlg:value="Btn_Renombrar">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Renombrar.OnBtn_Renombrar?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:checkbox dlg:id="Ch_Tablas" dlg:tab-index="2" dlg:left="96" 
dlg:top="75" dlg:width="40" dlg:height="10" dlg:page="1" dlg:value="Ch_Tablas" 
dlg:checked="false">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.Casillas_Renombrar?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:checkbox>
+  <dlg:button dlg:id="Btn_Salir" dlg:tab-index="0" dlg:left="135" 
dlg:top="110" dlg:width="30" dlg:height="12" dlg:tabstop="true" 
dlg:value="Btn_Salir" dlg:button-type="cancel"/>
+  <dlg:text dlg:id="Lbl_Selec" dlg:tab-index="8" dlg:left="44" dlg:top="57" 
dlg:width="108" dlg:height="10" dlg:page="1" dlg:value="Lbl_Selec"/>
+  <dlg:checkbox dlg:id="Ch_Imgs" dlg:tab-index="1" dlg:left="42" dlg:top="74" 
dlg:width="40" dlg:height="10" dlg:page="1" dlg:tabstop="true" 
dlg:value="Ch_Imgs" dlg:checked="false">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.Casillas_Renombrar?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:checkbox>
+  <dlg:checkbox dlg:id="Ch_Marcos" dlg:tab-index="3" dlg:left="42" 
dlg:top="87" dlg:width="40" dlg:height="10" dlg:page="1" dlg:value="Ch_Marcos" 
dlg:checked="false">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.Casillas_Renombrar?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:checkbox>
+  <dlg:checkbox dlg:id="Ch_Indice" dlg:tab-index="4" dlg:left="97" 
dlg:top="89" dlg:width="40" dlg:height="10" dlg:page="1" dlg:value="Ch_Indice" 
dlg:checked="false">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.Casillas_Renombrar?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:checkbox>
+  <dlg:textfield dlg:id="Tx_Registro" dlg:tab-index="9" dlg:left="27" 
dlg:top="17" dlg:width="146" dlg:height="83" dlg:page="2" dlg:multiline="true" 
dlg:value="Tx_Registro"/>
+  <dlg:button dlg:id="Btn_Volver" dlg:tab-index="6" dlg:left="72" 
dlg:top="110" dlg:width="38" dlg:height="12" dlg:page="2" 
dlg:value="Btn_Volver">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Renombrar.OnBtn_Volver?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+ </dlg:bulletinboard>
+</dlg:window>
\ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/DlgResaltes.xdl 
b/userguides/sanitycheck/SanityCheck/DlgResaltes.xdl
new file mode 100644
index 00000000..3a840974
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/DlgResaltes.xdl
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" 
"dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog"; 
xmlns:script="http://openoffice.org/2000/script"; dlg:id="DlgResaltes" 
dlg:tab-index="0" dlg:left="120" dlg:top="30" dlg:width="242" dlg:height="242" 
dlg:page="1" dlg:closeable="true" dlg:moveable="true" dlg:title="Resaltado de 
estilos">
+ <dlg:styles>
+  <dlg:style dlg:style-id="0" dlg:text-color="0xc9211e" dlg:font-height="10" 
dlg:font-weight="150"/>
+  <dlg:style dlg:style-id="1" dlg:font-height="28" dlg:font-weight="150"/>
+  <dlg:style dlg:style-id="2" dlg:font-height="10" dlg:font-weight="150"/>
+  <dlg:style dlg:style-id="3" dlg:font-weight="150"/>
+  <dlg:style dlg:style-id="4" dlg:text-color="0x468a1a" dlg:font-height="11" 
dlg:font-weight="150"/>
+  <dlg:style dlg:style-id="5" dlg:font-height="11" dlg:font-weight="150"/>
+ </dlg:styles>
+ <dlg:bulletinboard>
+  <dlg:button dlg:id="CommandButton2" dlg:tab-index="2" dlg:left="34" 
dlg:top="211" dlg:width="0" dlg:height="2" dlg:page="1" 
dlg:value="CommandButton1"/>
+  <dlg:text dlg:id="Label9" dlg:tab-index="3" dlg:left="102" dlg:top="225" 
dlg:width="4" dlg:height="0" dlg:page="1" dlg:value="Label8"/>
+  <dlg:text dlg:style-id="0" dlg:id="Lbl_Errores" dlg:tab-index="7" 
dlg:left="47" dlg:top="37" dlg:width="131" dlg:height="8" dlg:page="1" 
dlg:value="¡La definición de estilos contiene errores!"/>
+  <dlg:button dlg:style-id="1" dlg:id="Btn_Errores" dlg:tab-index="10" 
dlg:left="200" dlg:top="27" dlg:width="21" dlg:height="19" dlg:value="𓂀" 
dlg:valign="center">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Resaltes.OnBtErrores?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:text dlg:style-id="2" dlg:id="Lbl_Sintaxis" dlg:tab-index="6" 
dlg:left="15" dlg:top="11" dlg:width="91" dlg:height="10" dlg:page="2" 
dlg:value="Errores de sintáxis:"/>
+  <dlg:button dlg:style-id="3" dlg:id="Btn_Detalles" dlg:tab-index="8" 
dlg:left="195" dlg:top="11" dlg:width="30" dlg:height="12" dlg:page="1" 
dlg:tabstop="false" dlg:value="Detalles" dlg:valign="top" 
dlg:grab-focus="false">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Resaltes.OnBtDetalles?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:text dlg:style-id="3" dlg:id="Lbl_NoPresentes" dlg:tab-index="1" 
dlg:left="124" dlg:top="146" dlg:width="104" dlg:height="10" dlg:page="1" 
dlg:value="Lbl_NoPresentes" dlg:align="center"/>
+  <dlg:text dlg:style-id="4" dlg:id="Lbl_NCambios" dlg:tab-index="5" 
dlg:left="28" dlg:top="12" dlg:width="12" dlg:height="10" dlg:page="1" 
dlg:value="Lbl_NCambios" dlg:align="right" dlg:valign="center"/>
+  <dlg:text dlg:style-id="5" dlg:id="Lbl_Info" dlg:tab-index="4" dlg:left="47" 
dlg:top="12" dlg:width="128" dlg:height="10" dlg:page="1" dlg:value="Estilos 
personalizados  modificados" dlg:valign="center"/>
+  <dlg:textfield dlg:id="Tx_C_Encontrados" dlg:tab-index="11" dlg:left="123" 
dlg:top="62" dlg:width="104" dlg:height="81" dlg:page="1" dlg:vscroll="true" 
dlg:multiline="true" dlg:readonly="true"/>
+  <dlg:textfield dlg:id="Tx_P_Encontrados" dlg:tab-index="12" dlg:left="13" 
dlg:top="62" dlg:width="104" dlg:height="161" dlg:page="1" dlg:vscroll="true" 
dlg:multiline="true" dlg:readonly="true"/>
+  <dlg:textfield dlg:id="Tx_Perdidos" dlg:tab-index="13" dlg:left="124" 
dlg:top="156" dlg:width="104" dlg:height="66" dlg:page="1" dlg:vscroll="true" 
dlg:multiline="true" dlg:readonly="true"/>
+  <dlg:text dlg:style-id="3" dlg:id="Lbl_P_Cambiados" dlg:tab-index="0" 
dlg:left="13" dlg:top="54" dlg:width="104" dlg:height="8" dlg:page="1" 
dlg:value="Lbl_P_Cambiados" dlg:align="center"/>
+  <dlg:text dlg:style-id="3" dlg:id="Lbl_C_Cambiados" dlg:tab-index="14" 
dlg:left="126" dlg:top="54" dlg:width="99" dlg:height="8" dlg:page="1" 
dlg:value="Lbl_C_Cambiados" dlg:align="center"/>
+  <dlg:textfield dlg:id="Tx_ListaErrores" dlg:tab-index="9" dlg:left="13" 
dlg:top="51" dlg:width="215" dlg:height="171" dlg:page="2" dlg:tabstop="false" 
dlg:vscroll="true" dlg:multiline="true" dlg:readonly="true" 
dlg:value="Errores"/>
+ </dlg:bulletinboard>
+</dlg:window>
\ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/DlgTablas.xdl 
b/userguides/sanitycheck/SanityCheck/DlgTablas.xdl
new file mode 100644
index 00000000..51673fa7
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/DlgTablas.xdl
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" 
"dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog"; 
xmlns:script="http://openoffice.org/2000/script"; dlg:id="Tablas" dlg:left="100" 
dlg:top="110" dlg:width="217" dlg:height="138" dlg:closeable="true" 
dlg:moveable="true" dlg:title="Información de tabla">
+ <dlg:styles>
+  <dlg:style dlg:style-id="0" dlg:font-height="10" dlg:font-weight="150"/>
+  <dlg:style dlg:style-id="1" dlg:font-weight="150"/>
+ </dlg:styles>
+ <dlg:bulletinboard>
+  <dlg:button dlg:id="Btn_Siguiente" dlg:tab-index="1" dlg:left="113" 
dlg:top="116" dlg:width="40" dlg:height="14" dlg:value="Siguiente">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Tablas.OnBtn_Siguiente?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:radiogroup>
+   <dlg:radio dlg:id="Opt_Datos" dlg:tab-index="2" dlg:left="54" dlg:top="46" 
dlg:width="54" dlg:height="9" dlg:value="Datos">
+    <script:event script:event-name="on-itemstatechange" 
script:macro-name="vnd.sun.star.script:SanityCheck.Tablas.OnRadioButtons?language=Basic&amp;location=application"
 script:language="Script"/>
+   </dlg:radio>
+   <dlg:radio dlg:id="Opt_Distribucion" dlg:tab-index="3" dlg:left="114" 
dlg:top="46" dlg:width="46" dlg:height="9" dlg:value="Distribución">
+    <script:event script:event-name="on-itemstatechange" 
script:macro-name="vnd.sun.star.script:SanityCheck.Tablas.OnRadioButtons?language=Basic&amp;location=application"
 script:language="Script"/>
+   </dlg:radio>
+  </dlg:radiogroup>
+  <dlg:text dlg:id="Lbl_Info" dlg:tab-index="5" dlg:left="20" dlg:top="66" 
dlg:width="170" dlg:height="32" dlg:value="Selecciona un tipo de tabla para 
optimizar y pulsa &quot;Optimizar &quot;&#x0a;o pulsa en &quot;Siguiente&quot; 
para omitir la modificación de  la tabla " dlg:multiline="true"/>
+  <dlg:text dlg:id="Lbl_Nombre" dlg:tab-index="7" dlg:left="59" dlg:top="11" 
dlg:width="58" dlg:height="9" dlg:value="Lbl_Nombre"/>
+  <dlg:text dlg:id="Lbl_Estilo" dlg:tab-index="9" dlg:left="58" dlg:top="23" 
dlg:width="66" dlg:height="9" dlg:value="Lbl_Estilo"/>
+  <dlg:button dlg:id="Btn_Salir" dlg:tab-index="0" dlg:left="170" 
dlg:top="116" dlg:width="40" dlg:height="14" dlg:value="Salir">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Tablas.OnBtn_Salir?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:button dlg:id="Btn_Anterior" dlg:tab-index="10" dlg:left="15" 
dlg:top="116" dlg:width="40" dlg:height="14" dlg:value="Anterior">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Tablas.OnBtn_Anterior?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:text dlg:style-id="0" dlg:id="Lbl_Ultima" dlg:tab-index="11" 
dlg:left="88" dlg:top="106" dlg:width="50" dlg:height="12" 
dlg:value="Lbl_Ultima"/>
+  <dlg:button dlg:id="Btn_Optimizar" dlg:tab-index="12" dlg:left="64" 
dlg:top="116" dlg:width="40" dlg:height="14" dlg:value="Optimizar">
+   <script:event script:event-name="on-performaction" 
script:macro-name="vnd.sun.star.script:SanityCheck.Tablas.OnBtn_Optimizar?language=Basic&amp;location=application"
 script:language="Script"/>
+  </dlg:button>
+  <dlg:text dlg:style-id="1" dlg:id="Lbl_Optimizada" dlg:tab-index="13" 
dlg:left="64" dlg:top="120" dlg:width="34" dlg:height="11" 
dlg:value="Optimizada"/>
+  <dlg:text dlg:id="Lbl_EstiloT" dlg:tab-index="8" dlg:left="18" dlg:top="23" 
dlg:width="38" dlg:height="9" dlg:value="Estilo"/>
+  <dlg:titledbox dlg:id="Fr_Tipo" dlg:tab-index="4" dlg:left="33" dlg:top="34" 
dlg:width="149" dlg:height="26">
+   <dlg:title dlg:value="Tipo de tabla"/>
+  </dlg:titledbox>
+  <dlg:text dlg:id="Lbl_NombreT" dlg:tab-index="6" dlg:left="18" dlg:top="11" 
dlg:width="38" dlg:height="9" dlg:value="Nombre"/>
+ </dlg:bulletinboard>
+</dlg:window>
\ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/Estilos.xba 
b/userguides/sanitycheck/SanityCheck/Estilos.xba
new file mode 100644
index 00000000..f0f8647c
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/Estilos.xba
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" 
"module.dtd">
+<script:module xmlns:script="http://openoffice.org/2000/script"; 
script:name="Estilos" script:language="StarBasic" 
script:moduleType="normal">REM  *****  BASIC  Módulo Estilos *****
+Option Explicit
+
+Global estiloPU(18) as String
+Global estiloCU(22) as String
+Dim oDlgEstilos as Object
+Dim P_Uso, C_Uso, a_P_SinUso as Variant, a_C_SinUso as Variant
+Dim ContadorComentarios as Integer
+
+ Rem ############
+Sub CargaEstilos_PU_Guias
+ Rem Estilos de Párrafo de Usuario de las guías sensibles a mayúculas y 
minúsculas. 
+ Rem Si se amplia la matriz (estilos en plantilla) hay que modificar la 
definición de 
+ Rem la matriz &quot;estiloPU&quot; (inicio de módulo) para igualar con el nº 
del último elemento 
+
+ estiloPU(0) = &quot;Caption Table Listing&quot;
+ estiloPU(1) = &quot;Code&quot;
+ estiloPU(2) = &quot;Column Contents&quot;
+ estiloPU(3) = &quot;Definition Term&quot;
+ estiloPU(4) = &quot;Definition Term 2&quot;
+ estiloPU(5) = &quot;First Heading&quot; &apos; Puede que en la nueva 
plantilla no aparezca.
+ estiloPU(6) = &quot;Guide Name&quot;
+ estiloPU(7) = &quot;Guide Subtitle&quot;
+ estiloPU(8) = &quot;Guide Title&quot; 
+ estiloPU(9) = &quot;Heading Caution&quot;
+ estiloPU(10) = &quot;Heading Note&quot;
+ estiloPU(11) = &quot;Heading Tip&quot;
+ estiloPU(12) = &quot;Legend Numbered&quot;
+ estiloPU(13) = &quot;Listing&quot;
+ estiloPU(14) = &quot;New Chapter&quot;
+ estiloPU(15) = &quot;Page Break&quot;&apos; Creo que está en deshuso
+ estiloPU(16) = &quot;Text Body Indent 2&quot;
+ estiloPU(17) = &quot;Text Body List Intro&quot;
+ estiloPU(18) = &quot;Text Note&quot;
+
+End sub
+
+ Rem ############
+Sub CargaEstilos_CU_Guias
+ Rem Estilos de Párrafo de Usuario de las guías sensibles a mayúculas y 
minúsculas. 
+ Rem Si se amplia la matriz (más estilos en plantilla) hay que modificar la 
definición de 
+ Rem la matriz &quot;estiloPU&quot; (inicio de módulo) para igualar con el nº 
del último elemento 
+ Rem ====================================================== 
+ estiloCU(0) = &quot;Bullet Symbols&quot;
+ estiloCU(0) = &quot;ch2_Libreoffice&quot;
+ estiloCU(1) = &quot;ch2_libreoffice.Comment&quot;
+ estiloCU(2) = &quot;ch2_libreoffice.Comment.Single&quot;
+ estiloCU(3) = &quot;ch2_libreoffice.Keyword&quot;
+ estiloCU(4) = &quot;ch2_libreoffice.Keyword.Declaration&quot; 
+ estiloCU(5) = &quot;ch2_libreoffice.Keyword.Type&quot;
+ estiloCU(6) = &quot;ch2_libreoffice.Literal&quot;
+ estiloCU(7) = &quot;ch2_libreoffice.Literal.Number&quot;
+ estiloCU(8) = &quot;ch2_libreoffice.Literal.Number.Integer&quot;
+ estiloCU(9) = &quot;ch2_libreoffice.Literal.Number.Float&quot;
+ estiloCU(10) = &quot;ch2_libreoffice.Literal.String&quot;
+ estiloCU(11) = &quot;ch2_libreoffice.Literal.String.Double&quot;
+ estiloCU(12) = &quot;ch2_libreoffice.Name&quot;
+ estiloCU(13) = &quot;ch2_libreoffice.Name.Function&quot;
+ estiloCU(14) = &quot;ch2_libreoffice.Name.Variable&quot;
+ estiloCU(15) = &quot;ch2_libreoffice.Operator&quot;
+ estiloCU(16) = &quot;ch2_libreoffice.Operator.Word&quot;
+ estiloCU(17) = &quot;ch2_libreoffice.Punctuation&quot;
+ estiloCU(18) = &quot;ch2_libreoffice.Text&quot;
+ estiloCU(19) = &quot;ch2_libreoffice.Text.Whitespace&quot;
+ estiloCU(20) = &quot;Code&quot;
+ estiloCU(21) = &quot;Keystroke&quot;
+ estiloCU(22) = &quot;SuperScript&quot;
+End sub
+
+ Rem ############
+Sub ComprobacionEstilos
+   Call L10n.Trad_Estilos
+   Avisos_Estilos_Ajenos(&quot;P&quot;)
+   Avisos_Estilos_Ajenos(&quot;C&quot;)
+   Call   DialogoEstilos
+End Sub
+
+ Rem ############
+Function  Avisos_Estilos_Ajenos(Familia as String)
+ Rem Recopila los estilos ajenos a las guías de la documentación
+ Rem y los separa en aplicados y no aplicados.
+ Rem Muestra mensajes para eliminar los no aplicados y avisar
+ Rem de los aplicados.
+ Rem Argumentos: P = estilos de párrafo / C = de carácter
+ Rem ====================================================== 
+   If (Not GlobalScope.BasicLibraries.isLibraryLoaded(&quot;Tools&quot;)) Then
+     GlobalScope.BasicLibraries.LoadLibrary(&quot;Tools&quot;)
+   End If
+ 
+ Dim oEstilos as Object, oEstilo as Object, Estilo_G as Object, N_Familia as 
String
+   If Familia = &quot;P&quot; then
+     N_Familia = &quot;Estilos de parrafo&quot;
+     oEstilos = 
ThisComponent.StyleFamilies.getByName(&quot;ParagraphStyles&quot;)
+     Call CargaEstilos_PU_Guias &apos;Carga estilos usuario de las guías
+     estilo_G = estiloPU
+     P_Uso = &quot;&quot; &apos;reset
+   Elseif Familia = &quot;C&quot; then
+     N_Familia = &quot;Estilos de carácter&quot;
+     oEstilos = 
ThisComponent.StyleFamilies.getByName(&quot;CharacterStyles&quot;)
+     Call CargaEstilos_CU_Guias
+     estilo_G = estiloCU
+     C_Uso = &quot;&quot; &apos;reset
+   End If
+
+ Dim i as integer, u as integer, s as integer, enUso() as Variant, sinUso() as 
Variant
+   u = -1 : s = -1
+   For i = 0 To oEstilos.getCount -1
+     oEstilo = oEstilos.getByIndex(i)
+     If oEstilo.isUserDefined Then
+       if oEstilo.isInUse Then
+         Redim Preserve enUso(0 To u+1)
+         enUso(u+1) = oEstilo.Name
+         u = UBound(enUso)
+       elseif Not oEstilo.isInUse Then
+         Redim Preserve sinUso(0 To s+1)
+         sinUso(s+1) = oEstilo.Name
+         s = UBound(sinUso)
+       end If
+     End If
+   Next
+
+   BubbleSortList(sinUso)
+
+   sinUso = F_RestaMatrices(Estilo_G,sinuso)&apos;matriz sin estilos guías
+   if ubound(sinUso) = -1 Then
+     Redim sinUso(0)
+     sinUso(0) = E_Txt(8)
+   end if 
+  If familia = &quot;P&quot; Then a_P_SinUso = sinUso &apos;matriz Listado 
Parrafos 
+  If familia = &quot;C&quot; Then a_C_SinUso = sinUso &apos;matriz Listado 
Caracteres
+
+   BubbleSortList(enUso)&apos;(Tools) Array principal para estilo usados
+
+   enUso = F_RestaMatrices(Estilo_G,enUso)  &apos;matriz sin estilos guías
+   If Ubound(enUso) = -1 Then
+     if familia = &quot;P&quot; Then
+       P_Uso = E_Txt(8) 
+     elseif familia = &quot;C&quot; Then
+       C_Uso = E_Txt(8)
+     endIf
+   ElseIf Ubound(enUso) &lt;&gt; -1 Then
+     if familia = &quot;P&quot; Then
+       P_Uso = F_MatrizCuadroTexto(EnUso) &apos;Convierte la matriz en texto 
(cuadro de texto estilos párrafo)
+       Call F_Comentar_Parrafos(EnUso) &apos;Comenta los párrafos
+     elseIf familia = &quot;C&quot; Then
+       C_Uso = F_MatrizCuadroTexto(EnUso) &apos;Convierte la matriz en texto 
(cuadro de texto estilos caracter) 
+     end If
+  End If  
+End Function
+
+ Rem ############
+Sub DialogoEstilos()
+
+  DialogLibraries.LoadLibrary(&quot;SanityCheck&quot;) 
+  oDlgEstilos = 
createUnoDialog(DialogLibraries.getByName(&quot;SanityCheck&quot;).getbyName(&quot;DlgEstilos&quot;))
 
+
+   With oDlgEstilos.getModel
+     .Step = 1
+     .Title = E_Txt(0)
+     .getByName(&quot;Lbl_Estilos&quot;).label = E_Txt(1)
+     .getByName(&quot;Lbl_Aplicados&quot;).label = E_Txt(2)
+     .getByName(&quot;Lbl_NoUsados&quot;).label = E_Txt(3)
+     .getByName(&quot;Lbl_Parrafo&quot;).label = E_Txt(4)
+     .getByName(&quot;Lbl_Caracter&quot;).label = E_Txt(5)
+     .getByName(&quot;Btn_Eliminar_P&quot;).label = E_Txt(7)
+     .getByName(&quot;Btn_Eliminar_C&quot;).label = E_Txt(7)
+     .getByName(&quot;Lst_Eliminar_P&quot;).StringItemList = a_P_SinUso
+     .getByName(&quot;Lst_Eliminar_C&quot;).StringItemList = a_C_SinUso
+     .getByName(&quot;Tx_P_Uso&quot;).Text = (P_Uso)
+     .getByName(&quot;Tx_C_Uso&quot;).Text= (C_Uso)
+     .getByName(&quot;Tx_Ayuda&quot;).Text= E_Txt(18)
+
+     If a_P_SinUso(0) = E_Txt(8) Then
+       .getByName(&quot;Btn_Eliminar_P&quot;).enableVisible = False
+       .getByName(&quot;Lbl_InfoP&quot;).label = &quot;&quot;
+     Else
+       .getByName(&quot;Btn_Eliminar_P&quot;).enableVisible = True
+       .getByName(&quot;Lbl_InfoP&quot;).label = E_Txt(6)
+     end if
+
+     If a_C_SinUso(0) = E_Txt(8) Then
+       .getByName(&quot;Btn_Eliminar_C&quot;).enableVisible = False
+       .getByName(&quot;Lbl_InfoC&quot;).label = &quot;&quot;
+     Else
+       .getByName(&quot;Btn_Eliminar_C&quot;).enableVisible = True
+       .getByName(&quot;Lbl_InfoC&quot;).label = E_Txt(6)
+     end if
+   End With
+   oDlgEstilos.getControl(&quot;Btn_Eliminar_P&quot;).Enable = False
+   oDlgEstilos.getControl(&quot;Btn_Eliminar_C&quot;).Enable = False
+   
+ oDlgEstilos.execute()
+&apos;   If Variable DialogoX = 0 then_____
+End Sub
+
+ Rem ############
+Sub OnBtn_Ayuda(oEv)
+
+   oDlgEstilos = oEv.Source.Context
+   With oDlgEstilos.getModel
+     If .Step = 1 then
+       .Step = 2
+       .getByName(&quot;Btn_Ayuda&quot;).Label = &quot;↫&quot;
+     Else
+       .Step = 1
+       .getByName(&quot;Btn_Ayuda&quot;).Label = &quot;?&quot;
+     End If
+   End With
+End Sub
+
+ Rem ############
+Sub OnLstBox_P_Change(oEv)
+
+   oDlgEstilos = oEv.Source.Context
+   With oDlgEstilos
+     If .getControl(&quot;Lst_Eliminar_P&quot;).SelectedItem &lt;= -1 
Then&apos;0
+        .getControl(&quot;Btn_Eliminar_P&quot;).Enable = False
+     Else
+        .getControl(&quot;Btn_Eliminar_P&quot;).Enable = True
+     End If
+   End WIth
+End Sub
+
+ Rem ############
+Sub OnLstBox_C_Change(oEv)
+
+   oDlgEstilos = oEv.Source.Context
+     With oDlgEstilos
+       If .getControl(&quot;Lst_Eliminar_C&quot;).SelectedItem &lt;= -1 
Then&apos;0
+         .getControl(&quot;Btn_Eliminar_C&quot;).Enable = False
+       Else
+         .getControl(&quot;Btn_Eliminar_C&quot;).Enable = True
+       End If
+     End With
+End Sub
+
+ Rem ############
+Sub OnBtEliminar_P(oEv)
+
+   Call L10n.Trad_Estilos
+ Dim oCtrl As Object, selPos As Integer, Eliminar As Variant
+   oDlgEstilos = oEv.Source.Context
+   oCtrl = oDlgEstilos.getControl(&quot;Lst_Eliminar_P&quot;)
+   selPos = oCtrl.getSelectedItemPos
+
+   With oDlgEstilos.getModel
+     If oCtrl.getSelectedItem = E_Txt(8) Then
+       .getByName(&quot;Btn_Eliminar_P&quot;).enableVisible = False
+       Exit Sub
+     Else
+       Beep: Eliminar = MsgBox (E_txt(9) &amp; oCtrl.getSelectedItem &amp; 
E_Txt(11), 4+48+256, E_Txt(12) )
+       if Eliminar = 6 Then
+         Call EliminarEstilo (&quot;P&quot;,oCtrl.getSelectedItem,SelPos)
+       elseif Eliminar = 0 Or Eliminar = 7 Then
+         oCtrl.SelectItemPos(SelPos,False)
+       end If
+     End If
+
+     If octrl.ItemCount = 0 then 
+       oCtrl.addItem(E_Txt(8),1) &apos;Item,Posición
+       .getByName(&quot;Lbl_InfoP&quot;).label = &quot;&quot;
+       .getByName(&quot;Btn_Eliminar_P&quot;).enableVisible = False
+     End If   
+   End With
+
+End Sub
+
+ Rem ############
+Sub OnBtEliminar_C(oEv)
+&apos;   Call L10n.Trad_Estilos
+
+ Dim  oCtrl As Object, selPos As Integer, Eliminar As Variant
+
+   oDlgEstilos = oEv.Source.Context
-e 
... etc. - the rest is truncated

Reply via email to