Compare commits

...

47 commits

Author SHA1 Message Date
ca46b20e41
chore: push new version 2021-12-02 12:31:16 +01:00
e62d44cd89
chore: new version 2021-12-02 12:21:29 +01:00
a5ac4cbb43
feat: replace default paragraph styles with the same tool 2021-11-30 19:09:21 +01:00
6d138ae938 chore: push new version 2021-10-19 23:44:46 +02:00
d06657e3ee feat: provide more info if headings linking with TOC gone wrong #2 2021-10-19 23:43:25 +02:00
7a389b1b17 chore: push new version 2021-10-19 23:11:25 +02:00
fa35152083 New version 2021-10-19 23:05:30 +02:00
05041fc38b feat: provide more info if headings linking with TOC gone wrong 2021-10-19 23:02:41 +02:00
82dc861e82 Push new version 2021-10-06 12:25:02 +02:00
6843f73923 fix: convert mm to long 2021-10-06 12:23:31 +02:00
1f4f9d757d push new version 2021-10-01 11:05:57 +02:00
075bfc85aa fix: don't split pages while breaking paragraph 2021-10-01 11:00:28 +02:00
b0b5460032 chore: push new version 2021-09-23 14:33:28 +02:00
797ff48837 fix: Fixed archive conversion. Fixed new para balance function 2021-09-20 15:53:51 +02:00
fe1fc573eb fix: refactoring and fixes for working with archive 2021-08-29 16:44:00 +02:00
82c63c82ca fix: multiple fixes for processing archive books 2021-08-27 22:31:59 +02:00
941ac1c9cc fix: improved speed of shrink page content by changing order of shrink methods 2021-08-27 15:27:12 +02:00
5dcf629d0d fix: fixed wrong character numbers for lowercased cyrillic and latin characters 2021-08-27 15:26:04 +02:00
1eaa629949 chore: updated version 2021-08-27 13:03:13 +02:00
be702bc60f feat: added icon for para tail balance 2021-08-27 13:02:48 +02:00
f39f25b053 fix: exit if excerption happened while compiling journal 2021-08-27 12:13:36 +02:00
5bb9600439 fix rewritten shrink content function 2021-08-26 16:38:55 +02:00
f58b4f58de chore: cleaning a bit 2021-08-26 16:38:21 +02:00
48ebe71c8e fix: fixed kern increment/decrement while balancing para tail 2021-08-24 15:01:11 +02:00
ab552a70db fix: improved paragraph balance macro 2021-08-24 10:45:47 +02:00
8785038720 fix: Fixed shrink page content bug 2021-08-24 10:44:39 +02:00
8611814942 fix: added script to fix footnote sign positions 2021-08-24 10:43:44 +02:00
2b37cfe542 fix: fixed text char height shrinking. Use initial value of characters instead of getting it from paragraph style 2021-08-23 18:53:47 +02:00
d05aed70d6 fix: fixed footnote sign position while converting from links 2021-08-23 18:52:23 +02:00
79f8164650 feat: para balance improvements 2021-08-23 18:01:38 +02:00
c5dfb15133 feat: improved icons 2021-08-02 13:40:16 +02:00
13ba8d4f0c Push new version 2021-07-20 14:34:03 +02:00
c44890068b New version 2021-07-20 14:31:31 +02:00
c5da7ca352 Fix (endnotes) removed useless document text selection 2021-07-20 14:31:12 +02:00
8411b36a8f push new version 2021-07-12 18:17:54 +02:00
25372f07a2 Safe go to range with controller select 2021-07-12 18:04:20 +02:00
b8d2fc8361 push version 2021-06-21 19:53:48 +02:00
13d70679cc Fix for hyphenations convertation to manual 2021-06-21 19:51:47 +02:00
ff35128df4 New version push 2021-06-16 15:57:34 +02:00
383c0c832d Copy space if endnote is empty 2021-06-16 15:55:06 +02:00
f2cf656958 New version 2021-06-08 14:53:23 +02:00
1ee8b5f951 Added custom endnote back to standard conversion 2021-06-08 14:52:46 +02:00
f889f0edb7 Added endnotes conversion icon 2021-06-06 21:59:39 +02:00
f7bf8fd316 Fix error if image was selected 2021-06-04 17:05:34 +02:00
f912e831a0 Check if no textranges selected 2021-06-04 16:40:15 +02:00
71f52c5c01 Added panel button for endnotes conversion 2021-06-03 21:19:22 +02:00
58bab11323 Added dialog and functions to convert native endnotes to custom endnotes 2021-06-03 21:09:17 +02:00
37 changed files with 3063 additions and 518 deletions

View file

@ -3,6 +3,10 @@
<node oor:name="AddonUI"> <node oor:name="AddonUI">
<node oor:name="OfficeToolBar"> <node oor:name="OfficeToolBar">
<node oor:name="pro.litvinovg.ePublishing.panel" oor:op="replace"> <node oor:name="pro.litvinovg.ePublishing.panel" oor:op="replace">
<prop oor:name="Docked" oor:op="fuse"><value>true</value></prop>
<prop oor:name="HideFromToolbarMenu" oor:op="fuse"><value>false</value></prop>
<prop oor:name="Locked" oor:op="fuse"><value>false</value></prop>
<node oor:name="buttonShrinkText" oor:op="replace"> <node oor:name="buttonShrinkText" oor:op="replace">
<prop oor:name="Context" oor:type="xs:string"> <prop oor:name="Context" oor:type="xs:string">
<value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value> <value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value>
@ -60,10 +64,54 @@
<value>_self</value> <value>_self</value>
</prop> </prop>
</node> </node>
<node oor:name="buttonEndnotesConversion" oor:op="replace">
<prop oor:name="Context" oor:type="xs:string">
<value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value>
</prop>
<prop oor:name="Title" oor:type="xs:string">
<value xml:lang="ru">Конвертация концевых сносок</value>
<value xml:lang="en">Endnotes conversion</value>
<value xml:lang="fr">Conversion de notes de fin</value>
<value xml:lang="sr">Конверзија крајњих белешки</value>
<value xml:lang="hr">konverzija završnih bilješki</value>
<value xml:lang="bs">konverzija završnih bilješki</value>
</prop>
<prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.Endnotes.convertEndnotesExecution</value>
</prop>
<prop oor:name="Target" oor:type="xs:string">
<value>_self</value>
</prop>
</node>
<node oor:name="balanceTail" oor:op="replace">
<prop oor:name="Context" oor:type="xs:string">
<value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value>
</prop>
<prop oor:name="Title" oor:type="xs:string">
<value xml:lang="ru">Балансировка хвоста</value>
<value xml:lang="fr">Équilibrer la dernière ligne</value>
<value xml:lang="en">Balance the last line </value>
<value xml:lang="sr">Уравнотежите последњу линију</value>
<value xml:lang="hr">Uravnotežite posljednji redak</value>
<value xml:lang="bs">Uravnotežite posljednji redak</value>
</prop>
<prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.Archive.balanceCurParaLastLine</value>
</prop>
<prop oor:name="Target" oor:type="xs:string">
<value>_self</value>
</prop>
</node>
</node> </node>
</node> </node>
<node oor:name="OfficeToolBar"> <node oor:name="OfficeToolBar">
<node oor:name="pro.litvinovg.ePublishing.makeuppanel" oor:op="replace"> <node oor:name="pro.litvinovg.ePublishing.makeuppanel" oor:op="replace">
<prop oor:name="Docked" oor:op="fuse"><value>true</value></prop>
<prop oor:name="HideFromToolbarMenu" oor:op="fuse"><value>false</value></prop>
<prop oor:name="Locked" oor:op="fuse"><value>false</value></prop>
<node oor:name="percentPlus" oor:op="replace"> <node oor:name="percentPlus" oor:op="replace">
<prop oor:name="Context" oor:type="xs:string"> <prop oor:name="Context" oor:type="xs:string">
<value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value> <value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value>
@ -151,7 +199,7 @@
</prop> </prop>
<node oor:name="UserDefinedImages"> <node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL"> <prop oor:name="ImageBigURL">
<value>%origin%/icons/paragraph.png</value> <value>%origin%/icons/paragraph.svg</value>
</prop> </prop>
</node> </node>
</node> </node>
@ -161,7 +209,7 @@
</prop> </prop>
<node oor:name="UserDefinedImages"> <node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL"> <prop oor:name="ImageBigURL">
<value>%origin%/icons/links.png</value> <value>%origin%/icons/links.svg</value>
</prop> </prop>
</node> </node>
</node> </node>
@ -171,7 +219,7 @@
</prop> </prop>
<node oor:name="UserDefinedImages"> <node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL"> <prop oor:name="ImageBigURL">
<value>%origin%/icons/press_text.png</value> <value>%origin%/icons/press_text.svg</value>
</prop> </prop>
</node> </node>
</node> </node>
@ -182,7 +230,7 @@
</prop> </prop>
<node oor:name="UserDefinedImages"> <node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL"> <prop oor:name="ImageBigURL">
<value>%origin%/icons/incChar.png</value> <value>%origin%/icons/incChar.svg</value>
</prop> </prop>
</node> </node>
</node> </node>
@ -192,7 +240,7 @@
</prop> </prop>
<node oor:name="UserDefinedImages"> <node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL"> <prop oor:name="ImageBigURL">
<value>%origin%/icons/decChar.png</value> <value>%origin%/icons/decChar.svg</value>
</prop> </prop>
</node> </node>
</node> </node>
@ -202,7 +250,7 @@
</prop> </prop>
<node oor:name="UserDefinedImages"> <node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL"> <prop oor:name="ImageBigURL">
<value>%origin%/icons/incKern.png</value> <value>%origin%/icons/incKern.svg</value>
</prop> </prop>
</node> </node>
</node> </node>
@ -212,10 +260,32 @@
</prop> </prop>
<node oor:name="UserDefinedImages"> <node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL"> <prop oor:name="ImageBigURL">
<value>%origin%/icons/decKern.png</value> <value>%origin%/icons/decKern.svg</value>
</prop> </prop>
</node> </node>
</node> </node>
<node oor:name="convert-endnotes" oor:op="replace">
<prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.Endnotes.convertEndnotesExecution</value>
</prop>
<node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL">
<value>%origin%/icons/endnotes.svg</value>
</prop>
</node>
</node>
<node oor:name="balance-tail" oor:op="replace">
<prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.Archive.balanceCurParaLastLine</value>
</prop>
<node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL">
<value>%origin%/icons/tail.svg</value>
</prop>
</node>
</node>

View file

@ -3,7 +3,7 @@
xmlns:dep="http://openoffice.org/extensions/description/2006" xmlns:dep="http://openoffice.org/extensions/description/2006"
xmlns:xlink="http://www.w3.org/1999/xlink"> xmlns:xlink="http://www.w3.org/1999/xlink">
<identifier value="pro.litvinovg.epublishing" /> <identifier value="pro.litvinovg.epublishing" />
<version value="0.6.19" /> <version value="0.7.16" />
<platform value="all" /> <platform value="all" />
<display-name> <display-name>
<name lang="ru">Инструменты для создания электронных изданий</name> <name lang="ru">Инструменты для создания электронных изданий</name>
@ -33,8 +33,8 @@
</extension-description> </extension-description>
<icon> <icon>
<default xlink:href="icons/addon_icon.png" /> <default xlink:href="icons/addon_icon.svg" />
<high-contrast xlink:href="icons/addon_icon.png" /> <high-contrast xlink:href="icons/addon_icon.svg" />
</icon> </icon>
</description> </description>

View file

@ -1,9 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Archive" script:language="StarBasic" script:moduleType="normal">Sub archMark20 <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Archive" script:language="StarBasic" script:moduleType="normal">Sub archMark29
End Sub End Sub
Public Const MAX_CHAR_KERNING = 15
Public Const MIN_CHAR_KERNING = -10
Public Const MIN_SPACING_TO_SHRINK = 500
Sub resetNotesStyle Sub resetNotesStyle
Dim oDescriptor As Object Dim oDescriptor As Object
Dim dispatcher As Object Dim dispatcher As Object
@ -168,13 +172,16 @@ sub convertIndesignPageBreaks
Exit Sub Exit Sub
EndIf EndIf
turnOffTracking() turnOffTracking()
setZoomToSpeedUpTasks()
balanceFootNotes()
Dim oViewCursor As Object Dim oViewCursor As Object
oViewCursor = thisComponent.getCurrentController.getViewCursor oViewCursor = thisComponent.getCurrentController.getViewCursor
oViewCursor.jumpToFirstPage oViewCursor.jumpToFirstPage
Dim oSearch As Object Dim oSearch As Object
Dim oTextCursor As Object Dim oTextCursor As Object
Dim testCurs As Object
Dim firstLowercase As Boolean Dim firstLowercase As Boolean
Dim firstBreak As Boolean Dim firstBreak As Boolean
firstBreak = true firstBreak = true
@ -186,6 +193,7 @@ sub convertIndesignPageBreaks
Dim nextPara As Object Dim nextPara As Object
Dim prevPara As Object Dim prevPara As Object
Dim nextParaFirstCharacter As String Dim nextParaFirstCharacter As String
Dim stringContents As String
firstLowercase = false firstLowercase = false
oSearch = ThisComponent.createSearchDescriptor() oSearch = ThisComponent.createSearchDescriptor()
@ -198,7 +206,15 @@ sub convertIndesignPageBreaks
oTextCursor.gotoRange(oFound,false) oTextCursor.gotoRange(oFound,false)
oTextCursor.gotoStartOfParagraph(false) oTextCursor.gotoStartOfParagraph(false)
oTextCursor.gotoEndOfParagraph(true) oTextCursor.gotoEndOfParagraph(true)
testCurs = oTextCursor.Text.createTextCursorByRange(oTextCursor.End)
testCurs.goRight(1,false)
testCurs.gotoEndOfParagraph(true)
&apos;In case two page breaks go together
stringContents = testCurs.String
If stringContents &lt;&gt; pageBreakMarker Then
oTextCursor.goRight(1,true) oTextCursor.goRight(1,true)
EndIf
oTextCursor.String = &quot;&quot; oTextCursor.String = &quot;&quot;
oTextCursor.BreakType = com.sun.star.style.BreakType.PAGE_BEFORE oTextCursor.BreakType = com.sun.star.style.BreakType.PAGE_BEFORE
&apos;Go to Start of new paragraph to shrink prev page if necessary &apos;Go to Start of new paragraph to shrink prev page if necessary
@ -216,6 +232,7 @@ sub convertIndesignPageBreaks
Wait 100 Wait 100
pageNumber = getPageNumber(oTextCursor.Text.createTextCursorByRange(oTextCursor.End)) pageNumber = getPageNumber(oTextCursor.Text.createTextCursorByRange(oTextCursor.End))
EndIf EndIf
&apos;check first character &apos;check first character
oTextCursor.goRight(1,true) oTextCursor.goRight(1,true)
nextPara = oTextCursor.End nextPara = oTextCursor.End
@ -246,9 +263,10 @@ sub convertIndesignPageBreaks
EndIf EndIf
End If End If
If pageNumber - prevPageNumber &lt; 2 Then
&apos;If pageNumber - prevPageNumber &lt; 2 Then
&apos;stretchPrevPage(prevPara) &apos;stretchPrevPage(prevPara)
EndIf &apos;EndIf
prevPageNumber = pageNumber prevPageNumber = pageNumber
oFound = ThisComponent.findNext(oFound.End, oSearch) oFound = ThisComponent.findNext(oFound.End, oSearch)
@ -259,14 +277,16 @@ end Sub
Sub configureHeadings Sub configureHeadings
configureArchiveHeading1 configureArchiveHeading1
configureOtherArchiveHeadings configureArchiveHeadings()
End Sub End Sub
Sub configureArchiveHeading1 Sub configureArchiveHeading1
Dim outline1() As Object Dim outline1() As Object
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oSavePosition As Object Dim oSavePosition As Object
Dim initPosition As Object
Dim initPageNum As Integer
fixViewCursor()
oViewCursor = thisComponent.getCurrentController.getViewCursor oViewCursor = thisComponent.getCurrentController.getViewCursor
oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor) oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
outline1 = getHeadingWithLevel(1) outline1 = getHeadingWithLevel(1)
@ -274,33 +294,35 @@ Sub configureArchiveHeading1
Dim pageNumberCursor As Object Dim pageNumberCursor As Object
Dim i As Integer Dim i As Integer
Dim j As Integer Dim j As Integer
Dim initialPageCount As Integer
initialPageCount = ThisComponent.currentController.pageCount
For i = LBound(outline1) To UBound(outline1) For i = LBound(outline1) To UBound(outline1)
oViewCursor.goToRange(outline1(i), false) oViewCursor.goToRange(outline1(i), false)
oViewCursor.jumpToEndOfPage() oViewCursor.jumpToEndOfPage()
pageNumberCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor) initPosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
pageNumberCursor.goToStartOfWord(false) initPageNum = oViewcursor.getPage()
startViewPageNum = getPageNumber(pageNumberCursor)
Do While startViewPageNum = getPageNumber(pageNumberCursor) And initialPageCount = ThisComponent.currentController.pageCount Do While Not isContentPageChanged(initPosition, initPageNum) AND outline1(i).ParaBottomMargin &lt; 10000
outline1(i).ParaTopMargin = outline1(i).ParaTopMargin + 100 outline1(i).ParaBottomMargin = outline1(i).ParaBottomMargin + 100
Loop Loop
If outline1(i).ParaTopMargin &gt;= 100 Then Do While isContentPageChanged(initPosition, initPageNum)
outline1(i).ParaTopMargin = outline1(i).ParaTopMargin - 100 If outline1(i).ParaBottomMargin &lt; 0 Then
Exit Do
EndIf EndIf
outline1(i).ParaBottomMargin = outline1(i).ParaBottomMargin - 100
Loop
Next i Next i
oViewCursor.goToRange(oSavePosition,false) oViewCursor.goToRange(oSavePosition,false)
End Sub End Sub
Sub configureOtherArchiveHeadings Sub configureArchiveHeadings()
Dim outline1() As Object Dim outline1() As Object
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oSavePosition As Object Dim initPosition As Object
Dim initPageNum As Integer
Dim savePosition As Object
fixViewCursor()
oViewCursor = thisComponent.getCurrentController.getViewCursor oViewCursor = thisComponent.getCurrentController.getViewCursor
oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor) savePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
Dim startViewPageNum As Integer
Dim pageNumberCursor As Object Dim pageNumberCursor As Object
Dim i As Integer Dim i As Integer
Dim j As Integer Dim j As Integer
@ -312,23 +334,25 @@ Sub configureOtherArchiveHeadings
If outline1(i).BreakType &lt;&gt; 4 Then If outline1(i).BreakType &lt;&gt; 4 Then
oViewCursor.goToRange(outline1(i), false) oViewCursor.goToRange(outline1(i), false)
oViewCursor.jumpToEndOfPage() oViewCursor.jumpToEndOfPage()
pageNumberCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor) initPosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
pageNumberCursor.goToStartOfWord(false) initPageNum = oViewcursor.getPage()
startViewPageNum = getPageNumber(pageNumberCursor)
Do While startViewPageNum = getPageNumber(pageNumberCursor) And initialPageCount = ThisComponent.currentController.pageCount Do While Not isContentPageChanged(initPosition, initPageNum)
outline1(i).ParaTopMargin = outline1(i).ParaTopMargin + 100 outline1(i).ParaTopMargin = outline1(i).ParaTopMargin + 100
If (outline1(i).ParaTopMargin &gt; outline1(i).ParaBottomMargin) Then If (outline1(i).ParaTopMargin &gt; outline1(i).ParaBottomMargin) Then
Exit Do Exit Do
EndIf EndIf
Loop Loop
If outline1(i).ParaTopMargin &gt;= 100 Then Do While isContentPageChanged(initPosition, initPageNum)
outline1(i).ParaTopMargin = outline1(i).ParaTopMargin - 100 If outline1(i).ParaBottomMargin &lt; 0 Then
Exit Do
EndIf EndIf
outline1(i).ParaTopMargin = outline1(i).ParaTopMargin - 100
Loop
EndIf EndIf
Next i Next i
Next j Next j
oViewCursor.goToRange(oSavePosition,false) oViewCursor.goToRange(savePosition,false)
End Sub End Sub
@ -351,7 +375,7 @@ Sub stretchPrevPage()
Dim curPara As Object Dim curPara As Object
oViewCursor = thisComponent.getCurrentController.getViewCursor oViewCursor = thisComponent.getCurrentController.getViewCursor
oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor) oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
oViewCursor.goToRange(prevPara, false)
&apos;oViewCursor.goToStartOfLine(false) &apos;oViewCursor.goToStartOfLine(false)
pageNumberCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor) pageNumberCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
pageNumberCursor.goToStartOfWord(false) pageNumberCursor.goToStartOfWord(false)
@ -434,18 +458,80 @@ Sub stretchPrevPage()
Next i Next i
Exit Sub Exit Sub
EndIf EndIf
oViewCursor.goToRange(oSavePosition,false) oViewCursor.goToRange(oSavePosition,false)
End Sub End Sub
Sub balanceCurParaLastLine()
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim paraEnd As Object
Dim success As Boolean
Dim adjustType As Integer
fixViewCursor()
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.ParaIsHyphenation = true
success = balanceParaTail(oViewCursor.Start, false)
End Sub
Sub adjustLastLineCurPara()
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim paraEnd As Object
Dim success As Boolean
Dim adjustType As Integer
Dim hyph As Boolean
fixViewCursor()
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oTextCursor = oViewCursor.Text.CreateTextCursorByRange(oViewCursor)
paraEnd = getParaEnd(oTextCursor)
oTextCursor.goToRange(paraEnd,false)
oTextCursor.goLeft(1,true)
If (oTextCursor.String = &quot; &quot;) Then
oTextCursor.String = &quot;&quot;
EndIf
adjustType = oTextCursor.ParaAdjust
hyph = oTextCursor.ParaIsHyphenation
oTextCursor.ParaIsHyphenation = true
success = balanceParaTail(oTextCursor.Start, true)
If success And adjustType = 2 Then
oTextCursor.ParaLastLineAdjust = 2
Else
oTextCursor.ParaIsHyphenation = hyph
EndIf
End Sub
Sub balanceFootNotes()
Dim allNotes As Object
Dim aNote As Object
Dim x As Long
allNotes = ThisComponent.FootNotes
For x = 0 to allNotes.Count -1
aNote = allNotes.getByIndex(x)
balanceFootNote(aNote)
Next
End Sub
Sub balanceFootNote(textElement As Object)
Dim enum1Element As Object
Dim enum1 As Object
Dim oViewCursor As Object
oViewCursor = ThisComponent.CurrentController.getViewCursor()
enum1 = textElement.createEnumeration()
While enum1.hasMoreElements
enum1Element = enum1.nextElement
If enum1Element.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
oViewCursor.goToRange(enum1Element,false)
balanceCurParaLastLine()
EndIf
Wend
End Sub
Sub adjustLastLine(anchor As Object) Sub adjustLastLine(anchor As Object)
anchor.ParaAdjust = 2 Dim oViewCursor As Object
&apos;anchor.ParaLastLineAdjust = 2 oViewCursor = ThisComponent.CurrentController.getViewCursor()
balancePara(anchor) oViewCursor.goToRange(anchor,false)
adjustLastLineCurPara()
End Sub End Sub
Sub adjustFirstLine(anchor As Object) Sub adjustFirstLine(anchor As Object)
@ -460,96 +546,374 @@ Function isLowerCase(character As String) As Boolean
Else Else
charNum = ASC(character) charNum = ASC(character)
End If End If
If ((charNum &gt; 1071 AND charNum &lt; 1104) Or (charNum &gt; 60 AND charNum &lt; 123)) Then If ((charNum &gt; 1071 AND charNum &lt; 1120) Or (charNum &gt; 96 AND charNum &lt; 123)) Then
isLowerCase = true isLowerCase = true
Exit Function Exit Function
EndIf EndIf
isLowerCase = false isLowerCase = false
End Function End Function
Sub balancePara(targetPara As Object)
&apos; Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
Function balanceParaTail(targetPara As Object, strictMode As Boolean) As Boolean
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oTextCursor As Object Dim oTextCursor As Object
Dim oPara As Object Dim oContent As Object
Dim oParaStart As Object Dim oContentStart As Object
Dim oParaEnd As Object Dim oContentEnd As Object
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.goToRange(targetPara, false)
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
oContentStart = getParaStart(oTextCursor)
oContentEnd = getParaEnd(oTextCursor)
oContent = getParaSelected(oContentStart,oContentEnd)
balanceParaTail = balanceContentTail(oContent, strictMode)
End Function
Function balanceContentTail(oContent As Object, strictMode As Boolean) As Boolean
&apos; Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
balanceContentTail = false
Dim oViewCursor As Object
Dim paraLen As Integer Dim paraLen As Integer
Dim lineCount As Integer Dim lineCount As Integer
Dim initialLineCount As Integer Dim initialLineCount As Integer
Dim lineLen As Integer Dim lineLen As Integer
Dim mathExpect As Integer Dim initialLineLen As Integer
Dim minLastLineLength As Integer Dim minLastLineLength As Integer
paraLen = 0 Dim medianLen As Integer
lineLen = 0 Dim paraLines() As Object
minLastLineLength = 0 Dim fallBackSuccess As Boolean
initialLineCount = 0 fallBackSuccess = false
oViewCursor = ThisComponent.CurrentController.getViewCursor() oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.goToRange(targetPara, false) paraLen = Len(oContent.String)
paraLines = getContentLines(oContent)
initialLineCount = getParaLinesCount(paraLines)
lineLen = getParaLineLength(paraLines, 0)
initialLineLen = lineLen
medianLen = calculateMedianParaLen(oContent)
minLastLineLength = medianLen * 0.93
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor) If Not IsEmpty(oContent.CharKerning) Then
oPara = oViewCursor.Text.createTextCursorByRange(oViewCursor) initialCharKerning = oContent.CharKerning
&apos;Go to start of para
oTextCursor.gotoStartOfParagraph(false)
&apos;Get start position
oParaStart = oTextCursor.getStart()
&apos;Go to end of para
oTextCursor.gotoEndOfParagraph(false)
&apos;Get end position
oParaEnd = oTextCursor.getEnd()
&apos;return Text cursor to start
oTextCursor.goToRange(oParaStart,false)
&apos;oPara is full para cursor
oPara.goToRange(oParaStart,false)
oPara.goToRange(oParaEnd,true)
Do
&apos;Not first iteration
If minLastLineLength &lt;&gt; 0 Then
If oPara.CharKerning &lt; 50 Then
If(IsEmpty(oPara.CharKerning)) Then
oPara.CharKerning = 0
Else Else
oPara.CharKerning = oPara.CharKerning + 2 initialCharKerning = 0
End If End If
If initialLineCount &lt; 2 Then
Exit Function
EndIf
Do While lastLineIsNotBalanced(lineLen, minLastLineLength)
decreaseCharKerning(oContent)
paraLines = getContentLines(oContent)
lineCount = getParaLinesCount(paraLines)
lineLen = getParaLineLength(paraLines,0)
If (lineCount &lt; initialLineCount ) OR (oContent.CharKerning &lt; MIN_CHAR_KERNING) Then
&apos;Tightened last line but it is still smaller than we need
fallBackSuccess = tryExpandPrevLines(oContent, minLastLineLength)
If Not fallBackSuccess Then
If strictMode Then
oContent.CharKerning = initialCharKerning
balanceContentTail = false
Else Else
&apos;Failed to balance para paraLines = getContentLines(oContent)
lineLen = getParaLineLength(paraLines,0)
If (lineLen &lt; initialLineLen) Then
oContent.CharKerning = initialCharKerning
balanceContentTail = false
Else
balanceContentTail = true
EndIf
EndIf
oViewCursor.collapseToEnd()
Exit Function
EndIf
Exit Do
EndIf
Loop
oViewCursor.collapseToEnd()
balanceContentTail = true
End Function
Function shrinkContentWithKerning(oContent As Object) As Boolean
&apos; Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
shrinkContentWithKerning = false
Dim paraLen As Integer
Dim lineCount As Integer
Dim saveLineCount As Integer
Dim initialLineCount As Integer
Dim contentLines() As Object
Dim kerningValue As Integer
contentLines = getContentLines(oContent)
initialLineCount = getParaLinesCount(contentLines)
saveLineCount = initialLineCount
If Not IsEmpty(oContent.CharKerning) Then
initialCharKerning = oContent.CharKerning
Else
initialCharKerning = 0
End If
kerningValue = initialCharKerning
&apos;Reduce kerning is useless if content is less than 2 lines long
If initialLineCount &lt; 2 Then
Exit Function
EndIf
Do While oContent.CharKerning &gt; MIN_CHAR_KERNING
decreaseCharKerning(oContent)
contentLines = getContentLines(oContent)
lineCount = getParaLinesCount(contentLines)
If lineCount &lt; saveLineCount Then
kerningValue = oContent.CharKerning
saveLineCount = lineCount
EndIf
Loop
&apos;If decrease kerning didn&apos;t reduce lines then retreat to latest value that changed lines count
If kerningValue &lt;&gt; oContent.CharKerning Then
oContent.CharKerning = kerningValue
EndIf
If initialCharKerning &lt;&gt; kerningValue Then
shrinkContentWithKerning = true
EndIf
End Function
Function tryExpandPrevLines(oPara As Object, minLastLineLength As Integer) As Boolean
Dim lineCount As Integer
Dim finishLineCount As Integer
Dim initialLineCount As Integer
Dim paraLine As Object
Dim finishLastline As Object
Dim lineNum As Integer
Dim failedLines() As Integer
Dim lastLineCharKerning As Integer
Dim paraLines() As Object
Dim lineCharKerning As Integer
paraLines = getContentLines(oPara)
lineLen = getParaLineLength(paraLines,0)
initialLineCount = getParaLinesCount(paraLines)
lineCount = initialLineCount
lineNum = 0
Do While lineCount = initialLineCount And lastLineIsNotBalanced(lineLen, minLastLineLength)
If (lineNum + 1 &lt; lineCount And Not IsInArray(failedLines, lineNum + 1)) Then
lineNum = lineNum + 1
EndIf
paraLine = paraLines(UBound(paraLines) - lineNum)
increaseCharKerning(paraLine)
paraLines = getContentLines(oPara)
lineCount = getParaLinesCount(paraLines)
lineLen = getParaLineLength(paraLines,0)
If lineNum &gt; 1 And (lineCount &lt;&gt; initialLineCount Or paraLine.CharKerning &gt; MAX_CHAR_KERNING) Then
AddToArray(failedLines, lineNum)
lineCharKerning = decreaseCharKerning(paraLine)
paraLines = getContentLines(oPara)
lineCount = getParaLinesCount(paraLines)
If lineCount &gt; initialLineCount Then
Do While lineCount &gt; initialLineCount And lineCharKerning &gt; MIN_CHAR_KERNING
lineCharKerning = decreaseCharKerning(paraLine)
paraLines = getContentLines(oPara)
lineCount = getParaLinesCount(paraLines)
Loop
EndIf
lineLen = getParaLineLength(paraLines,0)
lineNum = 0
ElseIf lineNum = 1 And paraLine.CharKerning &gt; MAX_CHAR_KERNING Then
tryExpandPrevLines = false
Exit Function
EndIf
Loop
If Not lastLineIsNotBalanced(lineLen, minLastLineLength) And lineCount = initialLineCount Then
tryExpandPrevLines = true
Else
tryExpandPrevLines = false
EndIf
normalizeLastLine(oPara)
End Function
Sub normalizeLastLine(oPara As Object)
Dim lineCount As Integer
Dim finishLineCount As Integer
Dim initialLineCount As Integer
Dim paraLine As Object
Dim finishLastline As Object
Dim lineNum As Integer
Dim failedLines() As Integer
Dim lastLineCharKerning As Integer
Dim paraLines() As Object
Dim oTextCursor As Object
oTextCursor = oPara.Text.createTextCursorByRange(oPara)
oTextCursor.collapseToEnd()
If ( oTextCursor.CharKerning &gt; 0 ) Then
Exit Sub Exit Sub
EndIf EndIf
EndIf
oViewCursor.goToRange(oParaStart,false) &apos;increase last line kerning to 0
oTextCursor.goToRange(oParaStart,false) paraLines = getContentLines(oPara)
lineCount = 0 lineCount = getParaLinesCount(paraLines)
While NOT oTextCursor.isEndOfParagraph() finishLineCount = lineCount
oViewCursor.gotoEndOfLine(true) finishLastline = paraLines(UBound(paraLines))
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor) &apos;try just set 0 char kerning to last line, reduce kerning if failed
lineLen = Len(oTextCursor.getString()) lastLineCharKerning = 0
paraLen = paraLen + lineLen finishLastline.CharKerning = lastLineCharKerning
lineCount = lineCount + 1 paraLines = getContentLines(oPara)
oViewCursor.collapseToEnd() lineCount = getParaLinesCount(paraLines)
Wend If lineCount &gt; finishLineCount Then
&apos;set initial line count Do While lineCount &gt; finishLineCount AND lastLineCharKerning &gt; MIN_CHAR_KERNING
If initialLineCount = 0 Then lastLineCharKerning = lastLineCharKerning - 2
initialLineCount = lineCount finishLastline.CharKerning = lastLineCharKerning
ElseIf lineCount &gt; initialLineCount Then paraLines = getContentLines(oPara)
&apos;Undo last iteration as line overflow happened. lineCount = getParaLinesCount(paraLines)
&apos;And exit Loop
If(IsEmpty(oPara.CharKerning)) Then
oPara.CharKerning = 0
Else
oPara.CharKerning = oPara.CharKerning - 2
EndIf EndIf
Exit sub
EndIf
mathExpect = paraLen / lineCount
minLastLineLength = mathExpect * 0.9
Loop Until minLastLineLength &lt; lineLen
End Sub End Sub
Function getParaLinesCount(paraLines() As Object) As Integer
getParaLinesCount = UBound(paraLines) + 1
End Function
Function getParaLineLength(paraLines() As Object, lineNumber As Integer) As Integer
Dim arrIndex As Integer
arrIndex = UBound(paraLines) - lineNumber
If (arrIndex &gt;= 0) Then
getParaLineLength = Len(paraLines(arrIndex).String)
Else
&apos;Throw an error?
getParaLineLength = 0
EndIf
End Function
Function getContentLines(oContent As Object) As Variant
Dim oTextCursor As Object
Dim oViewCursor As Object
Dim paraLine As Object
Dim paraLines() As Object
oViewCursor = ThisComponent.CurrentController.getViewCursor()
&apos;initial value is 1 As paragraph can&apos;t be 0 lines long
oTextCursor = oContent.Text.createTextCursorByRange(oContent)
oTextCursor.collapseToStart()
oViewCursor.goToRange(oTextCursor,false)
While NOT oTextCursor.isEndOfParagraph()
oViewCursor.gotoEndOfLine(true)
If (Len(oViewCursor.String) = 0) Then
oTextCursor.goToRange(oViewCursor,false)
oTextCursor.goRight(1,false)
oViewCursor.goToRange(oTextCursor,false)
oViewCursor.gotoEndOfLine(true)
EndIf
If (Len(oViewCursor.String) &gt; 0) Then
paraLine = oViewCursor.Text.createTextCursorByRange(oViewCursor)
AddToArray(paraLines, paraLine)
EndIf
oViewCursor.collapseToEnd()
oTextCursor.goToRange(oViewCursor,false)
Wend
getContentLines = paraLines
End Function
Function decreaseCharKerning(oPara As Object) As Integer
Dim initialCharKerning As Integer
Dim textExcerpts As Object
Dim textExcerpt As Object
initialCharKerning = MIN_CHAR_KERNING + 2
If Not (IsEmpty(oPara.CharKerning)) Then
initialCharKerning = oPara.CharKerning
EndIf
If (initialCharKerning &gt;= MIN_CHAR_KERNING) Then
oPara.CharKerning = initialCharKerning - 2
EndIf
decreaseCharKerning = initialCharKerning - 2
End Function
Function increaseCharKerning(oPara As Object) As Integer
Dim initialCharKerning As Integer
Dim textExcerpts As Object
Dim textExcerpt As Object
initialCharKerning = MAX_CHAR_KERNING - 2
If Not (IsEmpty(oPara.CharKerning)) Then
initialCharKerning = oPara.CharKerning
EndIf
oPara.CharKerning = initialCharKerning + 2
increaseCharKerning = initialCharKerning + 2
End Function
Function lastLineIsNotBalanced(lineLen As Integer,minLastLineLength As Integer) As Boolean
lastLineIsNotBalanced = true
If lineLen = 0 Then
lastLineIsNotBalanced = false
Exit Function
EndIf
If lineLen &gt;= minLastLineLength Then
lastLineIsNotBalanced = false
EndIf
End Function
Function getParaStart(oTextCursor As Object) As Object
If NOT oTextCursor.isStartOfParagraph() Then
oTextCursor.gotoStartOfParagraph(false)
EndIf
getParaStart = oTextCursor.getStart()
End Function
Function getParaEnd(oTextCursor As Object) As Object
If NOT oTextCursor.isEndOfParagraph() Then
oTextCursor.gotoEndOfParagraph(false)
EndIf
getParaEnd = oTextCursor.getEnd()
End Function
Function getParaSelected(oParaStart As Object,oParaEnd As Object) As Object
Dim oPara As Object
oPara = oParaStart.Text.createTextCursorByRange(oParaStart)
oPara.goToRange(oParaEnd,true)
getParaSelected = oPara
End Function
Function calculateMedianParaLen(oPara As Object) As Integer
Dim oTextCursor As Object
Dim oViewCursor As Object
Dim lineCount As Integer
Dim lineLen As Integer
Dim linesLen As Integer
linesLen = 0
calculateMedianParaLen = 0
lineCount = 0
lineLen = 0
If (Len (oPara.String) = 0) Then
Exit Function
EndIf
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.goToRange(oPara, false)
oViewCursor.collapseToStart()
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
oParaStart = getParaStart(oTextCursor)
oViewCursor.goToRange(oParaStart,false)
While NOT oTextCursor.isEndOfParagraph()
oViewCursor.gotoEndOfLine(true)
lineLen = Len(oViewCursor.getString())
If lineLen &gt; 0 Then
linesLen = linesLen + lineLen
lineCount = lineCount + 1
oViewCursor.collapseToEnd()
oTextCursor.goToRange(oViewCursor,false)
Else
oTextCursor.goToRange(oViewCursor,false)
oTextCursor.goRight(1,false)
oViewCursor.goToRange(oTextCursor,false)
EndIf
Wend
If lineCount &gt; 0 Then
calculateMedianParaLen = linesLen / lineCount
EndIf
End Function
Sub convertBookmarksToFootnotes() Sub convertBookmarksToFootnotes()
Dim description As String Dim description As String
description = getTranslation(&quot;convertIndesignFoonotesConfirmation&quot;) description = getTranslation(&quot;convertIndesignFoonotesConfirmation&quot;)
@ -588,9 +952,7 @@ Sub convertBookmarksToFootnotes()
EndIf EndIf
convertLinkToFootnote(forwardLink,backwardLink) convertLinkToFootnote(forwardLink,backwardLink)
EndIf EndIf
Next i Next i
resetNotesStyle resetNotesStyle
MsgBox getTranslation(&quot;convertIndesignFootnotesFinish&quot;) MsgBox getTranslation(&quot;convertIndesignFootnotesFinish&quot;)
End Sub End Sub
@ -670,13 +1032,6 @@ Sub removeFootnoteSignInText
character = oViewCursor.String character = oViewCursor.String
Loop Loop
oViewCursor.goRight(1,true) oViewCursor.goRight(1,true)
character = oViewCursor.String
Do While isLinkCharacter(character)
oViewCursor.String = &quot;&quot;
oViewCursor.goRight(1,true)
character = oViewCursor.String
Loop
oViewCursor.goRight(1,false)
End Sub End Sub
Function isLinkCharacter(character As String) As Boolean Function isLinkCharacter(character As String) As Boolean
@ -763,8 +1118,10 @@ End Sub
Sub replaceParaStyle Sub replaceParaStyle
dim oldStyleName As String dim oldStyleName As String
dim oldStyleNameLocalized As String
dim oldStyle As Object dim oldStyle As Object
dim newStyleName As String dim newStyleName As String
dim newStyleNameLocalized As String
dim paragraphStyles As Object dim paragraphStyles As Object
dim userInput As Integer dim userInput As Integer
Dim listBox As Object Dim listBox As Object
@ -796,11 +1153,11 @@ Sub replaceParaStyle
listBox.addItems(sortedDPSN , 0) listBox.addItems(sortedDPSN , 0)
oDialog.Title = getTranslation(&quot;replaceParaStyleDialogTitle&quot;) oDialog.Title = getTranslation(&quot;replaceParaStyleDialogTitle&quot;)
oDialog.Execute() oDialog.Execute()
newStyleName = oDialog.model.Tag newStyleNameLocalized = oDialog.model.Tag
If newStyleName=&quot;0&quot; or newStyleName=&quot;&quot; Then If newStyleNameLocalized=&quot;0&quot; or newStyleNameLocalized=&quot;&quot; Then
Exit sub Exit sub
EndIf EndIf
foundIndex = getIndex(displayParaStyleNames, newStyleName) foundIndex = getIndex(displayParaStyleNames, newStyleNameLocalized)
&apos;set style system name instead of display name &apos;set style system name instead of display name
newStyleName = paraStyleNames(foundIndex) newStyleName = paraStyleNames(foundIndex)
@ -808,11 +1165,10 @@ Sub replaceParaStyle
MsgBox getTranslation(&quot;replaceParaStyleStylesEqualsNotification&quot;) MsgBox getTranslation(&quot;replaceParaStyleStylesEqualsNotification&quot;)
Exit sub Exit sub
EndIf EndIf
If oldStyleName &lt;&gt; &quot;&quot; Then If oldStyleName &lt;&gt; &quot;&quot; Then
oldStyle = paraStyles.getByName(oldStyleName) oldStyle = paraStyles.getByName(oldStyleName)
If NOT oldStyle.isUserDefined Then If NOT oldStyle.isUserDefined Then
MsgBox getTranslation(&quot;replaceParaStyleCurrentStyleIsStandard&quot;) replaceDefaultParaStyle(getLocalizedParaStyleName(oldStyleName), newStyleNameLocalized)
Exit sub Exit sub
EndIf EndIf
oldStyle.ParentStyle = newStyleName oldStyle.ParentStyle = newStyleName
@ -830,10 +1186,70 @@ Sub replaceParaStyle
EndIf EndIf
EndIf EndIf
Wend Wend
End Sub End Sub
Function getLocalizedParaStyleName(styleName as String) As String
Dim style As Object
Dim styles As Object
styles = ThisComponent.StyleFamilies
style = styles.getByName(styles.elementNames(1)).getByName(styleName)
getLocalizedParaStyleName = style.DisplayName
End Function
sub replaceDefaultParaStyle(fromStyle As String, toStyle As String)
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
dim args1(21) as new com.sun.star.beans.PropertyValue
args1(0).Name = &quot;SearchItem.StyleFamily&quot;
args1(0).Value = 2
args1(1).Name = &quot;SearchItem.CellType&quot;
args1(1).Value = 0
args1(2).Name = &quot;SearchItem.RowDirection&quot;
args1(2).Value = true
args1(3).Name = &quot;SearchItem.AllTables&quot;
args1(3).Value = false
args1(4).Name = &quot;SearchItem.SearchFiltered&quot;
args1(4).Value = false
args1(5).Name = &quot;SearchItem.Backward&quot;
args1(5).Value = false
args1(6).Name = &quot;SearchItem.Pattern&quot;
args1(6).Value = true
args1(7).Name = &quot;SearchItem.Content&quot;
args1(7).Value = false
args1(8).Name = &quot;SearchItem.AsianOptions&quot;
args1(8).Value = false
args1(9).Name = &quot;SearchItem.AlgorithmType&quot;
args1(9).Value = 0
args1(10).Name = &quot;SearchItem.SearchFlags&quot;
args1(10).Value = 65536
args1(11).Name = &quot;SearchItem.SearchString&quot;
args1(11).Value = fromStyle
args1(12).Name = &quot;SearchItem.ReplaceString&quot;
args1(12).Value = toStyle
args1(13).Name = &quot;SearchItem.Locale&quot;
args1(13).Value = 255
args1(14).Name = &quot;SearchItem.ChangedChars&quot;
args1(14).Value = 2
args1(15).Name = &quot;SearchItem.DeletedChars&quot;
args1(15).Value = 2
args1(16).Name = &quot;SearchItem.InsertedChars&quot;
args1(16).Value = 2
args1(17).Name = &quot;SearchItem.TransliterateFlags&quot;
args1(17).Value = 1280
args1(18).Name = &quot;SearchItem.Command&quot;
args1(18).Value = 3
args1(19).Name = &quot;SearchItem.SearchFormatted&quot;
args1(19).Value = false
args1(20).Name = &quot;SearchItem.AlgorithmType2&quot;
args1(20).Value = 1
args1(21).Name = &quot;Quiet&quot;
args1(21).Value = true
dispatcher.executeDispatch(document, &quot;.uno:ExecuteSearch&quot;, &quot;&quot;, 0, args1())
end sub
Function getIndex(array As variant, value As variant) As Integer Function getIndex(array As variant, value As variant) As Integer
Dim id As Integer Dim id As Integer
Dim nRight As Integer Dim nRight As Integer
@ -888,4 +1304,26 @@ Sub subShellSort(mArray)
h = h \ 3 h = h \ 3
Loop Loop
End Sub End Sub
sub setZoomToSpeedUpTasks
dim document as object
dim dispatcher as object
dim args1(2) as new com.sun.star.beans.PropertyValue
dim args2(1) as new com.sun.star.beans.PropertyValue
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
args1(0).Name = &quot;Zoom.Value&quot;
args1(0).Value = 60
args1(1).Name = &quot;Zoom.ValueSet&quot;
args1(1).Value = 28703
args1(2).Name = &quot;Zoom.Type&quot;
args1(2).Value = 0
dispatcher.executeDispatch(document, &quot;.uno:Zoom&quot;, &quot;&quot;, 0, args1())
args2(0).Name = &quot;ViewLayout.Columns&quot;
args2(0).Value = 1
args2(1).Name = &quot;ViewLayout.BookMode&quot;
args2(1).Value = false
dispatcher.executeDispatch(document, &quot;.uno:ViewLayout&quot;, &quot;&quot;, 0, args2())
end sub
</script:module> </script:module>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Books" script:language="StarBasic" script:moduleType="normal">Sub markBooks6 <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Books" script:language="StarBasic" script:moduleType="normal">Sub markBooks7
End Sub End Sub
Sub setUniqPageStyles Sub setUniqPageStyles
@ -362,7 +362,7 @@ Sub setUniqPageStylesDEPRECATED
End Sub End Sub
Function hasPageStyleWith(pageStyleName) Function hasPageStyleWith(pageStyleName As String) As Boolean
Dim enum1 As Object Dim enum1 As Object
Dim enum1Element As Object Dim enum1Element As Object
Dim curPage As String Dim curPage As String
@ -387,7 +387,7 @@ Function hasPageStyleWith(pageStyleName)
hasPageStyleWith = false hasPageStyleWith = false
End Function End Function
Function findFirstPageNumberWithStyle(pageStyleName) Function findFirstPageNumberWithStyle(pageStyleName As String) As Integer
Dim enum1 As Object Dim enum1 As Object
Dim enum1Element As Object Dim enum1Element As Object
Dim curPage As String Dim curPage As String
@ -396,6 +396,7 @@ Function findFirstPageNumberWithStyle(pageStyleName)
Dim oViewCursor As Object Dim oViewCursor As Object
Dim anchor As Object Dim anchor As Object
Dim oSavePosition As Object Dim oSavePosition As Object
Dim curPageStyleName As String
oViewCursor = ThisComponent.CurrentController.getViewCursor() oViewCursor = ThisComponent.CurrentController.getViewCursor()
oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor) oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
enum1 = ThisComponent.Text.createEnumeration() enum1 = ThisComponent.Text.createEnumeration()

466
ePublishing/Endnotes.xba Normal file
View file

@ -0,0 +1,466 @@
<?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="Endnotes" script:language="StarBasic" script:moduleType="normal">Global Const endnoteFieldPrefix = &quot;custom_endnote_&quot;
Global Const endnoteInTextAnchorSuffix = &quot;-text_anchor&quot;
Global Const endnoteInBodyAnchorSuffix = &quot;-body_anchor&quot;
Sub convertEndnotesExecution
Dim oSelections As Object
Dim oAnchor1 As Object
Dim oAnchor2 As Object
Dim oAnchor1Name As String
Dim oAnchor2Name As String
Dim foundEndNotes() As Object
Dim textSelection As Object
Dim nativeEndnotesCounter As Integer
Dim customEndnotesCounter As Integer
If IsNull(ThisComponent) Then
MsgBox getTranslation(&quot;something weird happened error text&quot;)
Exit Sub
End If
oSelections = ThisComponent.getCurrentSelection()
If NOT oSelections.supportsService(&quot;com.sun.star.text.TextRanges&quot;) Then
MsgBox getTranslation(&quot;EndnotesNotFound&quot;)
Exit Sub
End If
objectsCount = oSelections.getCount()
If objectsCount &gt; 1 Then
MsgBox getTranslation(&quot;too much selections&quot;)
Exit Sub
End If
textSelection = oSelections.getByIndex(0)
foundEndNotes() = findEndNotesInSelection(textSelection)
nativeEndnotesCounter = UBound(foundEndNotes(0))
customEndnotesCounter = UBound(foundEndNotes(1))
If (nativeEndnotesCounter = -1 And customEndnotesCounter = -1 ) Then
MsgBox getTranslation(&quot;EndnotesNotFound&quot;)
Exit Sub
EndIf
If ( customEndnotesCounter = -1 ) Then
&apos;only native found window convert to custom?
&apos;Window Select paragraph for endnotes output or cancel
runEndnotesConversionDialog(foundEndNotes(0))
Exit Sub
EndIf
If (nativeEndnotesCounter = -1 ) Then
&apos;only custom endnotes found. Window convert to native?
runEndnotesCustomToNativeDialog(foundEndNotes(1))
Exit Sub
EndIf
&apos;both custom and native endnotes found
&apos;convert to custom all or
&apos;convert to native
runDualEndnotesDialog(foundEndNotes(0),foundEndNotes(1))
End Sub
Sub runDualEndnotesDialog(nativeEndNotes() As Object,customEndnotes() As Object)
Dim dialog As Object
waitingForDialog = true
dialog = notModalDialog(&quot;EndnotesConversion&quot;)
dialog.getControl(&quot;found&quot;).SetText(getTranslation(&quot;EndnotesNativeDialogFound&quot;) &amp; CStr(UBound(nativeEndNotes)+1))
dialog.getControl(&quot;found2&quot;).SetText(getTranslation(&quot;EndnotesCustomDialogFound&quot;) &amp; CStr(UBound(customEndnotes)+1))
dialog.getControl(&quot;found2&quot;).Model.EnableVisible = TRUE
dialog.getControl(&quot;description&quot;).SetText(getTranslation(&quot;EndnotesConversionTwoOptions&quot;))
dialog.getControl(&quot;cancel&quot;).Label = getTranslation(&quot;buttonCancel&quot;)
dialog.getControl(&quot;start&quot;).Label = getTranslation(&quot;toNativeEndnotes&quot;)
dialog.getControl(&quot;option2&quot;).Label = getTranslation(&quot;toCustomEndnotes&quot;)
dialog.getControl(&quot;option2&quot;).Model.EnableVisible = TRUE
dialog.setvisible(true)
Do While waitingForDialog
If dialog.getControl(&quot;cancel&quot;).model.state = 1 then
exit Do
EndIf
If dialog.getControl(&quot;start&quot;).model.state = 1 then
convertCustomEndnotesToNative(customEndnotes)
exit Do
EndIf
If dialog.getControl(&quot;option2&quot;).model.state = 1 then
convertEndnotesToCustom(nativeEndNotes)
exit Do
EndIf
wait (100)
Loop
dialog.dispose
End Sub
Sub runEndnotesCustomToNativeDialog(customEndnotes() As Object)
Dim dialog As Object
waitingForDialog = true
dialog = notModalDialog(&quot;EndnotesConversion&quot;)
dialog.getControl(&quot;found&quot;).SetText(getTranslation(&quot;EndnotesCustomDialogFound&quot;) &amp; CStr(UBound(customEndnotes)+1))
dialog.getControl(&quot;description&quot;).SetText(getTranslation(&quot;EndnotesCustomConversionOption&quot;))
dialog.getControl(&quot;cancel&quot;).Label = getTranslation(&quot;buttonCancel&quot;)
dialog.getControl(&quot;start&quot;).Label = getTranslation(&quot;buttonOk&quot;)
dialog.setvisible(true)
Do While waitingForDialog
If dialog.getControl(&quot;cancel&quot;).model.state = 1 then
exit Do
EndIf
If dialog.getControl(&quot;start&quot;).model.state = 1 then
convertCustomEndnotesToNative(customEndnotes)
exit Do
EndIf
wait (100)
Loop
dialog.dispose
End Sub
Sub convertCustomEndnotesToNative(foundEndnotes() As Object)
Dim i As Long
Dim bodyAnchorName As String
Dim textAnchorName As String
Dim bookmarksName As String
Dim bookmarks As Object
bookmarksName = ThisComponent.Links.ElementNames(6)
bookmarks = ThisComponent.Links.getByName(bookmarksName)
For i = LBound(foundEndnotes) To UBound(foundEndnotes)
bodyAnchorName = getBodyAnchorName(foundEndnotes(i))
textAnchorName = getTextAnchorName(bodyAnchorName)
If bookmarks.hasByName(bodyAnchorName) And bookmarks.hasByName(textAnchorName) Then
convertLinksToEndnote(bodyAnchorName,textAnchorName)
EndIf
Next i
End Sub
Function getBodyAnchorName(textRange As Object) As String
getBodyAnchorName = &quot;&quot;
If (Len(textRange.HyperLinkURL) &gt; 0) Then
getBodyAnchorName = Right(textRange.HyperLinkURL,Len(textRange.HyperLinkURL)-1)
EndIf
End Function
Function getTextAnchorName(bodyAnchorName As String) As String
getTextAnchorName = &quot;&quot;
If Len(bodyAnchorName) &gt; Len(endnoteInBodyAnchorSuffix) Then
getTextAnchorName = Left(bodyAnchorName,Len(bodyAnchorName)-Len(endnoteInBodyAnchorSuffix)) &amp; endnoteInTextAnchorSuffix
EndIf
End Function
Sub convertLinksToEndnote(forwardLink As String,backwardLink As String)
Dim bookMarkName As String
bookmarkName = ThisComponent.Links.ElementNames(6)
Dim bookmarks As Object
bookmarks = ThisComponent.Links.getByName(bookmarkName)
Dim forward As Object
Dim backward As Object
Dim oViewCursor As Object
Dim footNoteSign As String
oViewCursor = ThisComponent.CurrentController.getViewCursor()
Dim oTextCursor As Object
If NOT bookmarks.hasByName(forwardLink) OR NOT bookmarks.hasByName(backwardLink) Then
exit sub
EndIf
forward = bookmarks.getByName(forwardLink)
backward = bookmarks.getByName(backwardLink)
footNoteSign = forward.Anchor.String
oViewCursor.goToRange(forward.Anchor,false)
SendRM
SendRM
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
goToEndOfEndnoteBody(oTextCursor)
oTextCursor.goToRange(oViewCursor,true)
oViewCursor.goToRange(oTextCursor,true)
unoCut()
SendRM
oViewCursor.goToRange(backward.Anchor,false)
removeEndnoteSignInText()
createEndnote
unoPaste()
oViewCursor.getText.setLabel(footNoteSign)
forward.dispose()
backward.dispose()
End Sub
Sub goToEndOfEndnoteBody(oTextCursor As Object)
Dim position As Object
position = oTextCursor.End
oTextCursor.goToEndOfParagraph(false)
oTextCursor.goRight(1,false)
If oTextCursor.ParaStyleName &lt;&gt; &quot;Endnote&quot; OR oTextCursor.CharStyleName = &quot;Endnote Symbol&quot; Then
oTextCursor.goLeft(1,false)
Exit Sub
EndIf
&apos;Got to the end of the document
If oTextCursor.Text.compareRegionEnds(position,oTextCursor.End) = 0 Then
Exit Sub
EndIf
goToEndOfEndnoteBody(oTextCursor)
End Sub
Sub removeEndnoteSignInText()
Dim oViewCursor As Object
Dim character As String
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.String = &quot;&quot;
oViewCursor.HyperLinkURL=&quot;&quot;
End Sub
sub createEndnote
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;)
dispatcher.executeDispatch(document, &quot;.uno:InsertEndnote&quot;, &quot;&quot;, 0, Array())
end Sub
Sub runEndnotesConversionDialog(foundEndNotes As Variant)
Dim dialog As Object
waitingForDialog = true
dialog = notModalDialog(&quot;EndnotesConversion&quot;)
dialog.getControl(&quot;found&quot;).SetText(getTranslation(&quot;EndnotesNativeDialogFound&quot;) &amp; CStr(UBound(foundEndNotes)+1))
dialog.getControl(&quot;description&quot;).SetText(getTranslation(&quot;EndnotesNativeDialogDescriptionSelect&quot;))
dialog.getControl(&quot;cancel&quot;).Label = getTranslation(&quot;buttonCancel&quot;)
dialog.getControl(&quot;start&quot;).Label = getTranslation(&quot;buttonOk&quot;)
dialog.setvisible(true)
Do While waitingForDialog
If dialog.getControl(&quot;cancel&quot;).model.state = 1 then
exit Do
EndIf
If dialog.getControl(&quot;start&quot;).model.state = 1 then
convertEndnotesToCustom(foundEndNotes)
exit Do
EndIf
wait (100)
Loop
dialog.dispose
End Sub
Sub convertEndnotesToCustom(foundEndNotes As Variant)
Dim oViewCursor As Object
Dim outputPosition As Object
Dim endnoteSigns() As String
Dim fieldPrefix As String
Dim i As Integer
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.goToStartOfLine(false)
outputPosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
endnoteSigns = getEndnoteSigns(foundEndNotes)
fieldPrefix = createEndnoteFieldPrefix()
For i = LBound(foundEndNotes) To Ubound(foundEndNotes)
convertNativeEndnoteToCustom(endnoteSigns(i), foundEndNotes(i),outputPosition,fieldPrefix, i)
Next i
End Sub
Function createEndnoteFieldPrefix As String
Dim names() As String
Dim prefix As String
names = ThisComponent.getTextFieldMasters().getElementNames()
prefix = endnoteFieldPrefix &amp; RND_String() &amp; &quot;_&quot;
If NOT startsWithInArray(prefix, names) Then
createEndnoteFieldPrefix = prefix
Exit Function
EndIf
createEndnoteFieldPrefix = prefix
End Function
Function startsWithInArray(prefix As String, names As Variant) As Boolean
Dim i As Long
For i = LBound(names) To Ubound(names)
If InStr(names(i), &quot;com.sun.star.text.fieldmaster.User.&quot; &amp; prefix) = 1 Then
startsWithInArray = true
Exit Function
EndIf
Next i
startsWithInArray = false
End Function
Sub convertNativeEndnoteToCustom(sign As String, nativeEndNoteTextRange As Object,outputPosition As Object, fieldPrefix As String, num As Integer)
&apos;Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim endNote As Object
Dim anchorInBody As Object
Dim anchorInText As Object
Dim bodyAnchorName As String
Dim textAnchorName As String
endNote = nativeEndNoteTextRange.Footnote
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.goToRange(nativeEndNoteTextRange.Footnote.Text.Start,false)
oViewCursor.goToRange(nativeEndNoteTextRange.Footnote.Text.End,true)
If oViewCursor.String = &quot;&quot; Then
oViewCursor.String = &quot; &quot;
EndIf
unoCut()
oViewCursor.goToRange(outputPosition,false)
getEndnotePara()
oViewCursor.ParaStyleName = &quot;Endnote&quot;
anchorInBody = createEndnoteSign(outputPosition, sign, fieldPrefix &amp; num, true)
addEndnoteSpacer(fieldPrefix)
unoPaste()
outputPosition = oViewCursor.End
oViewCursor.goToRange(nativeEndNoteTextRange,false)
endNote.dispose()
anchorInText = createEndnoteSign(oViewCursor, sign, fieldPrefix &amp; num, false)
bodyAnchorName = fieldPrefix &amp; num &amp; endnoteInBodyAnchorSuffix
textAnchorName = fieldPrefix &amp; num &amp; endnoteInTextAnchorSuffix
anchorInBody.goRight(1,true)
anchorInText.goRight(1,true)
createAnchor(anchorInBody, bodyAnchorName )
createAnchor(anchorInText,textAnchorName )
createLink(anchorInBody,anchorInBody.String, textAnchorName)
createLink(anchorInText,anchorInText.String, bodyAnchorName)
End Sub
Sub getEndnotePara()
Dim oViewCursor As Object
Dim oTextCursor As Object
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor.Start)
oTextCursor.gotoStartOfParagraph(false)
oTextCursor.gotoEndOfParagraph(true)
If Len(oTextCursor.String) &gt; 0 Then
oViewCursor.Text.insertControlCharacter(oViewCursor.End,com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK,False)
EndIf
End Sub
Function createEndnoteSign(cursor As Object,sign As String,fieldName As String, inBody As Boolean) As Object
Dim oField As Object &apos;Field to insert
Dim oFieldMaster As Object
Dim oTextCursor As Object
Dim oMasters As Object
oTextCursor = cursor.Text.createTextCursorByRange(cursor.Start)
If inBody Then
oTextCursor.CharStyleName = &quot;Endnote Symbol&quot;
Else
oTextCursor.CharStyleName = &quot;Endnote anchor&quot;
EndIf
oField = ThisComponent.createInstance(&quot;com.sun.star.text.textfield.User&quot;)
oMasters = ThisComponent.getTextFieldMasters()
If oMasters.hasByName(&quot;com.sun.star.text.FieldMaster.User&quot; &amp; &quot;.&quot; &amp; fieldName) Then
oFieldMaster = oMasters.getByName(&quot;com.sun.star.text.FieldMaster.User&quot; &amp; &quot;.&quot; &amp; fieldName)
oFieldMaster.Name = fieldName
oFieldMaster.Content = sign
Else
oFieldMaster = ThisComponent.createInstance(&quot;com.sun.star.text.FieldMaster.User&quot;)
oFieldMaster.Name = fieldName
oFieldMaster.Content = sign
EndIf
oField.attachTextFieldMaster(oFieldMaster)
oTextCursor.Text.insertTextContent(oTextCursor, oField, False)
oTextCursor.CharStyleName = &quot;Standard&quot;
oTextCursor.goLeft(1,false)
createEndnoteSign = oTextCursor
End Function
Sub addEndnoteSpacer(fieldPrefix As String)
Dim oViewCursor As Object
oViewCursor = ThisComponent.CurrentController.getViewCursor()
insertUserField(oViewCursor,fieldPrefix &amp; &quot;spacer&quot;,&quot; &quot;)
End Sub
Function getEndnoteSigns(foundEndNotes As Variant) As Variant
Dim i As Integer
Dim signs() As String
For i = LBound(foundEndNotes) To Ubound(foundEndNotes)
AddToArray(signs, foundEndNotes(i).String)
Next i
getEndnoteSigns = signs
End Function
Function notModalDialog(dialogName As String) As Variant
Dim windowProvider As Object
Dim containerWindow As Object
Dim handler As Object
Dim dialogUrl As String
Dim dialog As Object
containerWindow = ThisComponent.getCurrentController().getFrame().getContainerWindow()
dialogUrl = &quot;vnd.sun.star.script:ePublishing.&quot; &amp; dialogName &amp; &quot;?location=application&quot;
windowProvider = CreateUnoService(&quot;com.sun.star.awt.ContainerWindowProvider&quot;)
dialog = windowProvider.createContainerWindow(dialogUrl, &quot;&quot;, containerWindow, handler)
notModalDialog = dialog
End Function
Function findEndNotesInSelection(textSelection) As Variant
Dim nativeEndNotes() As Object
Dim customEndNotes() As Object
Dim outerArray() As Object
findEndNotesInSelection = Array()
Dim enum1Element As Object
Dim cellEnumElement As Object
Dim enum1 As Object
Dim enum2 As Object
Dim curNum As Integer
Dim i As Integer
Dim cell As Object
Dim cellEnum As Object
enum1 = textSelection.createEnumeration
While enum1.hasMoreElements
enum1Element = enum1.nextElement
If enum1Element.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
findEndNotesInParagraph(enum1Element, nativeEndNotes, customEndNotes)
ElseIf enum1Element.supportsService(&quot;com.sun.star.text.TextTable&quot;) Then
cellNames = enum1Element.cellNames
For i = LBound(cellNames) To Ubound(cellNames)
cell = enum1Element.getCellByName(cellNames(i))
cellEnum = cell.getText().createEnumeration()
While cellEnum.hasMoreElements
cellEnumElement = cellEnum.nextElement
If cellEnumElement.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
findEndNotesInParagraph(cellEnumElement, nativeEndNotes, customEndNotes)
EndIf
Wend
Next i
EndIf
Wend
addToArray(outerArray, nativeEndNotes)
addToArray(outerArray, customEndNotes)
findEndNotesInSelection = outerArray
End Function
Sub findEndNotesInParagraph(enum1Element As Object,nativeEndNotes As Variant, customEndNotes As Variant)
Dim textPortions As Object
Dim thisPortion As Object
Dim footnoteText As Object
Dim label As String
Dim labelNum As Long
Dim bookmarkName As String
If enum1Element.OutlineLevel = level Then
curNum = 1
EndIf
textPortions = enum1Element.createEnumeration
While textPortions.hasMoreElements
thisPortion = textPortions.nextElement
If isTargetNote(thisPortion,1) Then
AddToArray(nativeEndNotes, thisPortion)
ElseIf isCustomEndnote(thisPortion) Then
AddToArray(customEndNotes, thisPortion)
EndIf
Wend
End Sub
Function isCustomEndnote(portion As Object) As Boolean
If InStr(portion.HyperLinkURL, &quot;#&quot; &amp; endnoteFieldPrefix) = 1 And portion.String &lt;&gt; &quot;&quot; Then
If InStr(portion.HyperLinkURL, endnoteInBodyAnchorSuffix) &gt; 0 Then
isCustomEndnote = true
Exit Function
EndIf
EndIf
isCustomEndnote = false
End Function
</script:module>

View file

@ -0,0 +1,12 @@
<?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="EndnotesConversion" dlg:left="199" dlg:top="0" dlg:width="160" dlg:height="84" dlg:closeable="true" dlg:moveable="true">
<dlg:bulletinboard>
<dlg:text dlg:id="description" dlg:tab-index="0" dlg:left="8" dlg:top="28" dlg:width="147" dlg:height="36" dlg:value="Для вывода концевых сносок установите курсор в целевом параграфе и нажмите Конвертация" dlg:align="center" dlg:multiline="true"/>
<dlg:text dlg:id="found" dlg:tab-index="1" dlg:left="8" dlg:top="3" dlg:width="145" dlg:height="8" dlg:value="Найдено концевых сносок" dlg:align="center"/>
<dlg:button dlg:id="cancel" dlg:tab-index="2" dlg:left="2" dlg:top="69" dlg:width="50" dlg:height="13" dlg:value="Отмена" dlg:toggled="1"/>
<dlg:button dlg:id="start" dlg:tab-index="3" dlg:left="107" dlg:top="69" dlg:width="50" dlg:height="13" dlg:value="Конвертация" dlg:toggled="1"/>
<dlg:button dlg:id="option2" dlg:tab-index="4" dlg:visible="false" dlg:left="55" dlg:top="69" dlg:width="50" dlg:height="13" dlg:value="Вариант2" dlg:toggled="1"/>
<dlg:text dlg:id="found2" dlg:tab-index="5" dlg:visible="false" dlg:left="8" dlg:top="14" dlg:width="145" dlg:height="8" dlg:value="Найдено концевых сносок" dlg:align="center"/>
</dlg:bulletinboard>
</dlg:window>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Footnotes" script:language="StarBasic" script:moduleType="normal">sub footMark7 <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Footnotes" script:language="StarBasic" script:moduleType="normal">sub footMark8
End Sub End Sub
Sub openFootNotesDialog Sub openFootNotesDialog
@ -284,4 +284,27 @@ Private Sub doNotTrack
args1(0).Value = true args1(0).Value = true
dispatcher.executeDispatch(document, &quot;.uno:ShowTrackedChanges&quot;, &quot;&quot;, 0, args1()) dispatcher.executeDispatch(document, &quot;.uno:ShowTrackedChanges&quot;, &quot;&quot;, 0, args1())
End Sub End Sub
Sub FixFootnotes()
Dim description As String
Dim allNotes As Object
Dim aNote As Object
Dim oViewCursor As Object
turnOffTracking
AcceptAllTrackedChanges
oViewCursor = ThisComponent.currentController.getViewCursor()
&apos;Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
allNotes = ThisComponent.FootNotes
For x = 0 to allNotes.Count -1
aNote = allNotes.getByIndex(x)
anchor = aNote.anchor
oViewCursor.goToRange(anchor,false)
oViewCursor.collapseToStart()
oViewCursor.goToRange(anchor,true)
unoCut()
oViewCursor.goLeft(1,false)
unoPaste()
Next
End Sub
</script:module> </script:module>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Hyphenations" script:language="StarBasic">Private Sub markHyph4 <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Hyphenations" script:language="StarBasic">Private Sub markHyph
End sub End sub
Private Sub convertHyphInDoc() Private Sub convertHyphInDoc()
@ -15,6 +15,7 @@ Private Sub convertHyphInDoc()
statusIndicator = ThisComponent.getCurrentController.StatusIndicator statusIndicator = ThisComponent.getCurrentController.StatusIndicator
statusIndicator.Start(getTranslation(&quot;hyphenationsInProgress&quot;),10) statusIndicator.Start(getTranslation(&quot;hyphenationsInProgress&quot;),10)
turnOffTracking turnOffTracking
setZoomToSpeedUpTasks()
AcceptAllTrackedChanges AcceptAllTrackedChanges
convertHyphInText(ThisComponent.Text) convertHyphInText(ThisComponent.Text)
&apos; Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; ) &apos; Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
@ -380,6 +381,10 @@ Private Function needHyphen(before As String, after As String,lineLength As Inte
needHyphen = false needHyphen = false
Case &quot;/&quot; Case &quot;/&quot;
needHyphen = false needHyphen = false
Case &quot;?&quot;
needHyphen = false
Case &quot;!&quot;
needHyphen = false
End Select End Select
Select Case after Select Case after
Case &quot; &quot; Case &quot; &quot;
@ -430,7 +435,5 @@ Private Function confirm(description)
End Function End Function
Sub Macro1
End Sub
</script:module> </script:module>

View file

@ -263,7 +263,7 @@ Sub getFNAreaStart
End Sub End Sub
Function changeCharWidth(delta) As Boolean Function changeCharWidth(delta As Integer) As Boolean
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oTextCursor As Object Dim oTextCursor As Object
Dim charScale As Integer Dim charScale As Integer
@ -277,7 +277,7 @@ Function changeCharWidth(delta) As Boolean
oViewCursor.charScaleWidth = charScale + delta oViewCursor.charScaleWidth = charScale + delta
End Function End Function
Function changeKern(delta) As Boolean Function changeKern(delta As Integer) As Boolean
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oTextCursor As Object Dim oTextCursor As Object
Dim kerning As Integer Dim kerning As Integer

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="PageStyles" script:language="StarBasic" script:moduleType="normal"> Dim pDialog As Object <script:module xmlns:script="http://openoffice.org/2000/script" script:name="PageStyles" script:language="StarBasic" script:moduleType="normal">
Dim pDialog As Object
Sub pageStylesDialog Sub pageStylesDialog
Dim listBox As Object Dim listBox As Object
@ -356,7 +357,7 @@ Function covertMMtoLong(dimension As String) As Long
convertMMtoLong = -1 convertMMtoLong = -1
Exit Function Exit Function
EndIf EndIf
dimension = customReplace(dimension, &quot;,&quot;, &quot;.&quot;) dimension = customReplace(dimension, &quot;.&quot;, &quot;,&quot;)
If Not IsNumeric( dimension ) Then If Not IsNumeric( dimension ) Then
convertMMtoLong = -1 convertMMtoLong = -1
Exit Function Exit Function

View file

@ -1,7 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="TOCLinks" script:language="StarBasic" script:moduleType="normal">Sub makeOutlineLinks <script:module xmlns:script="http://openoffice.org/2000/script" script:name="TOCLinks" script:language="StarBasic" script:moduleType="normal">Sub makeOutlineLinks
Dim oViewCursor As Object
Dim i As Integer Dim i As Integer
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.jumpToFirstPage()
For i = 1 To 10 For i = 1 To 10
makeLinksWithLevel(i) makeLinksWithLevel(i)
Next i Next i
@ -15,6 +18,7 @@ Sub makeLinksWithLevel(level)
Dim outline() As Object Dim outline() As Object
Dim oAnchor1Name As String Dim oAnchor1Name As String
Dim oAnchor2Name As String Dim oAnchor2Name As String
Dim message As String
Dim i As Integer Dim i As Integer
heading = getHeadingWithLevel(level) heading = getHeadingWithLevel(level)
outline = getOutlineWithLevel(level) outline = getOutlineWithLevel(level)
@ -28,7 +32,10 @@ Sub makeLinksWithLevel(level)
createLink(outline(i),&quot;&quot;,oAnchor2Name) createLink(outline(i),&quot;&quot;,oAnchor2Name)
Next i Next i
Else Else
MsgBox getTranslation(&quot;TOCErrorContentsNotMatchHeadings1&quot;) &amp; &quot; &quot; &amp; level &amp; &quot; (&quot; &amp; (Ubound(outline)+1) &amp; getTranslation(&quot;TOCErrorContentsNotMatchHeadings2&quot;) &amp; &quot; &quot; &amp; level &amp; &quot; &quot; &amp; getTranslation(&quot;TOCErrorContentsNotMatchHeadings3&quot;) &amp; (Ubound(heading)+1) &amp; &quot;)&quot; message = getTranslation(&quot;TOCErrorContentsNotMatchHeadings1&quot;) &amp; &quot; &quot; &amp; level &amp; &quot; (&quot; &amp; (Ubound(outline)+1) &amp;&quot;) &quot; &amp; _
getTranslation(&quot;TOCErrorContentsNotMatchHeadings2&quot;) &amp; &quot; &quot; &amp; level &amp; &quot; &quot; &amp; _
getTranslation(&quot;TOCErrorContentsNotMatchHeadings3&quot;) &amp; &quot; (&quot; &amp; (Ubound(heading)+1) &amp; &quot;)&quot;
showTOCLinksDialog(message, heading(), outline() )
EndIf EndIf
ElseIf Ubound(outline) = -1 Then ElseIf Ubound(outline) = -1 Then
&apos; MsgBox (getTranslation(&quot;TOCErrorNoContents1&quot;) &amp; &quot; &quot; &amp; level &amp; &quot; &quot; &amp; getTranslation(&quot;TOCErrorNoContents2&quot;)) &apos; MsgBox (getTranslation(&quot;TOCErrorNoContents1&quot;) &amp; &quot; &quot; &amp; level &amp; &quot; &quot; &amp; getTranslation(&quot;TOCErrorNoContents2&quot;))
@ -128,6 +135,95 @@ Function getOutlineWithLevel(curNum)
getOutlineWithLevel = par() getOutlineWithLevel = par()
End Function End Function
Sub showTOCLinksDialog(message As String, heading() As Object, outline() As Object)
Dim pDialog As Object
Dim grid As Object
Dim headingsColumn As Object
Dim tocColumn As Object
Dim oGridControl As Object
Dim oColumnModel As Object
Dim oDataModel As Object
Dim rect As Object
Dim i As Integer
Dim j As Integer
Dim outlineCell As String
Dim headingCell As String
DialogLibraries.LoadLibrary(&quot;ePublishing&quot;)
pDialog = CreateUnoDialog( DialogLibraries.ePublishing.toc_links )
&apos;grid = pDialog.getControl(&quot;grid&quot;)
grid = pDialog.Model.createInstance(&quot;com.sun.star.awt.grid.UnoControlGridModel&quot;)
grid.Name = &quot;tocGrid&quot;
grid.ShowColumnHeader = True
grid.ShowRowHeader = True
grid.VScroll = true
grid.Sizeable = true
grid.Step = 0
oColumnModel = createUnoService( &quot;com.sun.star.awt.grid.DefaultGridColumnModel&quot;)
tocColumn = createUnoService( &quot;com.sun.star.awt.grid.GridColumn&quot;)
tocColumn.Title = getTranslation(&quot;tocItemText&quot;)
tocColumn.ColumnWidth = 100
tocColumn.Resizeable = true
&apos;tocColumn.Flexibility = true
oColumnModel.addColumn( tocColumn )
headingsColumn = createUnoService( &quot;com.sun.star.awt.grid.GridColumn&quot;)
headingsColumn.Title = getTranslation(&quot;headingItemText&quot;)
headingsColumn.ColumnWidth = 100
headingsColumn.Resizeable = true
&apos;headingsColumn.Flexibility = true
oColumnModel.addColumn( headingsColumn )
grid.ColumnModel = oColumnModel
&apos;grid.Sizeable = False
&apos;gridStep = 0
oDataModel = createUnoService( &quot;com.sun.star.awt.grid.DefaultGridDataModel&quot;)
If Ubound(outline) &gt; Ubound(heading) Then
For i = 0 To (Ubound(outline))
outlineCell = outline(i).getString()
j = i MOD (Ubound(heading) + 1)
headingCell = heading(j).getString()
oDataModel.addRow ( i+1 , Array(outlineCell, headingCell) )
Next
Else
For i = 0 To (Ubound(heading))
headingCell = heading(i).getString()
If i &gt; Ubound(outline) Then
outlineCell = &quot;&quot;
Else
outlineCell = outline(i).getString()
EndIf
oDataModel.addRow ( i+1 , Array(outlineCell, headingCell) )
Next i
EndIf
grid.GridDataModel = oDataModel
oGridControl = createUnoService(&quot;com.sun.star.awt.grid.UnoControlGrid&quot;)
oGridControl.setModel(grid)
pDialog.addControl(&quot;gridtab&quot;, oGridControl)
rect = pDialog.getPosSize()
oGridControl.setPosSize(10,60,rect.Width - 20,rect.Height - 120, com.sun.star.awt.PosSize.POSSIZE)
pDialog.getControl(&quot;Ok&quot;).Label = getTranslation(&quot;buttonOk&quot;)
pDialog.getControl(&quot;message&quot;).SetText(message)
pDialog.Title = getTranslation(&quot;tocDialogLabel&quot;)
pDialog.Execute()
pDialog.dispose()
End Sub
Sub addToArray(xArray(),vNextElement) Sub addToArray(xArray(),vNextElement)
Dim iUB As Integer Dim iUB As Integer
Dim iLB As Integer Dim iLB As Integer

View file

@ -29,7 +29,7 @@ End Function
Function getRussian(identifier As String) As String Function getRussian(identifier As String) As String
Select Case identifier Select Case identifier
Case &quot;buttonOk&quot; Case &quot;buttonOk&quot;
getRussian = &quot;Применить&quot; getRussian = &quot;OK&quot;
Exit Function Exit Function
Case &quot;buttonCancel&quot; Case &quot;buttonCancel&quot;
getRussian = &quot;Отмена&quot; getRussian = &quot;Отмена&quot;
@ -140,10 +140,10 @@ Function getRussian(identifier As String) As String
getRussian = &quot;Число параграфов со стилем Оглавление &quot; getRussian = &quot;Число параграфов со стилем Оглавление &quot;
Exit Function Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings2&quot; Case &quot;TOCErrorContentsNotMatchHeadings2&quot;
getRussian = &quot;) не кратно числу Заголовоков&quot; getRussian = &quot; не кратно числу Заголовоков&quot;
Exit Function Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings3&quot; Case &quot;TOCErrorContentsNotMatchHeadings3&quot;
getRussian = &quot;уровня (&quot; getRussian = &quot;уровня &quot;
Exit Function Exit Function
Case &quot;complileJournalIssueConfirmation&quot; Case &quot;complileJournalIssueConfirmation&quot;
getRussian = &quot;Вы уверены, что хотите запустить сборку выпуска ?&quot; getRussian = &quot;Вы уверены, что хотите запустить сборку выпуска ?&quot;
@ -271,6 +271,39 @@ Function getRussian(identifier As String) As String
Case &quot;FootnotesConfigDialogNotesPerPageRangeLabel&quot; Case &quot;FootnotesConfigDialogNotesPerPageRangeLabel&quot;
getRussian = &quot;Введите диапазон страниц&quot; getRussian = &quot;Введите диапазон страниц&quot;
Exit Function Exit Function
Case &quot;EndnotesNativeDialogFound&quot;
getRussian = &quot;Найдено концевых сносок: &quot;
Exit Function
Case &quot;EndnotesNativeDialogDescriptionSelect&quot;
getRussian = &quot;Для вывода концевых сносок установите курсор в нужном параграфе и нажмите кнопку Применить&quot;
Exit Function
Case &quot;EndnotesNotFound&quot;
getRussian = &quot;В текущем выделении концевых сносок не найдено. Выделите текст с концевыми сносками.&quot;
Exit Function
Case &quot;EndnotesCustomDialogFound&quot;
getRussian = &quot;Найдено ручных концевых сносок: &quot;
Exit Function
Case &quot;EndnotesCustomConversionOption&quot;
getRussian = &quot;Для конвертации ручных концевых сносок в стандартные нажмите кнопку Применить&quot;
Exit Function
Case &quot;toNativeEndnotes&quot;
getRussian = &quot;В стандартные&quot;
Exit Function
Case &quot;toCustomEndnotes&quot;
getRussian = &quot;В ручные&quot;
Exit Function
Case &quot;EndnotesConversionTwoOptions&quot;
getRussian = &quot;Найдены и стандартные и ручные концевые сноски. Можно сконвертировать стандартные в ручные (установите курсор в нужном параграфе) или ручные в стандартные&quot;
Exit Function
Case &quot;tocDialogLabel&quot;
getRussian = &quot;Ошибка&quot;
Exit Function
Case &quot;tocItemText&quot;
getRussian = &quot;Текст оглавления&quot;
Exit Function
Case &quot;headingItemText&quot;
getRussian = &quot;Текст заголовка&quot;
Exit Function
Case Else Case Else
getRussian = &quot;Перевод не найден&quot; getRussian = &quot;Перевод не найден&quot;
End Select End Select
@ -391,10 +424,10 @@ Function getEnglish(identifier As String) As String
getEnglish = &quot;Number of paras with style Contents &quot; getEnglish = &quot;Number of paras with style Contents &quot;
Exit Function Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings2&quot; Case &quot;TOCErrorContentsNotMatchHeadings2&quot;
getEnglish = &quot;) dosn&apos;t match number of headings with &quot; getEnglish = &quot; dosn&apos;t match number of headings with &quot;
Exit Function Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings3&quot; Case &quot;TOCErrorContentsNotMatchHeadings3&quot;
getEnglish = &quot;level (&quot; getEnglish = &quot;level &quot;
Exit Function Exit Function
Case &quot;complileJournalIssueConfirmation&quot; Case &quot;complileJournalIssueConfirmation&quot;
getEnglish = &quot;Compile journal issue from articles?&quot; getEnglish = &quot;Compile journal issue from articles?&quot;
@ -522,6 +555,39 @@ Function getEnglish(identifier As String) As String
Case &quot;FootnotesConfigDialogNotesPerPageRangeLabel&quot; Case &quot;FootnotesConfigDialogNotesPerPageRangeLabel&quot;
getEnglish = &quot;Enter the page range &quot; getEnglish = &quot;Enter the page range &quot;
Exit Function Exit Function
Case &quot;EndnotesNativeDialogFound&quot;
getEnglish = &quot;Endnotes found:&quot;
Exit Function
Case &quot;EndnotesNativeDialogDescriptionSelect&quot;
getEnglish = &quot;To list endnote bodies, position the cursor in the desired paragraph and click the Apply button.&quot;
Exit Function
Case &quot;EndnotesNotFound&quot;
getEnglish = &quot;No endnotes found in the current selection. Select text with endnotes.&quot;
Exit Function
Case &quot;EndnotesCustomDialogFound&quot;
getEnglish = &quot;Found custom endnotes: &quot;
Exit Function
Case &quot;EndnotesCustomConversionOption&quot;
getEnglish = &quot;To convert manual endnotes to standard, click the Apply button&quot;
Exit Function
Case &quot;toNativeEndnotes&quot;
getEnglish = &quot;To standard&quot;
Exit Function
Case &quot;toCustomEndnotes&quot;
getEnglish = &quot;To custom&quot;
Exit Function
Case &quot;EndnotesConversionTwoOptions&quot;
getEnglish = &quot;Both standard and manual endnotes are found. You can convert standard to manual (place the cursor in the desired paragraph) or manual to standard&quot;
Exit Function
Case &quot;tocDialogLabel&quot;
getEnglish = &quot;Error&quot;
Exit Function
Case &quot;tocItemText&quot;
getEnglish = &quot;Contents item text&quot;
Exit Function
Case &quot;headingItemText&quot;
getEnglish = &quot;Heading text&quot;
Exit Function
Case Else Case Else
getEnglish = &quot;No translation&quot; getEnglish = &quot;No translation&quot;
End Select End Select
@ -641,10 +707,10 @@ Function getFrench(identifier As String) As String
getFrench = &quot;Nombre de paragraphes avec style Table des matières.&quot; getFrench = &quot;Nombre de paragraphes avec style Table des matières.&quot;
Exit Function Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings2&quot; Case &quot;TOCErrorContentsNotMatchHeadings2&quot;
getFrench = &quot;) n&apos;est pas un multiple du nombre de titres&quot; getFrench = &quot; n&apos;est pas un multiple du nombre de titres&quot;
Exit Function Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings3&quot; Case &quot;TOCErrorContentsNotMatchHeadings3&quot;
getFrench = &quot;au niveau (&quot; getFrench = &quot;au niveau &quot;
Exit Function Exit Function
Case &quot;complileJournalIssueConfirmation&quot; Case &quot;complileJournalIssueConfirmation&quot;
getFrench = &quot;Êtes-vous sûr de vouloir compiler un journal à partir d&apos;articles ?&quot; getFrench = &quot;Êtes-vous sûr de vouloir compiler un journal à partir d&apos;articles ?&quot;
@ -772,6 +838,39 @@ Function getFrench(identifier As String) As String
Case &quot;FootnotesConfigDialogNotesPerPageRangeLabel&quot; Case &quot;FootnotesConfigDialogNotesPerPageRangeLabel&quot;
getFrench = &quot;Entrez la plage de pages &quot; getFrench = &quot;Entrez la plage de pages &quot;
Exit Function Exit Function
Case &quot;EndnotesNativeDialogFound&quot;
getFrench = &quot;Notes trouvées :&quot;
Exit Function
Case &quot;EndnotesNativeDialogDescriptionSelect&quot;
getFrench = &quot;Pour afficher les notes de fin, positionnez le curseur dans le paragraphe souhaité et cliquez sur le bouton Appliquer.&quot;
Exit Function
Case &quot;EndnotesNotFound&quot;
getFrench = &quot;Aucune note de fin trouvée dans la sélection actuelle. Sélectionnez du texte avec des notes de fin.&quot;
Exit Function
Case &quot;EndnotesCustomDialogFound&quot;
getFrench = &quot;Notes de fin de main trouvées :&quot;
Exit Function
Case &quot;EndnotesCustomConversionOption&quot;
getFrench = &quot;Pour convertir les notes de fin manuelles en notes standard, cliquez sur le bouton Appliquer&quot;
Exit Function
Case &quot;toNativeEndnotes&quot;
getFrench = &quot;À la norme&quot;
Exit Function
Case &quot;toCustomEndnotes&quot;
getFrench = &quot;Sur mesure&quot;
Exit Function
Case &quot;EndnotesConversionTwoOptions&quot;
getFrench = &quot;Des notes de fin standard et manuelles sont trouvées. Vous pouvez convertir standard en manuel (placez le curseur dans le paragraphe souhaité) ou manuel en standard&quot;
Exit Function
Case &quot;tocDialogLabel&quot;
getFrench = &quot;Erreur&quot;
Exit Function
Case &quot;tocItemText&quot;
getFrench = &quot;Texte de l&apos;élément de contenu&quot;
Exit Function
Case &quot;headingItemText&quot;
getFrench = &quot;Texte d&apos;en-tête&quot;
Exit Function
Case Else Case Else
getFrench = &quot;No translation&quot; getFrench = &quot;No translation&quot;
End Select End Select
@ -891,10 +990,10 @@ Function getCroatian(identifier As String) As String
getCroatian = &quot;Broj paragrafa sa stilom Sadržaj&quot; getCroatian = &quot;Broj paragrafa sa stilom Sadržaj&quot;
Exit Function Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings2&quot; Case &quot;TOCErrorContentsNotMatchHeadings2&quot;
getCroatian = &quot;) nije višestruko od broja Zaglavlja&quot; getCroatian = &quot; nije višestruko od broja Zaglavlja&quot;
Exit Function Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings3&quot; Case &quot;TOCErrorContentsNotMatchHeadings3&quot;
getCroatian = &quot;Nivoa (&quot; getCroatian = &quot;Nivoa &quot;
Exit Function Exit Function
Case &quot;complileJournalIssueConfirmation&quot; Case &quot;complileJournalIssueConfirmation&quot;
getCroatian = &quot;Da li ste sigurni da želite da pokrenete gradnju izdanja ?&quot; getCroatian = &quot;Da li ste sigurni da želite da pokrenete gradnju izdanja ?&quot;
@ -1022,6 +1121,39 @@ Function getCroatian(identifier As String) As String
Case &quot;FootnotesConfigDialogNotesPerPageRangeLabel&quot; Case &quot;FootnotesConfigDialogNotesPerPageRangeLabel&quot;
getCroatian = &quot;Unesite raspon stranica &quot; getCroatian = &quot;Unesite raspon stranica &quot;
Exit Function Exit Function
Case &quot;EndnotesNativeDialogFound&quot;
getCroatian = &quot;Pronađene krajnje bilješke:&quot;
Exit Function
Case &quot;EndnotesNativeDialogDescriptionSelect&quot;
getCroatian = &quot;Za prikaz krajnjih bilješki postavite kursor u željeni odlomak i kliknite gumb Primijeni.&quot;
Exit Function
Case &quot;EndnotesNotFound&quot;
getCroatian = &quot;U trenutnom odabiru nisu pronađene nikakve bilješke. Odaberite tekst s krajnjim bilješkama.&quot;
Exit Function
Case &quot;EndnotesCustomDialogFound&quot;
getCroatian = &quot;Pronađene ručne bilješke:&quot;
Exit Function
Case &quot;EndnotesCustomConversionOption&quot;
getCroatian = &quot;Da biste ručne bilješke pretvorili u standardne, kliknite gumb Primijeni&quot;
Exit Function
Case &quot;toNativeEndnotes&quot;
getCroatian = &quot;Standardno&quot;
Exit Function
Case &quot;toCustomEndnotes&quot;
getCroatian = &quot;Na običaj&quot;
Exit Function
Case &quot;EndnotesConversionTwoOptions&quot;
getCroatian = &quot;Pronađene su i standardne i ručne bilješke. Možete pretvoriti standardni u ručni (postavite kursor u željeni odlomak) ili ručni u standardni&quot;
Exit Function
Case &quot;tocDialogLabel&quot;
getCroatian = &quot;Pogreška&quot;
Exit Function
Case &quot;tocItemText&quot;
getCroatian = &quot;Sadržaj teksta stavke&quot;
Exit Function
Case &quot;headingItemText&quot;
getCroatian = &quot;Tekst zaglavlja&quot;
Exit Function
Case Else Case Else
getCroatian = &quot;No translation&quot; getCroatian = &quot;No translation&quot;
End Select End Select
@ -1141,10 +1273,10 @@ Function getSerbian(identifier As String) As String
getSerbian = &quot;Број параграфа са стилом Садржај&quot; getSerbian = &quot;Број параграфа са стилом Садржај&quot;
Exit Function Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings2&quot; Case &quot;TOCErrorContentsNotMatchHeadings2&quot;
getSerbian = &quot;) није вишеструко од броја Заглавља&quot; getSerbian = &quot; није вишеструко од броја Заглавља&quot;
Exit Function Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings3&quot; Case &quot;TOCErrorContentsNotMatchHeadings3&quot;
getSerbian = &quot;Нивоа (&quot; getSerbian = &quot;Нивоа &quot;
Exit Function Exit Function
Case &quot;complileJournalIssueConfirmation&quot; Case &quot;complileJournalIssueConfirmation&quot;
getSerbian = &quot;Да ли сте сигурни да желите да покренете градњу издања ?&quot; getSerbian = &quot;Да ли сте сигурни да желите да покренете градњу издања ?&quot;
@ -1272,6 +1404,39 @@ Function getSerbian(identifier As String) As String
Case &quot;FootnotesConfigDialogNotesPerPageRangeLabel&quot; Case &quot;FootnotesConfigDialogNotesPerPageRangeLabel&quot;
getSerbian = &quot;Унесите опсег страница &quot; getSerbian = &quot;Унесите опсег страница &quot;
Exit Function Exit Function
Case &quot;EndnotesNativeDialogFound&quot;
getSerbian = &quot;Пронађене крајње белешке:&quot;
Exit Function
Case &quot;EndnotesNativeDialogDescriptionSelect&quot;
getSerbian = &quot;Да бисте приказали крајње белешке, поставите курсор у жељени пасус и кликните на дугме Примени.&quot;
Exit Function
Case &quot;EndnotesNotFound&quot;
getSerbian = &quot;У тренутном избору нису пронађене белешке. Изаберите текст са крајњим белешкама.&quot;
Exit Function
Case &quot;EndnotesCustomDialogFound&quot;
getSerbian = &quot;Пронађене ручне белешке:&quot;
Exit Function
Case &quot;EndnotesCustomConversionOption&quot;
getSerbian = &quot;Да бисте ручне белешке претворили у стандардне, кликните на дугме Примени&quot;
Exit Function
Case &quot;toNativeEndnotes&quot;
getSerbian = &quot;Стандардно&quot;
Exit Function
Case &quot;toCustomEndnotes&quot;
getSerbian = &quot;По мери&quot;
Exit Function
Case &quot;EndnotesConversionTwoOptions&quot;
getSerbian = &quot;Пронађене су и стандардне и ручне белешке. Можете претворити стандардни у ручни (поставите курсор у жељени одломак) или ручни у стандардни&quot;
Exit Function
Case &quot;tocDialogLabel&quot;
getSerbian = &quot;Грешка&quot;
Exit Function
Case &quot;tocItemText&quot;
getSerbian = &quot;Садржај текста ставке&quot;
Exit Function
Case &quot;headingItemText&quot;
getSerbian = &quot;Текст заглавља&quot;
Exit Function
Case Else Case Else
getSerbian = &quot;No translation&quot; getSerbian = &quot;No translation&quot;
End Select End Select
@ -1391,10 +1556,10 @@ Function getBosnian(identifier As String) As String
getBosnian = &quot;Broj paragrafa sa stilom Sadržaj&quot; getBosnian = &quot;Broj paragrafa sa stilom Sadržaj&quot;
Exit Function Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings2&quot; Case &quot;TOCErrorContentsNotMatchHeadings2&quot;
getBosnian = &quot;) nije višestruko od broja Zaglavlja&quot; getBosnian = &quot; nije višestruko od broja Zaglavlja&quot;
Exit Function Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings3&quot; Case &quot;TOCErrorContentsNotMatchHeadings3&quot;
getBosnian = &quot;Nivoa (&quot; getBosnian = &quot;Nivoa &quot;
Exit Function Exit Function
Case &quot;complileJournalIssueConfirmation&quot; Case &quot;complileJournalIssueConfirmation&quot;
getBosnian = &quot;Da li ste sigurni da želite da pokrenete gradnju izdanja ?&quot; getBosnian = &quot;Da li ste sigurni da želite da pokrenete gradnju izdanja ?&quot;
@ -1522,6 +1687,39 @@ Function getBosnian(identifier As String) As String
Case &quot;FootnotesConfigDialogNotesPerPageRangeLabel&quot; Case &quot;FootnotesConfigDialogNotesPerPageRangeLabel&quot;
getBosnian = &quot;Unesite raspon stranica &quot; getBosnian = &quot;Unesite raspon stranica &quot;
Exit Function Exit Function
Case &quot;EndnotesNativeDialogFound&quot;
getBosnian = &quot;Pronađene krajnje bilješke:&quot;
Exit Function
Case &quot;EndnotesNativeDialogDescriptionSelect&quot;
getBosnian = &quot;Za prikaz krajnjih bilješki postavite kursor u željeni odlomak i kliknite gumb Primijeni.&quot;
Exit Function
Case &quot;EndnotesNotFound&quot;
getBosnian = &quot;U trenutnom odabiru nisu pronađene nikakve bilješke. Odaberite tekst s krajnjim bilješkama.&quot;
Exit Function
Case &quot;EndnotesCustomDialogFound&quot;
getBosnian = &quot;Pronađene ručne bilješke:&quot;
Exit Function
Case &quot;EndnotesCustomConversionOption&quot;
getBosnian = &quot;Da biste ručne bilješke pretvorili u standardne, kliknite gumb Primijeni&quot;
Exit Function
Case &quot;toNativeEndnotes&quot;
getBosnian = &quot;Standardno&quot;
Exit Function
Case &quot;toCustomEndnotes&quot;
getBosnian = &quot;Na običaj&quot;
Exit Function
Case &quot;EndnotesConversionTwoOptions&quot;
getBosnian = &quot;Pronađene su i standardne i ručne bilješke. Možete pretvoriti standardni u ručni (postavite kursor u željeni odlomak) ili ručni u standardni&quot;
Exit Function
Case &quot;tocDialogLabel&quot;
getBosnian = &quot;Greška&quot;
Exit Function
Case &quot;tocItemText&quot;
getBosnian = &quot;Sadržaj teksta stavke&quot;
Exit Function
Case &quot;headingItemText&quot;
getBosnian = &quot;Tekst zaglavlja&quot;
Exit Function
Case Else Case Else
getBosnian = &quot;No translation&quot; getBosnian = &quot;No translation&quot;
End Select End Select

View file

@ -4,4 +4,6 @@
<library:element library:name="FootnotesConfig"/> <library:element library:name="FootnotesConfig"/>
<library:element library:name="replaceParaStyle"/> <library:element library:name="replaceParaStyle"/>
<library:element library:name="PageConfig"/> <library:element library:name="PageConfig"/>
<library:element library:name="EndnotesConversion"/>
<library:element library:name="toc_links"/>
</library:library> </library:library>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="journals" script:language="StarBasic">Private sub journalsMark28 <script:module xmlns:script="http://openoffice.org/2000/script" script:name="journals" script:language="StarBasic">Private sub journalsMark36
End sub End sub
Dim templateName As String Dim templateName As String
@ -29,6 +29,7 @@ Private Sub makeUpIssue
If NOT confirm(description) Then If NOT confirm(description) Then
Exit Sub Exit Sub
EndIf EndIf
setZoomToSpeedUpTasks()
EIFN = &quot;ЭиФН&quot; EIFN = &quot;ЭиФН&quot;
PHA = &quot;ФА&quot; PHA = &quot;ФА&quot;
@ -228,7 +229,7 @@ Private Function getUDK()
backspace backspace
sendRM sendRM
End If End If
oViewCursor.goToRange(oSavePosition, false) Thiscomponent.CurrentController.select(oSavePosition)
End Function End Function
Private Function getCopyright() Private Function getCopyright()
@ -662,7 +663,11 @@ Private Sub setArticleUniqPageStyles(i)
&apos;Iterate article page number &apos;Iterate article page number
articlePageNum = articlePageNum + 1 articlePageNum = articlePageNum + 1
&apos;GO TO NEXT PAGE &apos;GO TO NEXT PAGE
oViewCursor.jumpToNextPage() If Not oViewCursor.jumpToNextPage() Then
MsgBox &quot;setArticleUniqPageStyles failed&quot;
End
EndIf
curPageStyleName = getNextPageStyleName() curPageStyleName = getNextPageStyleName()
Loop Loop
@ -1131,248 +1136,278 @@ sub backspace
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;) dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
dispatcher.executeDispatch(document, &quot;.uno:SwBackspace&quot;, &quot;&quot;, 0, Array()) dispatcher.executeDispatch(document, &quot;.uno:SwBackspace&quot;, &quot;&quot;, 0, Array())
end Sub end Sub
Sub shrinkPageContent
Dim oViewCursor As Object &apos;View cursor Sub configureCursorPositionForContentShrink()
Dim oTextCursor As Object &apos;Text cursor &apos; Globalscope.BasicLibraries.LoadLibrary(&quot;MRILib&quot;)
Dim oViewCurInitPosition As Object Dim oViewCursor As Object
Dim oSaveEndSelection &apos;Text cursor Dim oTextCursor As Object
Dim oEnum &apos;Cursor enumeration Dim curSelection As Object
Dim oPar &apos;Current paragraph Dim selectionTextRange As Object
Dim sTextContent$ &apos;Service name for text content. Dim nextChar As String
Dim scaleWidthShrinkValue As Integer Dim prefChar As String
Dim scaleCharHeight As Integer
Dim scaleIntervalHeight As Integer
Dim kernShrinkValue As Integer
Dim startOfPara As Boolean
&apos;saveCurrentVersion
kernShrinkValue = 8
scaleWidthShrinkValue = 7
scaleCharHeight = 2
scaleIntervalHeight = 3
sTextContent = &quot;com.sun.star.text.TextContent&quot;
oViewCursor = ThisComponent.CurrentController.getViewCursor() oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCurInitPosition = oViewcursor.Text.createTextCursorByRange(oViewCursor) fixViewCursor()
&apos;Check if we are at start of paragraph go to the end of previous paragraph oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
If oViewCursor.Text.createTextCursorByRange(oViewCursor).isStartOfParagraph() Then &apos;At start of Para
oViewCursor.goLeft(1,false) oTextCursor.collapseToEnd()
If Len(oViewCursor.String) &lt;&gt; 1 Then If oTextCursor.isStartOfParagraph() AND NOT oTextCursor.isEndOfParagraph() Then
oViewCursor.goRight(1,false) oTextCursor.goLeft(1,false)
EndIf EndIf
oViewCursor.goToRange(oTextCursor,false)
End Sub
Sub fixViewCursor()
Dim oViewCursor As Object
Dim curSelection As Object
Dim selectionTextRange As Object
oViewCursor = ThisComponent.CurrentController.getViewCursor()
curSelection = ThisComponent.getCurrentSelection()
If Not curSelection.supportsService(&quot;com.sun.star.text.TextRanges&quot;) Then
selectionTextRange = curSelection.Anchor
oViewCursor.JumpToFirstPage(false)
oViewCursor.goToRange(selectionTextRange,false)
EndIf EndIf
End Sub
&apos;Move right to select left and right characters and save position to the right Function isContentPageChanged(initPosition As Object,initPageNum As String) As Boolean
oViewCursor.goRight(1,false) Dim oViewCursor As Object
oSaveEndSelection = oViewCursor.Text.createTextCursorByRange(oViewCursor) Dim oTextCursor As Object
&apos;Select last 2 characters isShrinkPageSucceded = false
oViewCursor.goLeft(2,true) oViewCursor = ThisComponent.CurrentController.getViewCursor()
If Len(oViewCursor.String) = 2 Then oViewCursor.goToRange(initPosition,false)
oLastChars = oViewCursor.Text.createTextCursorByRange(oViewCursor) If (oViewCursor.getPage &lt;&gt; initPageNum) Then
&apos;Insert hyphen if needed isContentPageChanged = true
insertHyphen(oLastChars,oViewCursor)
EndIf EndIf
&apos;Return to initial position End Function
oViewCursor.gotoRange(oSaveEndSelection,false) &apos;Go to end of text to check page changes
oViewCursor.goLeft(1,false)
&apos;Set saved position to initial state
oSaveEndSelection = oViewCursor.Text.createTextCursorByRange(oViewCursor)
Function breakParaAtCursor() As Object
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim leftMargin As Long
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oTextCursor = oViewcursor.Text.createTextCursorByRange(oViewCursor)
If NOT oTextCursor.isEndOfParagraph() Then
oTextCursor.goLeft(1,false)
oTextCursor.goRight(2,true)
insertHyphen(oTextCursor)
oTextCursor.goLeft(1,false)
oViewCursor.goToRange(oTextCursor,false)
leftMargin = oViewCursor.ParaLeftMargin
insertPara
oViewCursor.ParaFirstLineIndent = leftMargin
oTextCursor.goLeft(1,false)
oViewCursor.goToRange(oTextCursor,false)
breakParaAtCursor = oViewcursor.Text.createTextCursorByRange(oViewCursor)
Else
&apos;oTextCursor.goRight(1,false)
&apos;oViewCursor.goToRange(oTextCursor,false)
&apos;oViewCursor.BreakType = com.sun.star.style.BreakType.PAGE_BEFORE
&apos;oTextCursor.goLeft(1,false)
&apos;oViewCursor.goToRange(oTextCursor,false)
breakParaAtCursor = oViewcursor.Text.createTextCursorByRange(oViewCursor)
EndIf
End Function
oViewCursor.jumpToPreviousPage() sub insertPara
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
dispatcher.executeDispatch(document, &quot;.uno:InsertPara&quot;, &quot;&quot;, 0, Array())
end sub
Function canShrinkContent() As Boolean
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim oSavePosition As Object
Dim oStartPosition As Object
Dim initPageNum As Long
Dim startPageNum As Long
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
canShrinkContent = true
&apos;In endntote footnote or table shrink is not possible
If oViewCursor.Text.supportsService(&quot;com.sun.star.text.Endnote&quot;) OR _
oViewCursor.Text.supportsService(&quot;com.sun.star.text.Footnote&quot;) OR _
oViewCursor.Text.supportsService(&quot;com.sun.star.text.CellProperties&quot;) Then
canShrinkContent = false
oViewCursor.goToRange(oSavePosition,false)
Exit Function
EndIf
initPageNum = oViewcursor.getPage()
oViewCursor.JumpToPreviousPage(false)
oViewCursor.jumpToStartOfPage() oViewCursor.jumpToStartOfPage()
startPageNum = oViewcursor.getPage()
&apos;No previous page exists
If startPageNum = initPageNum Then
oViewCursor.goToRange(oSavePosition,false)
canShrinkContent = false
Exit Function
EndIf
&apos;If current paragraph has page break before
If oSavePosition.BreakType &lt;&gt; 0 Then
oTextCursor = oSavePosition.Text.createTextCursorByRange(oSavePosition)
oTextCursor.gotoStartOfParagraph(false)
oViewCursor.goToRange(oTextCursor,false)
If oViewCursor.getPage() = initPageNum Then
canShrinkContent = false
oViewCursor.goToRange(oSavePosition,false)
Exit Function
EndIf
EndIf
oViewCursor.goToRange(oSavePosition,false)
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor) oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
&apos;If one of textRanges is Footnote or Endnote we can&apos;t select them so it is better to exit now Do While oViewcursor.getPage() = initPageNum
If oTextCursor.Text.supportsService(&quot;com.sun.star.text.Endnote&quot;) OR oTextCursor.Text.supportsService(&quot;com.sun.star.text.Footnote&quot;) Or oTextCursor.Text.supportsService(&quot;com.sun.star.text.CellProperties&quot;) Then oTextCursor.gotoPreviousParagraph(false)
oViewCursor.goToRange(oTextCursor,false)
If oTextCursor.BreakType &lt;&gt; 0 AND oViewcursor.getPage() = initPageNum Then
canShrinkContent = false
oViewCursor.goToRange(oSavePosition,false)
Exit Function
EndIf
Loop
oViewCursor.goToRange(oSavePosition,false)
End Function
Function shrinkPageContent() As Boolean
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim initPosition As Object
Dim initPageNum As String
Dim oSaveEndSelection As Object
Dim oEnum As Variant
Dim oPar As Object
Dim startOfPara As Boolean
Dim targetContent() As Object
Dim delta As Double
Dim rounds As Integer
delta = 0.1
rounds = 3
Dim roundsLineHeight As Integer
roundsLineHeight = 3
Dim i As Integer
Dim j As Integer
shrinkPageContent = false shrinkPageContent = false
oViewCursor.gotoRange(oViewCurInitPosition,false)
Exit Sub
EndIf
If oSaveEndSelection.Text.supportsService(&quot;com.sun.star.text.Endnote&quot;) OR oSaveEndSelection.Text.supportsService(&quot;com.sun.star.text.Footnote&quot;) Or oTextCursor.Text.supportsService(&quot;com.sun.star.text.CellProperties&quot;) Then
shrinkPageContent = false
oViewCursor.gotoRange(oViewCurInitPosition,false)
Exit Sub
EndIf
oTextCursor.gotoRange(oSaveEndSelection,true)
oViewCursor.gotoRange(oSaveEndSelection,false) &apos;Go to end of text to check page changes
If shrinkIntervalHeight(oTextCursor,oViewCursor,scaleIntervalHeight) Then
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
If oTextCursor.isEndOfParagraph() Then
pos1 = oViewCursor.getPage()
oViewCursor.goRight(1,false)
pos2 = oViewCursor.getPage()
&apos;If we moved right to the next para and page haven&apos;t changed insert pageBreak
If pos1 = pos2 Then
insertPageBreak
End If
Else
insertPageBreak
If Not IsNull(oTextCursor.ParaFirstLineIndent) Then
oTextCursor.ParaFirstLineIndent = 0
End If
End If
Exit Sub
End If
If shrinkCharHeight(oTextCursor,oViewCursor,scaleCharHeight) Then
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
If oTextCursor.isEndOfParagraph() Then
pos1 = oViewCursor.getPage()
oViewCursor.goRight(1,false)
pos2 = oViewCursor.getPage()
&apos;If we moved right to the next para and page haven&apos;t changed insert pageBreak
If pos1 = pos2 Then
insertPageBreak
End If
Else
insertPageBreak
If Not IsNull(oTextCursor.ParaFirstLineIndent) Then
oTextCursor.ParaFirstLineIndent = 0
End If
End If
Exit Sub
End If
If shrinkKern(oTextCursor,oViewCursor,kernShrinkValue) Then
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
If oTextCursor.isEndOfParagraph() Then
pos1 = oViewCursor.getPage()
oViewCursor.goRight(1,false)
pos2 = oViewCursor.getPage()
&apos;If we moved right to the next para and page haven&apos;t changed insert pageBreak
If pos1 = pos2 Then
insertPageBreak
End If
Else
insertPageBreak
If Not IsNull(oTextCursor.ParaFirstLineIndent) Then
oTextCursor.ParaFirstLineIndent = 0
End If
End If
Exit Sub
End If
End Sub
Sub splitPages
Dim oViewCursor As Object &apos;View cursor
Dim oText &apos;Text object in current document
Dim oSaveEndSelection &apos;Text cursor
&apos;saveCurrentVersion
oViewCursor = ThisComponent.CurrentController.getViewCursor() oViewCursor = ThisComponent.CurrentController.getViewCursor()
Dim saveFirstLineIndent As Boolean
&apos;Check if we are at start of paragraph go to the end of previous paragraph configureCursorPositionForContentShrink()
If oViewCursor.Text.createTextCursorByRange(oViewCursor).isEndOfParagraph() Then If Not canShrinkContent() Then
oViewCursor.goRight(1,false) Exit Function
EndIf EndIf
If oViewCursor.Text.createTextCursorByRange(oViewCursor).isStartOfParagraph() Then initPageNum = oViewcursor.getPage()
saveFirstLineIndent = true initPosition = breakParaAtCursor()
Else oViewcursor.goToRange(initPosition,false)
saveFirstLineIndent = false oViewCursor.JumpToPreviousPage(false)
oViewCursor.jumpToStartOfPage()
startPosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
targetContent = selectContentToShrink(initPosition,startPosition)
For i = LBound(targetContent) To Ubound(targetContent)
shrinkContentSpacing(targetContent(i))
If isContentPageChanged(initPosition, initPageNum) Then
Exit Function
EndIf EndIf
Next i
&apos;TODO: Уменьшая отступы каждого параграфа от и до следующего
&apos; а также уменьшая кернинг, межстрочное расстояние и кегль
For j = 0 To rounds
For i = LBound(targetContent) To Ubound(targetContent)
If (j &gt; 0) Then
decreaseContentCharHeight(targetContent(i), delta)
EndIf
If shrinkContentWithKerning(targetContent(i)) Then
balanceContentTail(targetContent(i),false)
EndIf
If isContentPageChanged(initPosition, initPageNum) Then
Exit Function
EndIf
Next i
Next j
For j = 1 To roundsLineHeight
For i = LBound(targetContent) To Ubound(targetContent)
decreaseIntervalHeight(targetContent(i))
If isContentPageChanged(initPosition, initPageNum) Then
Exit Function
EndIf
Next i
Next j
For j = 1 To roundsLineHeight
For i = LBound(targetContent) To Ubound(targetContent)
increaseIntervalHeight(targetContent(i))
Next i
Next j
For i = LBound(targetContent) To Ubound(targetContent)
increaseContentCharHeight(targetContent(i), delta * rounds )
Next i
oViewCursor.goRight(1,false) End Function
oSaveEndSelection = oViewCursor.Text.createTextCursorByRange(oViewCursor)
&apos;Select last 2 characters
oViewCursor.goLeft(2,true)
If Len(oViewCursor.String) = 2 Then Function increaseIntervalHeight(oContent As Object) As Boolean
&apos;Insert hyphen if needed increaseIntervalHeight = false
oLastChars = oViewCursor.Text.createTextCursorByRange(oViewCursor) Dim oParEnum As Object
insertHyphen(oLastChars,oViewCursor) Dim oPar As Object
End If Dim oSecEnum As Object
&apos;Return to initial position Dim oParSection As Object
oViewCursor.gotoRange(oSaveEndSelection,false) &apos;Go to end of text to check page changes Dim pageNum As Integer
oViewCursor.goLeft(1,false) Dim lineSpacing As Object
insertPageBreak If Not IsMissing(oContent.ParaLineSpacing) Then
If Not saveFirstLineIndent Then lineSpacing = oContent.ParaLineSpacing
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor) If lineSpacing.Mode = 3 Then
If Not IsNull(oTextCursor.ParaFirstLineIndent) Then lineSpacing.Height = lineSpacing.Height / 0.98
oTextCursor.ParaFirstLineIndent = 0 oContent.ParaLineSpacing = lineSpacing
increaseIntervalHeight = true
End If End If
End If End If
End Function
Function decreaseIntervalHeight(oContent As Object) As Boolean
decreaseIntervalHeight = false
Dim oParEnum As Object
Dim oPar As Object
Dim oSecEnum As Object
Dim oParSection As Object
Dim pageNum As Integer
Dim lineSpacing As Object
If Not IsMissing(oContent.ParaLineSpacing) Then
lineSpacing = oContent.ParaLineSpacing
If lineSpacing.Mode = 3 Then
lineSpacing.Height = lineSpacing.Height * 0.98
oContent.ParaLineSpacing = lineSpacing
decreaseIntervalHeight = true
End If
EndIf
End Function
Sub decreaseContentCharHeight(oContent As Object, delta As double)
Dim contentEnum As Object&apos;paragraph enumeration
Dim textContentElement As Object&apos;current paragraph
Dim curHeight As Double
Dim oTextCursor As Object
contentEnum = oContent.createEnumeration()
Do While contentEnum.hasMoreElements()
textContentElement = contentEnum.nextElement()
oTextCursor = textContentElement.Text.createTextCursorByRange(textContentElement)
curHeight = oTextCursor.charHeight
oTextCursor.charHeight = roundHeight(curHeight) - delta
Loop
End Sub End Sub
Sub increaseContentCharHeight(oContent As Object, delta As double)
Dim contentEnum As Object&apos;paragraph enumeration
Dim textContentElement As Object&apos;current paragraph
Dim curHeight As Double
Function shrinkScaleWidth(oTextCursor,oViewCursor,iterations) As Boolean Dim oTextCursor As Object
Dim oParEnum &apos;paragraph enumeration contentEnum = oContent.createEnumeration()
Dim oPar &apos;current paragraph Do While contentEnum.hasMoreElements()
Dim oSecEnum &apos;sections enumeration textContentElement = contentEnum.nextElement()
Dim oParSection &apos;paragraph text section oTextCursor = textContentElement.Text.createTextCursorByRange(textContentElement)
Dim pageNum As Integer curHeight = oTextCursor.charHeight
pageNum = oViewCursor.getPage() oTextCursor.charHeight = roundHeight(curHeight) + delta
For i = 1 To iterations Step 1
oParEnum = oTextCursor.createEnumeration()
Do While oParEnum.hasMoreElements()
oPar = oParEnum.nextElement()
If oPar.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
oPar.charScaleWidth = 100 - i
If pageNum &lt;&gt; oViewCursor.getPage() Then
shrinkScaleWidth = true
Exit Function
End If
End If
Loop Loop
Next i End Sub
shrinkScaleWidth = false
End Function
Function shrinkKern(oTextCursor,oViewCursor,iterations) As Boolean Function roundHeight(nHeight) As Double
Dim oParEnum &apos;paragraph enumeration
Dim oPar &apos;current paragraph
Dim oSecEnum &apos;sections enumeration
Dim oParSection &apos;paragraph text section
Dim pageNum As Integer
pageNum = oViewCursor.getPage()
For i = 2 To iterations Step 2
oParEnum = oTextCursor.createEnumeration()
Do While oParEnum.hasMoreElements()
oPar = oParEnum.nextElement()
If oPar.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
oPar.CharKerning = 0 - i
If pageNum &lt;&gt; oViewCursor.getPage() Then
shrinkKern = true
Exit Function
End If
End If
Loop
Next i
shrinkKern = false
End Function
Function shrinkCharHeight(oTextCursor,oViewCursor,iterations) As Boolean
Dim oParEnum &apos;paragraph enumeration
Dim oPar &apos;current paragraph
Dim oSecEnum &apos;sections enumeration
Dim oParSection &apos;paragraph text section
Dim pageNum As Integer
pageNum = oViewCursor.getPage()
For i = 1 To iterations Step 1
oParEnum = oTextCursor.createEnumeration()
Do While oParEnum.hasMoreElements()
oPar = oParEnum.nextElement()
If oPar.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
oPar.charHeight = roundHeight(oPar.charHeight) - 0.1
If pageNum &lt;&gt; oViewCursor.getPage() Then
shrinkCharHeight = true
Exit Function
End If
End If
Loop
Next i
shrinkCharHeight = false
End Function
Function roundHeight(nHeight)
Dim lHeight As Double Dim lHeight As Double
Dim hHeight As Double Dim hHeight As Double
lHeight = Int(nHeight) lHeight = Int(nHeight)
@ -1388,127 +1423,74 @@ Function roundHeight(nHeight)
roundHeight=lHeight roundHeight=lHeight
End Function End Function
Function shrinkContentSpacing(oContent As Object) As Boolean
Function shrinkIntervalHeight(oTextCursor,oViewCursor,iterations) As Boolean &apos; Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
Dim oParEnum &apos;paragraph enumeration shrinkContentSpacing = false
Dim oPar &apos;current paragraph If oContent.ParaTopMargin &gt; MIN_SPACING_TO_SHRINK Then
Dim oSecEnum &apos;sections enumeration oContent.ParaTopMargin = 0
Dim oParSection &apos;paragraph text section
Dim pageNum As Integer
Dim lineSpacing
pageNum = oViewCursor.getPage()
For i = 1 To iterations Step 1
oParEnum = oTextCursor.createEnumeration()
Do While oParEnum.hasMoreElements()
oPar = oParEnum.nextElement()
If oPar.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
lineSpacing = oPar.ParaLineSpacing
If lineSpacing.Mode = 3 Then
lineSpacing.Height = lineSpacing.Height * 0.98
oPar.ParaLineSpacing = lineSpacing
EndIf EndIf
If pageNum &lt;&gt; oViewCursor.getPage() Then If oContent.ParaBottomMargin &gt; MIN_SPACING_TO_SHRINK Then
shrinkIntervalHeight = true oContent.ParaTopMargin = 0
Exit Function
EndIf EndIf
End If
Loop
Next i
shrinkIntervalHeight = false
End Function End Function
Sub savecursor Function selectContentToShrink(initPosition As Object, startPosition As Object)
Dim oViewCursor As Object &apos;View cursor Dim oViewCursor As Object
Dim oTextCursor &apos;Text cursor Dim oTextCursor As Object
Dim oSaveEndSelection &apos;Text cursor Dim startPageNum As Long
Dim oEnum &apos;Cursor enumeration Dim prevPageNum As Long
Dim oText &apos;Text object in current document Dim savePosition As Object
Dim oPar &apos;Current paragraph Dim foundPrevPara As Boolean
Dim sTextContent$ &apos;Service name for text content. Dim targetContent() As Variant
sTextContent = &quot;com.sun.star.text.TextContent&quot;
oViewCursor = ThisComponent.CurrentController.getViewCursor() oViewCursor = ThisComponent.CurrentController.getViewCursor()
oSaveEndSelection = oViewCursor.Text.createTextCursorByRange(oViewCursor) oViewcursor.goToRange(startPosition,false)
REM oViewCursor.getText.insertString(oViewCursor.getStart(), CHR$(257), False) prevPageNum = oViewcursor.getPage()
&apos;If Not oViewCursor.jumpToPreviousPage() Then Exit Sub oViewcursor.goToRange(initPosition,false)
oViewCursor.jumpToPreviousPage() startPageNum = oViewcursor.getPage()
oViewCursor.jumpToStartOfPage()
&apos;oViewCursor.goUp(10,true)
&apos;oViewCursor.getPage()
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor) oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
&apos;oTextCursor.gotoStart(false) Do While startPageNum = oViewcursor.getPage() OR prevPageNum = oViewcursor.getPage()
oTextCursor.gotoRange(oSaveEndSelection,true) savePosition = oTextCursor.getStart()
oTextCursor.gotoStartOfParagraph(true)
oParEnum = oTextCursor.createEnumeration() oViewCursor.goToRange(oTextCursor,false)
oViewCursor.collapseToStart()
Do While oParEnum.hasMoreElements() If Len(oTextCursor.String) &gt; 0 Then
Dim oSubSection If (startPageNum = oViewcursor.getPage() OR prevPageNum = oViewcursor.getPage()) Then
Dim oSecEnum AddToArray(targetContent,oTextCursor.Text.createTextCursorByRange(oTextCursor))
Else
Do While oParEnum.hasMoreElements() oTextCursor.goToRange(savePosition,false)
oPar = oParEnum.nextElement() oViewCursor.goToRange(oTextCursor,false)
oPar.charScaleWidth = oPar.charScaleWidth - 1 oViewCursor.JumpToStartOfPage(false)
Dim charHeight oTextCursor.goToRange(oViewCursor,true)
charHeight= oPar.charHeight AddToArray(targetContent,oTextCursor.Text.createTextCursorByRange(oTextCursor))
Dim lineSpacing
lineSpacing = oPar.ParaLineSpacing
MsgBox lineSpacing.Mode &amp; lineSpacing.Height
If oPar.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
nPars = nPars + 1
oSecEnum = oPar.createEnumeration()
s = s &amp; nPars &amp; &quot;:&quot;
Do While oSecEnum.hasMoreElements()
oParSection = oSecEnum.nextElement()
oParSection.charScaleWidth = oParSection.charScaleWidth - 1
oParSection.CharHeight = oParSection.CharHeight * 0.99
s = s &amp; oParSection.TextPortionType &amp; &quot; Scale &quot; &amp; oParSection.CharScaleWidth &amp; &quot; Scale &quot; &amp; oParSection.CharHeight &amp; &quot;:&quot;
Loop
s = s &amp; CHR$(10)
If nPars MOD 10 = 0 Then
MsgBox s, 0, &quot;Paragraph Text Sections&quot;
s = &quot;&quot;
EndIf EndIf
EndIf EndIf
foundPrevPara = oTextCursor.gotoPreviousParagraph(false)
If (foundPrevPara = false) Then
Exit Do
EndIf
oTextCursor.gotoEndOfParagraph(false)
oViewCursor.goToRange(oTextCursor,false)
Loop Loop
Loop selectContentToShrink = targetContent
End Sub End Function
Sub insertPageBreak
sub insertPageBreak
rem ----------------------------------------------------------------------
rem define variables
dim document as object dim document as object
dim dispatcher as object dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;) dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, &quot;.uno:InsertPagebreak&quot;, &quot;&quot;, 0, Array()) dispatcher.executeDispatch(document, &quot;.uno:InsertPagebreak&quot;, &quot;&quot;, 0, Array())
end sub
Sub insertHyphen(oTextCursor,oViewCursor)
Dim lastChars
&apos;lastChars = oTextCursor.getString()
replacementhyp
&apos;MsgBox lastChars
End Sub End Sub
sub replacementhyp Sub insertHyphen(twoCharactersToHyphen As Object)
rem ---------------------------------------------------------------------- Dim oViewCursor As Object
rem define variables Dim document as Object
dim document as object Dim dispatcher as Object
dim dispatcher as object oViewCursor = ThisComponent.CurrentController.getViewCursor()
rem ---------------------------------------------------------------------- oViewCursor.goToRange(twoCharactersToHyphen,false)
rem get access to the document
document = ThisComponent.CurrentController.Frame document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;) dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
rem ----------------------------------------------------------------------
dim args1(21) as new com.sun.star.beans.PropertyValue dim args1(21) as new com.sun.star.beans.PropertyValue
args1(0).Name = &quot;SearchItem.StyleFamily&quot; args1(0).Name = &quot;SearchItem.StyleFamily&quot;
args1(0).Value = 2 args1(0).Value = 2
@ -1535,6 +1517,7 @@ sub replacementhyp
args1(11).Name = &quot;SearchItem.SearchString&quot; args1(11).Name = &quot;SearchItem.SearchString&quot;
args1(11).Value = &quot;([a-zA-Zа-яА-Я])([a-zA-Zа-яА-Я])&quot; args1(11).Value = &quot;([a-zA-Zа-яА-Я])([a-zA-Zа-яА-Я])&quot;
args1(12).Name = &quot;SearchItem.ReplaceString&quot; args1(12).Name = &quot;SearchItem.ReplaceString&quot;
&apos; &quot;$1 U+00AD $2&quot;
args1(12).Value = &quot;$1­$2&quot; args1(12).Value = &quot;$1­$2&quot;
args1(13).Name = &quot;SearchItem.Locale&quot; args1(13).Name = &quot;SearchItem.Locale&quot;
args1(13).Value = 255 args1(13).Value = 255

View file

@ -11,4 +11,5 @@
<library:element library:name="MakeUp"/> <library:element library:name="MakeUp"/>
<library:element library:name="PageStyles"/> <library:element library:name="PageStyles"/>
<library:element library:name="Translations"/> <library:element library:name="Translations"/>
<library:element library:name="Endnotes"/>
</library:library> </library:library>

View file

@ -0,0 +1,8 @@
<?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="toc_links" dlg:left="74" dlg:top="15" dlg:width="346" dlg:height="284" dlg:closeable="true" dlg:moveable="true">
<dlg:bulletinboard>
<dlg:button dlg:id="Ok" dlg:tab-index="0" dlg:left="125" dlg:top="265" dlg:width="96" dlg:height="17" dlg:value="CommandButton1" dlg:button-type="ok"/>
<dlg:text dlg:id="message" dlg:tab-index="1" dlg:left="5" dlg:top="4" dlg:width="334" dlg:height="24" dlg:value="message" dlg:align="center" dlg:multiline="true"/>
</dlg:bulletinboard>
</dlg:window>

View file

@ -2,9 +2,9 @@
<description xmlns="http://openoffice.org/extensions/update/2006" <description xmlns="http://openoffice.org/extensions/update/2006"
xmlns:xlink="http://www.w3.org/1999/xlink"> xmlns:xlink="http://www.w3.org/1999/xlink">
<identifier value="pro.litvinovg.epublishing"/> <identifier value="pro.litvinovg.epublishing"/>
<version value="0.6.19" /> <version value="0.7.16" />
<update-download> <update-download>
<src xlink:href="https://dev.litvinovg.pro/litvinovg/epublishing/uploads/d5cabfae4d13f86a6a93781fdca9bfb7/epublishing.oxt" /> <src xlink:href="https://dev.litvinovg.pro/litvinovg/epublishing/uploads/9e6d9eaeb144d7a67e94c8460492a040/epublishing.oxt" />
</update-download> </update-download>
<release-notes> <release-notes>
<src xlink:href="https://dev.litvinovg.pro/litvinovg/epublishing/-/raw/master/releasenotes.txt" lang="en" /> <src xlink:href="https://dev.litvinovg.pro/litvinovg/epublishing/-/raw/master/releasenotes.txt" lang="en" />

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

263
icons/addon_icon.svg Normal file
View file

@ -0,0 +1,263 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73333mm"
height="67.73333mm"
viewBox="0 0 67.73333 67.73333"
version="1.1"
id="svg8655"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="addon_icon.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview8657"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="2.0308884"
inkscape:cx="112.01994"
inkscape:cy="108.32697"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:snap-global="false" />
<defs
id="defs8652" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-104.6842,-132.32068)">
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="ccccccccccccccccccccc"
inkscape:connector-curvature="0"
d="m 132.37039,148.26988 h -2.07136 v -0.57304 h 2.07136 v -1.68816 h -1.38092 v -0.57303 h 1.38092 v -2.03656 h -4.83319 v 15.16484 h 4.83319 v -5.70978 h -2.07136 v -0.57304 h 2.07136 v -1.7191 h -1.38092 v -0.57303 h 1.38092 z"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.7;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="polygon2848-0-7"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:connector-curvature="0"
d="m 123.12724,144.21435 h 1.30516 l -0.65258,-2.26642 z"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="polygon2850-4-7"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:connector-curvature="0"
d="m 122.94511,145.10139 -1.08709,2.86162 h 3.88288 l -1.0871,-2.86162 z"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.714155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="polygon2854-3-4"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<rect
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.7;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
id="rect9098"
width="4.2093248"
height="8.8333616"
x="121.6905"
y="148.86641"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
id="path2860-2-0"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.7;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 117.70046,140.80732 -2.45727,5.17649 1.15636,3.65475 h 2.89147 l 1.15637,-3.65475 -2.45784,-5.17649 v 3.8386 a 0.57822907,0.91357072 0 1 1 -0.28909,0 z m -1.30091,9.28765 v 8.34889 h 2.89147 v -8.34889 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
id="path1875-1-2"
style="clip-rule:evenodd;fill:#b6b6b6;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round;stroke-linecap:round"
d="m 111.57969,157.82045 v 32.51431 h 2.7094 v -28.51764 c 0,-0.34404 0.26584,-0.6222 0.59428,-0.6222 h 23.37945 23.3748 c 0.32864,0 0.59428,0.27816 0.59428,0.6222 v 28.51764 h 2.70991 v -32.51431 z m 26.68313,33.75867 v 0 h -23.37945 -0.0145 -3.87884 -0.0196 -4.02818 v 2.9347 c 0,0.80971 0.31401,1.54308 0.82114,2.07428 0.51184,0.53145 1.21262,0.86506 1.98541,0.86506 h 57.02856 c 0.77299,0 1.47311,-0.33361 1.98024,-0.8599 0.50695,-0.53636 0.82114,-1.27024 0.82114,-2.07997 v -2.9347 h -4.02818 -0.015 -3.87884 -0.0191 z m -0.0944,0.86744 c 0.55085,0 1.04846,0.2331 1.41077,0.61238 0.35756,0.3797 0.58446,0.90046 0.58446,1.47743 0,0.57677 -0.2269,1.10308 -0.58446,1.47744 -0.36231,0.3797 -0.85992,0.61235 -1.41077,0.61235 -0.5506,0 -1.05288,-0.23265 -1.41025,-0.61235 l -0.0434,-0.0455 c -0.33828,-0.37436 -0.54105,-0.88053 -0.54105,-1.43195 0,-0.57697 0.22217,-1.09773 0.58446,-1.47743 0.35758,-0.37931 0.85965,-0.61238 1.41025,-0.61238 z m 0,1.24489 c -0.22217,0 -0.4249,0.0959 -0.57464,0.24755 -0.14505,0.15171 -0.23668,0.36443 -0.23668,0.59737 0,0.22262 0.0819,0.42498 0.21239,0.57153 l 0.0243,0.0254 c 0.14983,0.15661 0.35265,0.24805 0.57464,0.24805 0.22217,0 0.42495,-0.0914 0.56999,-0.24805 0.14484,-0.15214 0.23668,-0.36412 0.23668,-0.59685 0,-0.23273 -0.23668,-0.59687 -0.23668,-0.59687 v 0 c 0,0 -0.34759,-0.24755 -0.56999,-0.24755 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png"
sodipodi:nodetypes="cccsscsscccccccccccscsscsccccccccscsccscccccscsscssscc" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:#3a3a3a;fill-opacity:1;stroke:#3a3a3a;stroke-width:1.76822;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-5-5-5-6"
width="20.554724"
height="1.2916876"
x="123.94579"
y="168.00031"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:#3a3a3a;fill-opacity:1;stroke:#3a3a3a;stroke-width:1.76822;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-5-4"
width="25.511669"
height="1.2916876"
x="119.06848"
y="187.27496"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:#3a3a3a;fill-opacity:1;stroke:#3a3a3a;stroke-width:1.76822;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-5-8-5-1-9"
width="25.511669"
height="1.2916876"
x="118.98883"
y="172.7865"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:#3a3a3a;fill-opacity:1;stroke:#3a3a3a;stroke-width:1.76822;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-0-4-8-3-6-8"
width="25.511669"
height="1.2916876"
x="119.06848"
y="182.48865"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:#3a3a3a;fill-opacity:1;stroke:#3a3a3a;stroke-width:1.97035;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-0-0-6-3-0-4"
width="22.040318"
height="1.2916876"
x="119.06848"
y="177.70239"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<ellipse
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.639035;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="path3451-4-2"
cx="144.54961"
cy="158.14117"
rx="4.860126"
ry="4.6989589"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
id="path2846-4-4"
style="fill:#cecece;fill-opacity:1;stroke:#000000;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 156.56806,135.84201 -0.40979,1.97146 a 11.102961,10.641572 0 0 0 -1.77767,0.4594 l -1.33894,-1.43245 a 13.045401,12.503294 0 0 0 -2.74298,1.53683 l 0.61908,1.80713 a 11.269889,10.801564 0 0 0 -1.3038,1.25005 l -1.88567,-0.59375 a 13.044093,12.50204 0 0 0 -1.60352,2.62929 l 1.49397,1.28313 a 11.097151,10.636004 0 0 0 -0.47904,1.70378 l -2.05673,0.39325 v 3.05356 l 2.05673,0.39325 a 11.095506,10.634428 0 0 0 0.39222,1.46399 l -0.73846,0.41032 a 6.8815349,6.5955698 0 0 0 -1.0976,-0.32917 l -0.64699,-1.45471 h -1.81591 l -0.64699,1.45471 a 6.8863609,6.6001955 0 0 0 -1.09761,0.32866 l -1.39319,-0.77411 a 8.1941513,7.8536402 0 0 0 -1.46968,1.00819 l 0.35553,1.48622 -0.67283,0.87177 -1.62109,0.14211 a 7.831057,7.5056343 0 0 0 -0.5674,1.61748 l 1.33687,1.01285 v 1.07953 l -1.33687,1.01338 a 7.8336105,7.5080817 0 0 0 0.5674,1.61695 l 1.62109,0.1421 0.67231,0.87181 -0.35501,1.48672 a 8.1953078,7.8547488 0 0 0 1.46916,1.00769 l 1.39371,-0.77412 a 6.8815349,6.5955698 0 0 0 1.09761,0.32867 l 0.64699,1.40509 h 1.81591 l 0.64699,-1.40509 a 6.8835862,6.5975361 0 0 0 1.0976,-0.32867 l 1.3932,0.77412 a 8.1941513,7.8536402 0 0 0 1.46968,-1.00769 l -0.35553,-1.48672 0.67282,-0.87128 1.62109,-0.14211 a 7.8318192,7.5063648 0 0 0 0.56741,-1.61747 l -0.50488,-0.38293 a 13.044718,12.502639 0 0 0 1.38441,0.66817 l 1.33842,-1.43245 a 11.105361,10.643874 0 0 0 1.77819,0.4594 l 0.40979,1.97146 h 3.18637 l 0.40979,-1.97146 a 11.10309,10.641698 0 0 0 1.77767,-0.4589 l 1.33894,1.43195 a 13.046811,12.504646 0 0 0 2.74298,-1.53685 l -0.61908,-1.80661 a 11.274289,10.805781 0 0 0 1.30431,-1.25058 l 1.88516,0.59378 a 13.044718,12.502639 0 0 0 1.60404,-2.62879 l -1.49449,-1.28363 a 11.105231,10.643748 0 0 0 0.47905,-1.70378 l 2.05723,-0.39325 v -3.05356 l -2.05723,-0.39275 a 11.097067,10.635923 0 0 0 -0.47905,-1.70428 l 1.49449,-1.28313 a 13.046811,12.504646 0 0 0 -1.60352,-2.62879 l -1.88568,0.59325 a 11.269889,10.801564 0 0 0 -1.30431,-1.25005 l 0.6196,-1.80713 a 13.044718,12.502639 0 0 0 -2.74298,-1.53683 l -1.33894,1.43245 a 11.105231,10.643748 0 0 0 -1.77819,-0.4594 l -0.40979,-1.97146 z m 1.53272,5.37229 a 7.4734009,7.1628407 0 0 1 7.53391,7.16287 7.4734009,7.1628407 0 0 1 -7.47344,7.16286 7.4734899,7.1629247 0 0 1 -0.0605,-14.32573 z m -0.16433,4.38269 a 2.7811034,2.6888794 0 0 0 -2.77606,2.68872 2.7811034,2.6888794 0 0 0 2.78071,2.68872 2.7811034,2.6888794 0 0 0 2.78123,-2.68872 2.7811034,2.6888794 0 0 0 -2.78123,-2.68872 2.7811034,2.6888794 0 0 0 -0.005,0 z m -13.79554,8.63409 a 4.0105414,3.8438817 0 1 1 -4.01061,3.84421 4.0105414,3.8438817 0 0 1 4.01061,-3.84421 z m 0.046,1.58647 a 2.2417849,2.1674453 0 0 0 -2.24172,2.16731 2.2417849,2.1674453 0 0 0 2.24172,2.16781 2.2417849,2.1674453 0 0 0 2.24173,-2.16781 2.2417849,2.1674453 0 0 0 -2.24173,-2.16731 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
d="m 149.99326,167.37867 v -2.09802"
id="path1537-6-4"
style="fill:#3a3a3a;fill-opacity:1;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
d="m 149.99327,188.56219 -1e-5,-17.80174"
id="path1506-9-0"
style="fill:#3a3a3a;fill-opacity:1;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<ellipse
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
cx="149.99326"
cy="169.06958"
id="path1512-6-3"
style="fill:#000000;fill-opacity:0;fill-rule:nonzero;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
rx="1.6157811"
ry="1.6908911"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
d="m 154.3994,172.16728 v -6.88663"
id="path1530-8-2"
style="fill:#3a3a3a;fill-opacity:1;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
d="m 154.39941,188.61138 -10e-6,-13.06231"
id="path1510-0-0"
style="fill:#3a3a3a;fill-opacity:1;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<ellipse
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
cx="154.39941"
cy="173.85822"
id="circle1514-8-8"
style="fill:#000000;fill-opacity:0;fill-rule:nonzero;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
rx="1.6157811"
ry="1.6908911"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
d="m 158.80553,168.86349 v -3.58284"
id="path1523-6-6"
style="fill:#3a3a3a;fill-opacity:1;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
d="M 158.80554,188.60154 V 172.24526"
id="path1508-7-9"
style="fill:#3a3a3a;fill-opacity:1;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<ellipse
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
cx="158.80553"
cy="170.55444"
id="circle1516-5-9"
style="fill:#000000;fill-opacity:0;fill-rule:nonzero;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
rx="1.6157811"
ry="1.6908911"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<ellipse
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
ry="1.1019053"
rx="1.1396987"
cy="148.22153"
cx="157.88336"
id="path3451-5-6-3-46-3"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.05;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<rect
style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.25995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect4991-5-0-5-8"
width="67.73333"
height="67.73333"
x="104.6842"
y="132.32068"
ry="0.089716367"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

97
icons/decChar.svg Normal file
View file

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73336mm"
height="67.73333mm"
viewBox="0 0 67.73336 67.73333"
version="1.1"
id="svg8011"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="decchar.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview8013"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.436055"
inkscape:cx="145.88578"
inkscape:cy="80.080498"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
showguides="true"
inkscape:guide-bbox="true">
<sodipodi:guide
position="49.561416,111.39896"
orientation="0,-1"
id="guide827" />
</sodipodi:namedview>
<defs
id="defs8008" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-105.05268,-164.01051)">
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect982-9-2-94-5-6-5"
width="67.73333"
height="67.73333"
x="104.9709"
y="163.94754" />
<g
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="font-size:19.7556px;line-height:125%;font-family:Sans;letter-spacing:-1.83084px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19042;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="flowRoot2434-2-1"
transform="matrix(5.3096471,0,0,5.1940957,-519.98047,-757.85626)"
aria-label="T">
<path
id="path2701-7"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:1.26894px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19042;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 129.52705,177.74929 -10.8888,0.0147 -0.004,3.38911 c 0,0.11729 0.0461,0.21508 0.13831,0.29325 0.10537,0.0652 0.21736,0.0978 0.3359,0.0978 0.15806,0 0.30957,-0.0326 0.45445,-0.0978 0.14489,-0.0651 0.22381,-0.14992 0.23701,-0.25417 0.0922,-0.63852 0.1976,-1.12713 0.31615,-1.46593 0.13172,-0.35185 0.31615,-0.6125 0.55324,-0.78189 0.25026,-0.1824 0.5993,-0.28009 1.04713,-0.29315 h 1.36326 v 9.32363 c -0.0132,0.32578 -0.0461,0.59298 -0.0988,0.80148 -0.0395,0.19546 -0.1515,0.3648 -0.3359,0.50814 -0.18441,0.13036 -0.46756,0.1955 -0.84954,0.1955 -0.18438,0 -0.30951,0.0196 -0.37541,0.0587 -0.0658,0.0391 -0.10536,0.15635 -0.11856,0.35182 0,0.11728 0.0263,0.22151 0.079,0.31274 0.0658,0.0782 0.15808,0.11734 0.27662,0.11734 v -1e-4 c 0.85615,-0.0391 1.67937,-0.0587 2.46967,-0.0587 0.71126,0 1.48837,0.0196 2.33135,0.0587 0.11856,0 0.20416,-0.0391 0.25687,-0.11724 0.0659,-0.0912 0.0988,-0.19546 0.0988,-0.31274 -0.0132,-0.18242 -0.0526,-0.29324 -0.11855,-0.33232 -0.0527,-0.0521 -0.13833,-0.0782 -0.25687,-0.0782 h -0.11855 c -0.38197,0 -0.66513,-0.0652 -0.84953,-0.1955 -0.18442,-0.14334 -0.30296,-0.31268 -0.35566,-0.50814 -0.0395,-0.2085 -0.0658,-0.4757 -0.079,-0.80148 v -9.32363 h 1.34351 c 0.44783,0.013 0.79696,0.11071 1.04722,0.29315 0.25026,0.16939 0.43461,0.42349 0.55315,0.7623 0.11854,0.3388 0.23053,0.83397 0.3359,1.48552 0.0132,0.10424 0.0856,0.18897 0.21735,0.25417 0.14489,0.0652 0.2963,0.0978 0.45436,0.0978 0.11854,0 0.23052,-0.0326 0.3359,-0.0978 0.10535,-0.0782 0.15807,-0.17596 0.15807,-0.29325 z"
inkscape:connector-curvature="0" />
</g>
<path
d="m 117.74779,192.69455 13.39438,13.53973 -13.39438,13.53997 -0.0596,-6.49361 h -12.05501 v -14.09253 h 12.05498 z"
id="path966-9-6-0-26"
inkscape:connector-curvature="0"
style="fill:#0200ff;fill-opacity:1;stroke-width:5.49326"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
d="m 160.06694,192.69455 -13.39438,13.53973 13.39438,13.53997 0.0596,-6.49361 h 12.05501 v -14.09253 h -12.05498 z"
id="path966-9-6-0-26-3"
inkscape:connector-curvature="0"
style="fill:#0200ff;fill-opacity:1;stroke-width:5.49326"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect982-9-2-9-7-3-5"
width="67.73333"
height="67.73333"
x="104.97087"
y="163.94754" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

90
icons/decKern.svg Normal file
View file

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73333mm"
height="67.73333mm"
viewBox="0 0 67.733329 67.73333"
version="1.1"
id="svg2477"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="decKern.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2479"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.436055"
inkscape:cx="84.606788"
inkscape:cy="174.78439"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:snap-global="false" />
<defs
id="defs2474" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-53.01717,-69.4972)">
<rect
y="69.4972"
x="53.01717"
height="67.73333"
width="67.73333"
id="rect982-9-2-94-5-3-3-2"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path7281-5-8"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;line-height:125%;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-1.83084px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.792791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 54.72981,114.22729 q -0.47856,0 -0.69129,-0.39538 -0.26594,-0.46127 -0.26594,-1.05436 0.0534,-0.98848 0.31904,-1.18615 0.26595,-0.1978 0.63811,-0.1978 0.37223,0 0.47856,0 1.59525,0 2.33969,-0.98846 0.74444,-1.05436 1.16986,-2.30641 0.47858,-1.31796 0.63808,-1.77924 l 9.30559,-27.281567 q 0.31906,-0.988455 0.31906,-1.581525 0,-1.186153 -0.74445,-1.71335 -0.74446,-0.527164 -2.07384,-0.856665 -0.90394,-0.197785 -1.11666,-0.395394 -0.21264,-0.197808 -0.21264,-1.120235 0,-0.79079 0.31905,-1.054359 0.3722,-0.263527 1.11667,-0.263527 2.65874,0 4.20081,0.527141 1.59524,0.461325 2.76511,1.976953 1.16984,1.449745 2.18017,4.481039 l 8.93336,27.281549 q 0.79761,2.5041 1.54206,3.75617 0.74446,1.25202 2.23334,1.31795 h 0.31907 q 0.53171,0 0.74444,0.2635 0.21263,0.19782 0.26593,1.12028 0,0.59308 -0.26593,1.05436 -0.21265,0.39538 -0.6913,0.39538 -3.40321,-0.1978 -5.84921,-0.1978 -3.1905,0 -6.59368,0.1978 -0.47859,0 -0.74446,-0.39538 -0.21263,-0.46128 -0.21263,-1.05436 0.0533,-0.92256 0.26592,-1.12028 0.21265,-0.2635 0.74445,-0.2635 1.80793,0 2.5524,-0.39538 0.74445,-0.46128 0.74445,-1.58156 0,-0.85664 -0.63811,-3.09718 l -1.80795,-5.4695 h -13.1342 q -1.32936,4.08567 -1.54206,4.74465 -0.15959,0.65895 -0.15959,0.72485 -0.63811,2.5041 -0.63811,3.22897 0,1.12027 0.79761,1.51565 0.79764,0.32957 3.03097,0.32957 h 0.31905 q 0.53173,0 0.74442,0.26349 0.21264,0.19782 0.26595,1.12029 0,0.59309 -0.26595,1.05437 -0.21264,0.39536 -0.69124,0.39536 -3.4032,-0.19781 -5.79605,-0.19781 -1.7016,0 -5.15796,0.19781 z M 64.833,98.0165 H 75.99973 L 70.62906,81.08085 h -0.15961 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path7283-2-4"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;line-height:125%;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-1.83084px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.626217px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 94.09436,116.08178 q -0.41432,0.13465 -0.8041,-0.0973 -0.38979,-0.23215 -0.58234,-0.73936 L 79.18886,71.864135 q -0.10865,-0.513438 0.16248,-1.002634 0.27115,-0.489207 0.72739,-0.626989 0.41431,-0.134653 0.80409,0.09753 0.43173,0.229052 0.62676,0.78825 l 13.43523,43.386948 q 0.10865,0.51346 -0.16498,0.9507 -0.22921,0.48613 -0.68545,0.62393 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path7285-1-6"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;line-height:125%;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-1.83084px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.792791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 100.76564,114.62338 q -1.59528,-5.40359 -5.05163,-17.19925 -3.45634,-11.79562 -5.0516,-17.067432 -0.90394,-2.833595 -1.75475,-3.953885 -0.8508,-1.120234 -2.4992,-1.515642 -0.21264,-0.06602 -0.63811,-0.131701 -0.42539,-0.13168 -0.58491,-0.395373 -0.10629,-0.329556 -0.10629,-0.988477 0,-0.790746 0.31904,-1.054316 0.37224,-0.263537 1.1167,-0.263537 3.98811,0 6.06192,1.51565 2.0738,1.515653 3.29681,5.403609 l 7.71036,25.700004 h 0.15962 l 7.33809,-26.424888 q 0.31907,-1.120257 0.31907,-1.713338 0,-0.922537 -0.63811,-1.186152 -0.58489,-0.329568 -2.02061,-0.329568 h -0.31909 q -0.53171,0 -0.74439,-0.197797 -0.21266,-0.263515 -0.26597,-1.186152 0,-0.59308 0.21265,-0.988476 0.26594,-0.461279 0.69129,-0.461279 3.45636,0.197787 5.79601,0.197787 1.01034,0 3.88178,-0.13168 l 1.11666,-0.06602 q 0.47858,0 0.69128,0.46128 0.26593,0.395395 0.26593,0.988486 -0.0533,0.922559 -0.26593,1.186142 -0.21264,0.197808 -0.74445,0.197808 -2.28651,0 -3.50952,0.922571 -1.16986,0.922558 -2.02065,3.558478 -1.59525,5.403587 -5.15794,17.528728 -3.50955,12.05923 -5.10481,17.59463 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
d="m 101.68467,117.40379 -13.026836,9.55858 13.026836,9.55873 0.0275,-4.76566 h 18.65975 v -9.58604 h -18.65975 z"
id="path966-9-6-0-2-0-0-9-4-7-4-9"
inkscape:connector-curvature="0"
style="fill:#001bff;fill-opacity:1;stroke-width:3.13936"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
d="m 72.381126,117.25351 13.02687,9.55858 -13.02687,9.55873 -0.0275,-4.76566 H 53.693883 v -9.58604 h 18.659743 z"
id="path966-9-6-0-2-0-0-9-4-7-4-9-4"
inkscape:connector-curvature="0"
style="fill:#001bff;fill-opacity:1;stroke-width:3.13936"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

153
icons/endnotes.svg Normal file
View file

@ -0,0 +1,153 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73333mm"
height="67.73333mm"
viewBox="0 0 67.73333 67.73333"
version="1.1"
id="svg2486"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="endnotes.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2488"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.6903844"
inkscape:cx="83.708771"
inkscape:cy="81.638236"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs2483" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-92.892647,-111.68544)">
<rect
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
y="111.68544"
x="92.892647"
height="67.73333"
width="67.73333"
id="rect3292"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<rect
y="135.49535"
x="95.049019"
height="5.0871596"
width="40.605831"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.10395;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000046"
inkscape:export-ydpi="96.000046" />
<rect
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.948985;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-1"
width="8.2611904"
height="5.0871596"
x="150.44847"
y="135.49535" />
<path
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
sodipodi:nodetypes="cccccc"
style="fill:#ff6600;fill-opacity:1;stroke-width:3.89118"
inkscape:connector-curvature="0"
id="path966-9-6-0-2-0-37-2"
d="m 157.55297,151.61926 -13.85782,13.28552 -13.85804,-13.28552 9.21069,-0.0292 9.29454,-2e-5 z" />
<rect
y="127.10445"
x="150.46057"
height="5.0871596"
width="8.2611904"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-1-4"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.948984;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000046"
inkscape:export-ydpi="96.000046" />
<rect
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.10395;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-2"
width="40.605831"
height="5.0871596"
x="95.057297"
y="127.22473" />
<rect
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.948984;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-1-4-1"
width="8.2611904"
height="5.0871596"
x="150.49835"
y="143.73186" />
<rect
y="143.93459"
x="95.058357"
height="5.0871596"
width="40.605831"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-2-7"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.10395;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000046"
inkscape:export-ydpi="96.000046" />
<rect
y="167.01994"
x="101.8401"
height="3.5655646"
width="56.980888"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-24-5"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.08656;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000046"
inkscape:export-ydpi="96.000046" />
<rect
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.08656;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-24-5-7"
width="56.980892"
height="3.5655646"
x="101.83765"
y="174.05339" />
<circle
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
r="2.3487535"
cy="168.64861"
cx="98.229622"
id="path3707"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:9.56849;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:9.5685;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path3707-1"
cx="98.270699"
cy="175.60979"
r="2.3487535" />
<path
style="fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 94.786563,114.60607 h 40.431997 c 9.72673,0 12.52136,5.48131 12.52136,12.52137 v 25.97065 h -8.81151 v -24.64861 c 0,-3.02882 -0.65494,-5.90145 -6.22771,-6.06022 H 94.761584 Z"
id="path5209"
sodipodi:nodetypes="ccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

90
icons/incChar.svg Normal file
View file

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73336mm"
height="67.73333mm"
viewBox="0 0 67.73336 67.73333"
version="1.1"
id="svg7825"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="symbol_plus.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7827"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.0154442"
inkscape:cx="9.3555114"
inkscape:cy="35.452464"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs7822" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-131.95218,-153.69289)">
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect982-9-2-94-5-6-5"
width="67.73333"
height="67.73333"
x="131.95221"
y="153.69289" />
<g
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="font-size:19.7556px;line-height:125%;font-family:Sans;letter-spacing:-1.83084px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19042;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="flowRoot2434-2-1"
transform="matrix(5.3096471,0,0,5.1940957,-492.99916,-768.11092)"
aria-label="T">
<path
id="path2701-7"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:1.26894px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19042;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 129.52705,177.74929 -10.8888,0.0147 -0.004,3.38911 c 0,0.11729 0.0461,0.21508 0.13831,0.29325 0.10537,0.0652 0.21736,0.0978 0.3359,0.0978 0.15806,0 0.30957,-0.0326 0.45445,-0.0978 0.14489,-0.0651 0.22381,-0.14992 0.23701,-0.25417 0.0922,-0.63852 0.1976,-1.12713 0.31615,-1.46593 0.13172,-0.35185 0.31615,-0.6125 0.55324,-0.78189 0.25026,-0.1824 0.5993,-0.28009 1.04713,-0.29315 h 1.36326 v 9.32363 c -0.0132,0.32578 -0.0461,0.59298 -0.0988,0.80148 -0.0395,0.19546 -0.1515,0.3648 -0.3359,0.50814 -0.18441,0.13036 -0.46756,0.1955 -0.84954,0.1955 -0.18438,0 -0.30951,0.0196 -0.37541,0.0587 -0.0658,0.0391 -0.10536,0.15635 -0.11856,0.35182 0,0.11728 0.0263,0.22151 0.079,0.31274 0.0658,0.0782 0.15808,0.11734 0.27662,0.11734 v -1e-4 c 0.85615,-0.0391 1.67937,-0.0587 2.46967,-0.0587 0.71126,0 1.48837,0.0196 2.33135,0.0587 0.11856,0 0.20416,-0.0391 0.25687,-0.11724 0.0659,-0.0912 0.0988,-0.19546 0.0988,-0.31274 -0.0132,-0.18242 -0.0526,-0.29324 -0.11855,-0.33232 -0.0527,-0.0521 -0.13833,-0.0782 -0.25687,-0.0782 h -0.11855 c -0.38197,0 -0.66513,-0.0652 -0.84953,-0.1955 -0.18442,-0.14334 -0.30296,-0.31268 -0.35566,-0.50814 -0.0395,-0.2085 -0.0658,-0.4757 -0.079,-0.80148 v -9.32363 h 1.34351 c 0.44783,0.013 0.79696,0.11071 1.04722,0.29315 0.25026,0.16939 0.43461,0.42349 0.55315,0.7623 0.11854,0.3388 0.23053,0.83397 0.3359,1.48552 0.0132,0.10424 0.0856,0.18897 0.21735,0.25417 0.14489,0.0652 0.2963,0.0978 0.45436,0.0978 0.11854,0 0.23052,-0.0326 0.3359,-0.0978 0.10535,-0.0782 0.15807,-0.17596 0.15807,-0.29325 z"
inkscape:connector-curvature="0" />
</g>
<path
d="m 145.66063,182.43989 -13.39438,13.53973 13.39438,13.53997 0.0596,-6.49361 h 12.05501 v -14.09253 h -12.05498 z"
id="path966-9-6-0-26"
inkscape:connector-curvature="0"
style="fill:#ff0002;fill-opacity:1;stroke-width:5.49326"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
d="m 185.76848,182.43989 13.39438,13.53973 -13.39438,13.53997 -0.0596,-6.49361 h -12.05501 v -14.09253 h 12.05498 z"
id="path966-9-6-0-26-3"
inkscape:connector-curvature="0"
style="fill:#ff0002;fill-opacity:1;stroke-width:5.49326"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect982-9-2-9-7-3-5"
width="67.73333"
height="67.73333"
x="131.95218"
y="153.69289" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

90
icons/incKern.svg Normal file
View file

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73336mm"
height="67.73333mm"
viewBox="0 0 67.73336 67.73333"
version="1.1"
id="svg2700"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="incKern.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2702"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="2.0308884"
inkscape:cx="128.76138"
inkscape:cy="144.76423"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:snap-global="false" />
<defs
id="defs2697" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-114.87222,-84.436211)">
<rect
y="84.436211"
x="114.87222"
height="67.73333"
width="67.73333"
id="rect982-9-2-94-5-3-3-2"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path7281-5"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;line-height:125%;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-1.83084px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.792791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 116.58485,129.16631 q -0.47856,0 -0.69129,-0.39538 -0.26594,-0.46127 -0.26594,-1.05436 0.0534,-0.98848 0.31904,-1.18615 0.26595,-0.1978 0.63811,-0.1978 0.37223,0 0.47856,0 1.59525,0 2.33969,-0.98846 0.74444,-1.05436 1.16986,-2.30641 0.47858,-1.31796 0.63808,-1.77924 l 9.30559,-27.281577 q 0.31906,-0.988455 0.31906,-1.581525 0,-1.186153 -0.74445,-1.71335 -0.74446,-0.527164 -2.07384,-0.856665 -0.90394,-0.197785 -1.11666,-0.395394 -0.21264,-0.197808 -0.21264,-1.120235 0,-0.79079 0.31905,-1.054359 0.3722,-0.263527 1.11667,-0.263527 2.65874,0 4.20081,0.527141 1.59524,0.461325 2.76511,1.976953 1.16984,1.449745 2.18017,4.481039 l 8.93336,27.281559 q 0.79761,2.5041 1.54206,3.75617 0.74446,1.25202 2.23334,1.31795 h 0.31907 q 0.53171,0 0.74444,0.2635 0.21263,0.19782 0.26593,1.12028 0,0.59308 -0.26593,1.05436 -0.21265,0.39538 -0.6913,0.39538 -3.40321,-0.1978 -5.84921,-0.1978 -3.1905,0 -6.59368,0.1978 -0.47859,0 -0.74446,-0.39538 -0.21263,-0.46128 -0.21263,-1.05436 0.0533,-0.92256 0.26592,-1.12028 0.21265,-0.2635 0.74445,-0.2635 1.80793,0 2.5524,-0.39538 0.74445,-0.46128 0.74445,-1.58156 0,-0.85664 -0.63811,-3.09718 l -1.80795,-5.4695 h -13.1342 q -1.32936,4.08567 -1.54206,4.74465 -0.15959,0.65895 -0.15959,0.72485 -0.63811,2.5041 -0.63811,3.22897 0,1.12027 0.79761,1.51565 0.79764,0.32957 3.03097,0.32957 h 0.31905 q 0.53173,0 0.74442,0.26349 0.21264,0.19782 0.26595,1.12029 0,0.59309 -0.26595,1.05437 -0.21264,0.39536 -0.69124,0.39536 -3.4032,-0.19781 -5.79605,-0.19781 -1.7016,0 -5.15796,0.19781 z m 10.10319,-16.2108 h 11.16673 L 132.4841,96.01986 h -0.15961 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path7283-2"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;line-height:125%;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-1.83084px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.626217px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 155.9494,131.0208 q -0.41432,0.13465 -0.8041,-0.0973 -0.38979,-0.23215 -0.58234,-0.73936 L 141.0439,86.803145 q -0.10865,-0.513438 0.16248,-1.002634 0.27115,-0.489207 0.72739,-0.626989 0.41431,-0.134653 0.80409,0.09753 0.43173,0.229052 0.62676,0.78825 l 13.43523,43.386958 q 0.10865,0.51346 -0.16498,0.9507 -0.22921,0.48613 -0.68545,0.62393 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path7285-1-6"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;line-height:125%;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-1.83084px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.792791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 162.62067,129.5624 q -1.59527,-5.40359 -5.05162,-17.19926 -3.45634,-11.79562 -5.0516,-17.067432 -0.90394,-2.833595 -1.75475,-3.953885 -0.8508,-1.120234 -2.4992,-1.515642 -0.21264,-0.06602 -0.63811,-0.131701 -0.42539,-0.13168 -0.58491,-0.395373 -0.10629,-0.329556 -0.10629,-0.988477 0,-0.790746 0.31904,-1.054316 0.37224,-0.263537 1.1167,-0.263537 3.98811,0 6.06192,1.51565 2.0738,1.515653 3.29681,5.403609 l 7.71035,25.700014 h 0.15962 l 7.33809,-26.424898 q 0.31907,-1.120257 0.31907,-1.713338 0,-0.922537 -0.63811,-1.186152 -0.58489,-0.329568 -2.02061,-0.329568 h -0.31909 q -0.53171,0 -0.74439,-0.197797 -0.21266,-0.263515 -0.26597,-1.186152 0,-0.59308 0.21265,-0.988476 0.26594,-0.461279 0.69129,-0.461279 3.45636,0.197787 5.79601,0.197787 1.01034,0 3.88178,-0.13168 l 1.11667,-0.06602 q 0.47858,0 0.69128,0.46128 0.26593,0.395395 0.26593,0.988486 -0.0533,0.922559 -0.26593,1.186142 -0.21264,0.197808 -0.74445,0.197808 -2.28652,0 -3.50953,0.922571 -1.16986,0.922558 -2.02065,3.558478 -1.59525,5.403587 -5.15794,17.528728 -3.50955,12.05924 -5.10481,17.59464 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
d="m 169.20012,132.34281 13.02687,9.55857 -13.02687,9.55873 -0.0275,-4.76566 h -17.07224 v -9.58603 h 17.07224 z"
id="path966-9-6-0-2-0-0-9-4-7-4-9"
inkscape:connector-curvature="0"
style="fill:#e60002;fill-opacity:1;stroke-width:3.13936"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
d="m 128.57579,132.19253 -13.02687,9.55857 13.02687,9.55873 0.0275,-4.76566 h 17.07224 v -9.58603 h -17.07224 z"
id="path966-9-6-0-2-0-0-9-4-7-4-9-4"
inkscape:connector-curvature="0"
style="fill:#e60002;fill-opacity:1;stroke-width:3.13936"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

97
icons/links.svg Normal file
View file

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73333mm"
height="67.73333mm"
viewBox="0 0 67.73333 67.73333"
version="1.1"
id="svg2924"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="links.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="2.0308885"
inkscape:cx="80.506637"
inkscape:cy="128.02279"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:snap-global="false" />
<defs
id="defs2921" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-62.071301,-83.900757)">
<path
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-7-1-7-8-6-8"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.50924;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
d="m 63.288246,128.42133 v 4.5 h 12.83916 c 0.0967,-1.57265 2.4477,-3.09012 2.94527,-4.5 z m 41.145354,0 -3.50074,4.5 h 27.64836 v -4.5 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
d="m 128.52123,106.7402 v -4.5 h -12.83916 c -0.0967,1.57263 -2.44771,3.09012 -2.94527,4.5 z m -41.145358,0 5.085514,-4.5 H 63.228252 v 4.5 z"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.50924;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-7-1-7-8-6" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
d="m 128.58843,97.727829 v -4.5 h -10.35091 c 0.6888,1.376399 0.15148,2.896634 0.41261,4.5 z m -31.934402,0 3.500762,-4.5 H 63.295448 v 4.5 z"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.50923;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-7-0-9-8-7-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
d="m 128.58362,89.074333 v -4.5 H 63.290647 v 4.5 h 40.157263 c 1.80892,-1.743618 3.99687,-2.687929 6.29866,-2.687929 h 10e-4 c 2.30145,8.18e-4 4.49043,0.944896 6.29965,2.687929 z"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.50922;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-7-0-7-6-2-6-6"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-7-0-9-8-7-2-9"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.50923;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
d="m 63.288246,137.46204 v 4.5 h 10.35091 c -0.6888,-1.37639 -0.15149,-2.89663 -0.41261,-4.5 z m 31.93439,0 -3.50076,4.5 h 36.859344 v -4.5 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-7-0-7-6-2-6-6-8"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.50923;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
d="m 63.288246,146.17315 v 4.5 h 65.292974 v -4.5 H 88.423956 c -1.80893,1.74361 -3.99687,2.68793 -6.29866,2.68793 h -0.001 c -2.30146,-7.8e-4 -4.49044,-0.9449 -6.29965,-2.68793 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
d="m 90.271426,114.39038 -16.2298,16.23069 c -2.05842,2.05665 -3.19117,4.79255 -3.19117,7.70296 0,2.91177 1.13409,5.64724 3.19161,7.70388 2.05707,2.05661 4.79344,3.19025 7.70296,3.19115 h 8.7e-4 c 2.90997,0 5.64499,-1.13364 7.70206,-3.19115 l 16.230714,-16.23117 c 3.34022,-3.34021 4.13332,-8.41483 2.041,-12.58073 l -3.56339,3.56381 c 0.44275,2.08296 -0.19771,4.27035 -1.70983,5.78291 l -16.638644,16.63731 -0.0116,-0.0109 c -1.18364,1.03365 -2.67833,1.59735 -4.25204,1.59735 -1.68172,0 -3.25587,-0.64851 -4.43504,-1.82634 -1.19657,-1.1961 -1.84328,-2.79347 -1.82676,-4.49795 0.0161,-1.5514 0.58065,-3.0229 1.59959,-4.19091 l -0.0104,-0.009 0.22806,-0.22985 c 0.0299,-0.0316 0.0611,-0.0642 0.0919,-0.0942 0.0104,-0.01 0.0192,-0.0197 0.0286,-0.0277 l 0.055,-0.0557 16.2298,-16.23071 c 1.19435,-1.193 2.78056,-1.84954 4.46673,-1.84954 0.43606,0 0.86899,0.0452 1.29388,0.13302 l 3.567384,-3.56831 c -1.49961,-0.74802 -3.167494,-1.13988 -4.859924,-1.13988 -2.90908,5.3e-4 -5.645,1.13364 -7.70252,3.19027 M 121.77679,97.012846 c 0,-2.90999 -1.13407,-5.645891 -3.19115,-7.702521 -2.0575,-2.05886 -4.79343,-3.19159 -7.70385,-3.19159 -2.90952,0 -5.64499,1.13318 -7.70207,3.19159 L 86.948586,105.53961 c -3.338,3.33755 -4.13288,8.40857 -2.04638,12.57271 l 3.41253,-3.41254 c -0.39141,-1.9495 0.15979,-4.00077 1.47954,-5.51467 l -0.0104,-0.01 0.22406,-0.22627 c 0.0286,-0.0299 0.0598,-0.0616 0.0897,-0.0921 0.0104,-0.009 0.0179,-0.0178 0.0276,-0.0267 l 0.0562,-0.0567 16.229374,-16.229834 c 1.19389,-1.19389 2.78099,-1.85087 4.4694,-1.85087 1.68885,0 3.27551,0.65698 4.4694,1.85087 2.46455,2.46412 2.46455,6.47604 0,8.938374 l -16.635504,16.63774 -0.0117,-0.0116 c -1.18541,1.0341 -2.67744,1.59825 -4.25161,1.59825 -0.42443,0 -0.84398,-0.0419 -1.25594,-0.12408 l -3.41207,3.41209 c 1.50364,0.75025 3.17198,1.1439 4.86795,1.1439 2.91134,0 5.646794,-1.1332 7.703874,-3.19028 l 16.23026,-16.23024 c 2.05751,-2.05887 3.19071,-4.794315 3.19071,-7.705205"
id="path1214-3-8-8"
style="fill:#0003ff;fill-opacity:1;stroke:#1c26ff;stroke-width:0.446;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

158
icons/paragraph.svg Normal file
View file

@ -0,0 +1,158 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73333mm"
height="67.73333mm"
viewBox="0 0 67.73333 67.73333"
version="1.1"
id="svg9916"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="paragraph.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview9918"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:snap-global="false"
inkscape:zoom="2.0308884"
inkscape:cx="115.46671"
inkscape:cy="156.08932"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs9913" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-92.524155,-109.47453)">
<rect
y="109.47453"
x="92.524155"
height="67.73333"
width="67.73333"
id="rect982-9-2-9-7-0"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<path
id="rect847-2-0-2"
style="fill:none;stroke:#000000;stroke-width:1.99356;paint-order:stroke markers fill;stop-color:#000000"
d="m 124.78694,132.07734 v -20.799 h 32.55138 v 43.20213 l -28.57395,0"
sodipodi:nodetypes="ccccc" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="fill:#029c00;fill-opacity:1;stroke:none;stroke-width:1.47294;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-4"
width="21.80117"
height="4.6439242"
x="132.51495"
y="114.49986" />
<rect
y="124.22032"
x="128.09102"
height="4.6439242"
width="26.394829"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-0"
style="fill:#029c00;fill-opacity:1;stroke:none;stroke-width:1.62072;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="fill:#029c00;fill-opacity:1;stroke:none;stroke-width:1.62072;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-9-80"
width="26.394829"
height="4.6439242"
x="128.12129"
y="133.61826" />
<path
id="path1659-3-4-3-2"
fill="#241F20"
d="m 147.82818,157.32917 8.99869,8.75745 h -3.83501 c -0.65909,7.11404 -5.34633,13.64931 -19.22877,8.60297 7.33777,0.27447 8.63092,-3.725 8.96976,-8.60294 h -4.36677 z"
inkscape:connector-curvature="0"
style="fill:#ff0e00;fill-opacity:1;stroke-width:0.593436"
inkscape:export-xdpi="96.000008"
inkscape:export-ydpi="96.000008"
sodipodi:nodetypes="ccccccc" />
<path
id="path1659-3-4-3-2-0"
fill="#241F20"
d="m 106.39267,129.95823 -8.998683,-9.02248 h 3.835003 c 0.65909,-7.32934 5.34633,-14.06239 19.22877,-8.86332 -7.33777,-0.28279 -8.63092,3.83772 -8.96976,8.86329 h 4.36677 z"
inkscape:connector-curvature="0"
style="fill:#ff0e00;fill-opacity:1;stroke-width:0.602349"
inkscape:export-xdpi="96.000008"
inkscape:export-ydpi="96.000008"
sodipodi:nodetypes="ccccccc" />
<rect
y="144.05806"
x="129.3343"
height="4.6439242"
width="25.151567"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-9-8-5"
style="fill:#029c00;fill-opacity:1;stroke:none;stroke-width:1.5821;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.99141;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect847-2-0-1-0"
width="33.820812"
height="42.416"
x="95.032234"
y="132.36934"
ry="0" />
<rect
y="138.01369"
x="101.99397"
height="4.9674153"
width="24.004038"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.5985;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.72633;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3"
width="27.996544"
height="4.9674153"
x="98.001465"
y="147.7115" />
<rect
y="157.37741"
x="98.001472"
height="4.9674153"
width="27.996544"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-9"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.72633;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.72633;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-9-8"
width="27.996544"
height="4.9674153"
x="98.00148"
y="166.80212" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

96
icons/press_text.svg Normal file
View file

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73333mm"
height="67.73333mm"
viewBox="0 0 67.73333 67.73333"
version="1.1"
id="svg2477"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="press_text.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2479"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="2.0308884"
inkscape:cx="59.826033"
inkscape:cy="109.80416"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:lockguides="true" />
<defs
id="defs2474" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-44.252445,-77.047729)">
<rect
y="77.047729"
x="44.252445"
height="67.73333"
width="67.73333"
id="rect982-9-2-94-9-12"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
y="108.00449"
x="45.867519"
height="6.5124974"
width="64.078773"
id="rect851-8-3-8-3-37-8-5-8-6-0-2"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.99041;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.99041;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-5-8-6-0-0-46"
width="64.078773"
height="6.5124974"
x="45.6674"
y="95.987839" />
<rect
y="120.45139"
x="45.867519"
height="6.5124974"
width="64.078773"
id="rect851-8-3-8-3-37-8-5-8-6-0-0-4-0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.99041;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<path
d="m 62.836441,77.914258 14.82678,14.252148 14.82704,-14.252148 z"
id="path966-9-6-0-2-7-3-4-34-6-9"
inkscape:connector-curvature="0"
style="fill:#e60002;fill-opacity:1;stroke-width:5.20472"
sodipodi:nodetypes="cccc"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<path
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
sodipodi:nodetypes="cccc"
style="fill:#e60002;fill-opacity:1;stroke-width:5.20826"
inkscape:connector-curvature="0"
id="path966-9-6-0-2-7-3-4-34-6-9-9"
d="m 63.55667,144.36014 14.82678,-14.27159 14.82704,14.27159 z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

108
icons/tail.svg Normal file
View file

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="hvost.svg"
inkscape:version="1.0 (4035a4f, 2020-05-01)"
id="svg2650"
version="1.1"
viewBox="0 0 67.73333 67.73333"
height="67.73333mm"
width="67.73333mm">
<defs
id="defs2644" />
<sodipodi:namedview
inkscape:window-maximized="1"
inkscape:window-y="25"
inkscape:window-x="0"
inkscape:window-height="992"
inkscape:window-width="1920"
showgrid="false"
inkscape:document-rotation="0"
inkscape:current-layer="layer1"
inkscape:document-units="mm"
inkscape:cy="161.53655"
inkscape:cx="48.279563"
inkscape:zoom="0.98994949"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base" />
<metadata
id="metadata2647">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-94.593422,-56.778362)"
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="opacity:1;fill:#484848;fill-opacity:1;stroke:none;stroke-width:2.02445;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000;stop-opacity:1"
id="rect851-8-3-8-3-37-8-5-8-6-0-0-6"
width="18.675617"
height="10.240829"
x="96.890099"
y="108.6032" />
<path
d="m 148.55629,103.93948 11.61928,9.55377 -11.61928,9.55393 -0.0327,-6.34998 h -7.8785 v -6.4078 h 7.87849 z"
id="path966-9-6-0-2-0-0-9-4-7-4-8-3"
inkscape:connector-curvature="0"
style="opacity:1;fill:#e60002;fill-opacity:1;stroke-width:3.42818;stop-opacity:1"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="cccccccc"
style="opacity:1;fill:#e60002;fill-opacity:1;stroke-width:3.42818;stop-opacity:1"
inkscape:connector-curvature="0"
id="path966-9-6-0-2-0-0-9-4-7-4-8-3-8"
d="m 128.61418,123.04712 -11.61928,-9.55377 11.61928,-9.55392 0.0327,6.34997 h 7.8785 v 6.4078 h -7.87849 z" />
<rect
y="91.483078"
x="96.890099"
height="10.240829"
width="62.825058"
id="rect851-8-3-8-3-37-8-5-8-6-0-0-6-2"
style="opacity:1;fill:#484848;fill-opacity:1;stroke:none;stroke-width:3.71308;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000;stop-opacity:1"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="opacity:1;fill:#484848;fill-opacity:1;stroke:none;stroke-width:3.71308;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000;stop-opacity:1"
id="rect851-8-3-8-3-37-8-5-8-6-0-0-6-2-8"
width="62.825058"
height="10.240829"
x="96.890099"
y="74.892128" />
<rect
y="59.359539"
x="96.890099"
height="10.240829"
width="62.825058"
id="rect851-8-3-8-3-37-8-5-8-6-0-0-6-2-8-3"
style="opacity:1;fill:#484848;fill-opacity:1;stroke:none;stroke-width:3.71308;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000;stop-opacity:1"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View file

@ -1,3 +1,4 @@
0.7.2 Added conversion for endnotes to manual endontes and back
0.6.15 Increased limit of articles in issue to 50 0.6.15 Increased limit of articles in issue to 50
0.6.14 Bugfix: Remove bookmark before creating another one with the same name 0.6.14 Bugfix: Remove bookmark before creating another one with the same name
0.6.13 Forbid creating bidirectional links with empty text 0.6.13 Forbid creating bidirectional links with empty text

Binary file not shown.