diff --git a/Redaction/Clean.xba b/Redaction/Clean.xba index cff21ec..71865b4 100644 --- a/Redaction/Clean.xba +++ b/Redaction/Clean.xba @@ -1,6 +1,6 @@ -Sub mark96 +Sub mark87 End Sub @@ -50,7 +50,6 @@ Private Sub makerUpMenu advancedCleaningDialog.getControl("convertFontsToCharStyles").Label = getTranslation("advancedMenuconvertFontsToCharStyles") advancedCleaningDialog.getControl("fixBrokenCharBackTransparent").Label = getTranslation("fixBrokenCharBackTransparentMenuItem") advancedCleaningDialog.getControl("removeNotTransparentBackgrounds").Label = getTranslation("removeNotTransparentBackgrounds") - advancedCleaningDialog.getControl("fixDiacriticKerning").Label = getTranslation("fixDiacriticKerning") advancedCleaningDialog.getControl("Cancel").Label = getTranslation("buttonCancel") advancedCleaningDialog.getControl("OK").Label = getTranslation("buttonOK") advancedCleaningDialog.getControl("buttonLoad").Label = getTranslation("buttonLoad") @@ -59,7 +58,7 @@ Private Sub makerUpMenu advancedCleaningDialog.setVisible(true) Select Case advancedCleaningDialog.Execute() Case 1 - cleanAccordingTo(advancedCleaningDialog) + cleanAccordingTo(dialog) Case 0 End Select advancedCleaningDialog.dispose() @@ -165,9 +164,7 @@ Private Sub cleanAccordingTo(dialog As Object) If dialog.getControl("removeNotTransparentBackgrounds").state = 1 Then fixColoredBackgroundInDoc() EndIf - If dialog.getControl("fixDiacriticKerning").state = 1 Then - fixDiacriticKerning() - EndIf + statusIndicator.end() saveAndreload() @@ -206,8 +203,6 @@ Private Sub quietCleaning saveAndreload() statusIndicator = ThisComponent.getCurrentController.statusIndicator unicodeSymbolsConversion - statusIndicator.Start(getTranslation("statusFixingDiacriticCharactersKerning"),100) - fixDiacriticKerning statusIndicator.Start(getTranslation("statusCleaningManualFormatting"),100) cleanFormatting statusIndicator.Start(getTranslation("statusReplaceWhiteBackground"),100) @@ -334,18 +329,12 @@ Private Sub unicodeSymbolsConversion 'Extended latin-1 0080—00FF 'Cyrillic unicode block range \u0400-\u04FF 'Basic Latin \u0020-\u007E - 'Combining diacritical marks 0301 0304 0303 0323 032e 0331 035f - combiningDiacritic_Astra = "\u0301\u0303\u0304\u0308\u0323\u032e\u0331\u0341\u035f" - Dim extendedLatinA_Astra As String - extendedLatinA_Astra = "\u1e15\u1e17\u1e53\u0129\u0169" - ' - ' - ' + 'Combining diacritical marks 0301 0304 0323 032e 0331 035f 'General Punctuation \u2000-\u206f 'Latin Extended A \u0100-\u017f '\u02bb Modifier Letter Turned Comma is in IPH Astra ' unicodeConversionEverywhere("[\u0020-\u007F]+",RAtts) - unicodeConversionEverywhere("[\u0020-\u007f\u0080-\u00ff\u0400-\u04ff\u2000-\u206f\u2100-\u214f\u02bb\u0100-\u017f" & combiningDiacritic_Astra & extendedLatinA_Astra &"]+",RAtts) + unicodeConversionEverywhere("[\u0020-\u007f\u0080-\u00ff\u0400-\u04ff\u2000-\u206f\u2100-\u214f\u0301\u0304\u0323\u032e\u0331\u0341\u035f\u02bb\u0100-\u017f]+",RAtts) 'Arabic Scheherazade 'Arabic Presentation Forms-A fb50-fdff 'Arabic Presentation Forms-B fe70-feff @@ -470,24 +459,15 @@ Sub removeAllFields() field = fieldEnum.nextElement() field.dispose() Wend -End Sub - -Public Const RX_Greek_letters = "\u0388-\u03ce" -Public Const RX_Latin_up_alphabet = "\u0041-\u005a" -Public Const RX_Latin_low_alphabet = "\u0061-\u007a" -Public Const RX_Cyrillic_alphabet = "\u0410-\u044f" -Public Const RX_Comma = "\u002c" -Public Const RX_Digits = "\u0030-\u0039" -Public Const RX_Roman_numbers = "MDCLXVI" -Public Const RX_Letters_Dash = "[" & RX_Latin_up_alphabet & RX_Latin_low_alphabet & RX_Cyrillic_alphabet & RX_Greek_letters & "]" -Public Const RX_Letters = "[" & RX_Latin_up_alphabet & RX_Latin_low_alphabet & RX_Cyrillic_alphabet & RX_Greek_letters & "]" +End sub Private Sub fixFrequentMistakes Dim config As Object config = initRedactionConfiguration() Dim NBSP As String Dim space As String - + Dim latinPlusCyrillicLettersRegExp As String + latinPlusCyrillicLettersRegExp = "[\u0041-\u005a\u0061-\u007a\u0410-\u044f]" NBSP = " " space = " " 'Не должно быть символов табуляции @@ -504,21 +484,19 @@ Private Sub fixFrequentMistakes AskAndReplace("[:space:]+(?=[\.,;:?!\)\]\}»¡¿”’])","") 'Не должно быть пробелов после скобок [({ и кавычек «„ AskAndReplace("(?<=[\(\[\{«„])[:space:]","") - 'Между буквами среднее или длинное тире должно быть замененено на среднее и обрамлено пробелами - AskAndReplace("(?<=" & RX_Letters_Dash & ")[—–]+(?=.)",NBSP & "–" & NBSP) - AskAndReplace("(?<=.)[—–]+(?=" & RX_Letters_Dash & ")",NBSP & "–" & NBSP) - 'Между буквами дефисы-минусы, цифровые тире, средние тире и длинные тире заменяются на одно среднее тире - AskAndReplace("(?<=" & RX_Letters_Dash & "[:space:])[-‒—−–]+(?=[:space:].)","–") - AskAndReplace("(?<=.[:space:])[-‒—−–]+(?=[:space:]" & RX_Letters_Dash & ")","–") + 'Между буквами среднее тире должно обрамляться пробелами + AskAndReplace("(?<=" & latinPlusCyrillicLettersRegExp & ")–(?=" & latinPlusCyrillicLettersRegExp & ")",NBSP & "–" & NBSP) + 'Между буквами дефис-минус, цифровое тире и длинное тире заменяется на среднее тире + AskAndReplace("(?<=" & latinPlusCyrillicLettersRegExp & "[:space:])[-‒—−](?=[:space:]" & latinPlusCyrillicLettersRegExp & ")","–") 'Между двумя цифрами и тире не долнжо быть пробелов. А также тире должно быть цифровым. 'Также проверяем, что перед искомым тире нет DOI '''''AskAndReplace("(?<!DOI[0-9. /XVI:-‒–—−-]{1,50})(?<=[:digit:])(?:[:space:])?[-‒–—−](?:[:space:])?(?=[:digit:])","‒") 'Между двумя римскими цифрами и тире между ними не долнжо быть пробелов. А также тире должно быть средним - AskAndReplace("(?<=[" & RX_Roman_numbers & "])(?:[:space:])?[-‒–—−]+(?:[:space:])?(?=[" & RX_Roman_numbers & "])","–") + AskAndReplace("(?<=[MDCLXVI])(?:[:space:])?[-‒–—−](?:[:space:])?(?=[MDCLXVI])","–") 'Между буквой и угловой открывающейся скобкой должен быть пробел - AskAndReplace("(?<=" & RX_Letters & ")<(?=…>)",space & "<") + AskAndReplace("(?<=" & latinPlusCyrillicLettersRegExp & ")<(?=…>)",space & "<") 'Между угловой закрывающейся скобкой и буквой должен быть пробел - AskAndReplace("(?<=<…)>(?=" & RX_Letters & ")",">" & space) + AskAndReplace("(?<=<…)>(?=" & latinPlusCyrillicLettersRegExp & ")",">" & space) If config.getPropertyValue("fixes_russian_iph") = "true" Then 'между N. Y. не должно быть пробела @@ -2123,67 +2101,4 @@ Function fixColoredBackgroundInDoc() As Boolean EndIf End Function - - -Sub fixDiacriticKerning - Dim oSearch As Object - Dim oFound As Object - Dim oPara As Object - oSearch = ThisComponent.createSearchDescriptor() - oSearch.SearchString = "[\u0300-\u036F]" - oSearch.SearchRegularExpression=True - oSearch.searchAll=True - oFound = ThisComponent.findFirst(oSearch) - Do While Not IsNull(oFound) - oPara = oFound.TextParagraph - fixDiacriticKerningInPara(oPara) - oFound = ThisComponent.findNext(oFound.End, oSearch) - Loop -End Sub - -Sub fixDiacriticKerningInPara(oPara As Object) - Dim paraEnum As Object - Dim portion As Object - Dim prevPortion As Object - paraEnum = oPara.createEnumeration - If paraEnum.hasMoreElements Then - prevPortion = paraEnum.nextElement - While paraEnum.hasMoreElements - portion = paraEnum.nextElement - While isFirstCharDiacritic(portion) - moveFirstCharacter(portion, prevPortion) - Wend - prevPortion = portion - Wend - EndIf -End Sub - -Function isFirstCharDiacritic(portion As Object) As Boolean - isFirstCharDiacritic = false - Dim portionText As String - Dim diaLowBound As Long - Dim diaHighBound As Long - Dim charNum As Long - diaLowBound = 768 - diaHighBound = 879 - portionText = portion.String - If Len(portionText) = 0 Then - Exit Function - EndIf - charNum = Asc(portionText) - If charNum >= diaLowBound And charNum <= diaHighBound Then - isFirstCharDiacritic = true - EndIf -End Function - -Sub moveFirstCharacter(portion As Object, prevPortion As Object) - Dim prevEnd As Object - Dim nextStart As Object - prevEnd = prevPortion.getEnd() - prevEnd.String = Left(portion.String,1) - nextStart = portion.Text.createTextCursorByRange(portion.Start) - nextStart.goRight(1,true) - nextStart.setString("") -End Sub - \ No newline at end of file diff --git a/Redaction/CleaningDialog.xdl b/Redaction/CleaningDialog.xdl index af7ce20..317b762 100644 --- a/Redaction/CleaningDialog.xdl +++ b/Redaction/CleaningDialog.xdl @@ -1,10 +1,10 @@ - + - + - + @@ -20,7 +20,7 @@ - + @@ -30,7 +30,6 @@ - - + \ No newline at end of file diff --git a/Redaction/Configuration.xba b/Redaction/Configuration.xba index 9e4a190..d913b2b 100644 --- a/Redaction/Configuration.xba +++ b/Redaction/Configuration.xba @@ -1,7 +1,7 @@ Public Const redactionExtensionName = "cleanAndValidate" -Public Const redactionExtensionVersion = "0.10.11" +Public Const redactionExtensionVersion = "0.10.0" Public Const template_name_monography = "Монография" Public Const template_name_pj = "Философский журнал" Public Const template_name_pq = "Вопросы философии" @@ -10,13 +10,10 @@ Public Const template_name_hpe = "Историко-философский Public Const template_name_pr = "Философия религии" Public Const template_name_fnit = "Философия науки и техники" Public Const template_name_pa = "Философская антропология" -Public Const template_name_pcr = "Проблемы цивилизационного развития" +Public Const template_name_pcr = "Путь цивилизационного развития" Public Const template_name_eifn = "Эпистемология и философия науки" Public Const template_name_et = "Этическая мысль" -Public Const template_name_ephe = "Электронная философская энциклопедия" -Public Const template_name_iph_big = "Большой формат издания" Public Const template_manual = "custom_selected_template" -Public Const articles_path = "/templates/articles/" Function initRedactionConfiguration() On Error Goto exceptionHandler @@ -326,19 +323,16 @@ End Function Function getTemplateNames() As Variant Dim names() As String -' AddToArray(names, template_name_monography) + AddToArray(names, template_name_monography) AddToArray(names, template_name_pq) AddToArray(names, template_name_hp) AddToArray(names, template_name_hpe) AddToArray(names, template_name_pr) AddToArray(names, template_name_fnit) AddToArray(names, template_name_pa) - AddToArray(names, template_name_pj) AddToArray(names, template_name_pcr) AddToArray(names, template_name_eifn) AddToArray(names, template_name_et) - AddToArray(names, template_name_ephe) - AddToArray(names, template_name_iph_big) getTemplateNames = names End Function @@ -357,44 +351,14 @@ Function getTemplateFile(templateName As String) As String fileName = config.getPropertyValue("defaultTemplate") getTemplateFile = getTemplatePath() & "/" & fileName Exit Function + Case template_name_pj + getTemplateFile = extensionPath() & "/templates/articles/default_article_template_ru.ott" + Exit Function Case template_name_eifn - getTemplateFile = extensionPath() & articles_path & "статья_эифн.ott" - Exit Function - Case template_name_fnit - getTemplateFile = extensionPath() & articles_path & "статья_фнит.ott" - Exit Function - Case template_name_pa - getTemplateFile = extensionPath() & articles_path & "статья_фа.ott" - Exit Function - Case template_name_pj - getTemplateFile = extensionPath() & articles_path & "статья_фж.ott" - Exit Function - Case template_name_et - getTemplateFile = extensionPath() & articles_path & "статья_эм.ott" - Exit Function - Case template_name_pq - getTemplateFile = extensionPath() & articles_path & "статья_вф.ott" - Exit Function - Case template_name_pr - getTemplateFile = extensionPath() & articles_path & "статья_фр.ott" - Exit Function - Case template_name_pcr - getTemplateFile = extensionPath() & articles_path & "статья_пцр.ott" - Exit Function - Case template_name_hp - getTemplateFile = extensionPath() & articles_path & "статья_иф.ott" - Exit Function - Case template_name_hpe - getTemplateFile = extensionPath() & articles_path & "статья_ифе.ott" - Exit Function - Case template_name_ephe - getTemplateFile = extensionPath() & articles_path & "статья_эфэ.ott" - Exit Function - Case template_name_iph_big - getTemplateFile = extensionPath() & "/templates/books/большой_формат_для_архива.ott" + getTemplateFile = extensionPath() & "/templates/articles/статья_журнала_ЭиФН.ott" Exit Function Case Else - getTemplateFile = extensionPath() & articles_path & "статья.ott" + getTemplateFile = extensionPath() & "/templates/articles/default_article_template_ru.ott" Exit Function End Select End Function diff --git a/Redaction/Translations.xba b/Redaction/Translations.xba index 51dd9dd..538d13e 100644 --- a/Redaction/Translations.xba +++ b/Redaction/Translations.xba @@ -344,12 +344,6 @@ Function getRussian(identifier As String) As String Case "templateChosen" getRussian = "Выбран шаблон" Exit Function - Case "statusFixingDiacriticCharactersKerning" - getRussian = "Исправляем комбинирование с диакритическими символами" - Exit Function - Case "fixDiacriticKerning" - getRussian = "Исправить комбинирование с диакритическими символами" - Exit Function Case Else getRussian = "Перевод не найден" End Select @@ -676,12 +670,6 @@ Function getEnglish(identifier As String) As String Case "templateChosen" getEnglish = "Selected template" Exit Function - Case "statusFixingDiacriticCharactersKerning" - getEnglish = "Fixing the combination with diacritics " - Exit Function - Case "fixDiacriticKerning" - getEnglish = "Fix combining with diacritic characters" - Exit Function Case Else getEnglish = "No translation" End Select @@ -1007,12 +995,6 @@ Function getCroatian(identifier As String) As String Case "templateChosen" getCroatian = "Izabrani šablon" Exit Function - Case "statusFixingDiacriticCharactersKerning" - getCroatian = "Popravljanje kombinacije s dijakritičkim znakovima" - Exit Function - Case "fixDiacriticKerning" - getCroatian = "Ispravite kombiniranje s naglašenim likovima" - Exit Function Case Else getCroatian = "No translation" End Select @@ -1338,12 +1320,6 @@ Function getSerbian(identifier As String) As String Case "templateChosen" getSerbian = "Изабрани шаблон" Exit Function - Case "statusFixingDiacriticCharactersKerning" - getSerbian = "Ispravljanje kombinacije sa dijakritičkim znacima " - Exit Function - Case "fixDiacriticKerning" - getSerbian = "Ispravite kombiniranje s naglašenim likovima" - Exit Function Case Else getSerbian = "No translation" End Select @@ -1669,12 +1645,6 @@ Function getBosnian(identifier As String) As String Case "templateChosen" getBosnian = "Izabrani šablon" Exit Function - Case "statusFixingDiacriticCharactersKerning" - getBosnian = "Popravljanje kombinacije s dijakritičkim znakovima" - Exit Function - Case "fixDiacriticKerning" - getBosnian = "Ispravite kombiniranje s naglašenim likovima" - Exit Function Case Else getBosnian = "No translation" End Select diff --git a/Redaction/Validation.xba b/Redaction/Validation.xba index 74b0974..2f3d98c 100644 --- a/Redaction/Validation.xba +++ b/Redaction/Validation.xba @@ -1,6 +1,7 @@ -Sub markval31 +Sub markval30 + End Sub @@ -769,9 +770,11 @@ Sub fontReportButton Exit sub EndIf Dim FileName As String - getCharsInFont(targetFontName) + FileName = getCharsInFont(targetFontName) statusIndicator.end() - + If FileName <> "" Then + openReport(FileName) + EndIf End Sub Sub onSelectFont(oEvent) @@ -911,7 +914,7 @@ Sub addToArray(xArray(),vNextElement) xArray(iUB) = vNextElement End Sub -Sub getCharsInFont(fontName As String) +Function getCharsInFont(fontName As String) As String Dim resultArray() As String Dim pageNums() As Long Dim firstPages() As Long @@ -997,30 +1000,43 @@ Sub getCharsInFont(fontName As String) EndIf Next j Next i + resultString = "" + For i = LBound(resultArray) To UBound(resultArray) + resultString = resultString & "<a href='https://unicode-table.com/ru/" & resultArray(i) & "'" & ">https://unicode-table.com/ru/" & resultArray(i) & "</a> " & getTranslation("charFirstPage") & " " & pageNums(i) & "<br>" & Chr(10) + Next i + If resultString <> "" Then - Dim newDocCursor As Object - Dim newDoc As Object - newDoc = starDesktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, Array()) - newDocCursor = newDoc.getCurrentController().getViewCursor() - newDocCursor.String = getTranslation("symbolsInFontHeading") & " " & fontName - newDocCursor.ParaStyleName = "Heading 1" - newDocCursor.collapseToEnd() - newDocCursor.Text.insertControlCharacter(newDocCursor.End,com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK,False) - For i = LBound(resultArray) To UBound(resultArray) - newDocCursor.ParaStyleName = "Text body" - newDocCursor.String = "https://unicode-table.com/ru/" & resultArray(i) - newDocCursor.HyperLinkURL = "https://unicode-table.com/ru/" & resultArray(i) - newDocCursor.collapseToEnd() - newDocCursor.String = " " & getTranslation("charFirstPage") & " " & pageNums(i) - newDocCursor.collapseToEnd() - newDocCursor.Text.insertControlCharacter(newDocCursor.End,com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK,False) - Next i - Exit Sub + 'MsgBox "Символы в шрифте "& fontName &Chr(10)&resultString + Dim FileName As String 'Holds the file name + Dim n As Integer 'Holds the file number + Dim f As Integer 'Index variable + Dim s As String 'Temporary string for input + Dim fileaccess As Object + Dim outtextstream As Object + Dim out As Object + + Dim sTemp$ + GlobalScope.BasicLibraries.loadLibrary("Tools") + path=DirectoryNameoutofPath(ThisComponent.getURL(),"/") + FileName = path & "/symbolsInFont" & fontName & ".html" + 'n = FreeFile() 'Next free file number + 'Open FileName For Output Access Read Write As #n 'Open for read/write + fileaccess = createUnoService ("com.sun.star.ucb.SimpleFileAccess") + outtextstream = createUnoService ("com.sun.star.io.TextOutputStream") + outtextstream.setEncoding( "UTF-8" ) + out = fileaccess.openFileWrite( FileName ) + outtextstream.setOutputStream( out ) + outtextstream.writeString( "<html><head><title>" & getTranslation("symbolsInFontHeading") & " "& fontName & "</title></head><body><h2>" & getTranslation("symbolsInFontHeading") & " "& fontName &":</h2>"&resultString &"</body></html>" ) + outtextstream.closeOutput() + getCharsInFont = FileName + Exit Function Else MsgBox getTranslation("symbolsInFontNotFound1") & " " & fontName & " " & getTranslation("symbolsInFontNotFound2") + getCharsInFont = "" + Exit Function EndIf -End Sub +End Function Function findBadCharacters() As Boolean diff --git a/build.gradle b/build.gradle index d98dfa4..5f92339 100644 --- a/build.gradle +++ b/build.gradle @@ -1,8 +1,6 @@ -apply plugin: 'java' task oxt(type: Zip) { dependsOn = [ 'setVersion','setVersionInBasicCode' ] - archiveFileName = 'cleanAndValidate.oxt' - destinationDirectory = file("./") + archiveName 'cleanAndValidate.oxt' from './' include '*' include '*/*' diff --git a/cleanandvalidate.update.xml b/cleanandvalidate.update.xml index 19726d1..80f002c 100644 --- a/cleanandvalidate.update.xml +++ b/cleanandvalidate.update.xml @@ -2,9 +2,9 @@ - + - + diff --git a/description.xml b/description.xml index be730b9..177e347 100644 --- a/description.xml +++ b/description.xml @@ -1,375 +1,205 @@ - - - - - - + - - - - - - - - - - - - - + + + - - - - - - + - - - - - - + Cleaning and validation documents for publishing in html and epub with pagination - - - - - - + Чистка и проверка документов для издания в html и epub с сохранением пагинации - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + Georgy Litvinov - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - + - - - - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + diff --git a/gradle.properties b/gradle.properties index 8e6f42e..825e6cf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=0.10.11 +version=0.10.0 diff --git a/license_en.txt b/license_en.txt index 382c1d8..e7a4150 100644 --- a/license_en.txt +++ b/license_en.txt @@ -1,6 +1,6 @@ The author of this extension is: Georgy Litvinov (public@litvinovg.pro) -Copyright 2021 redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 3 of the License. +Copyright 20212121212121212121212121212121212121212121n redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 3 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. diff --git a/templates/articles/default article template_ru.ott b/templates/articles/default article template_ru.ott new file mode 100644 index 0000000..6fbbd62 Binary files /dev/null and b/templates/articles/default article template_ru.ott differ diff --git a/templates/articles/default_article_template_ru.ott b/templates/articles/default_article_template_ru.ott new file mode 100644 index 0000000..6fbbd62 Binary files /dev/null and b/templates/articles/default_article_template_ru.ott differ diff --git a/templates/articles/статья.ott b/templates/articles/статья.ott deleted file mode 100644 index ecf42ce..0000000 Binary files a/templates/articles/статья.ott and /dev/null differ diff --git a/templates/articles/статья_вф.ott b/templates/articles/статья_вф.ott deleted file mode 100644 index 4e95ee4..0000000 Binary files a/templates/articles/статья_вф.ott and /dev/null differ diff --git a/templates/articles/статья_журнала_ЭиФН.ott b/templates/articles/статья_журнала_ЭиФН.ott new file mode 100644 index 0000000..f5d7384 Binary files /dev/null and b/templates/articles/статья_журнала_ЭиФН.ott differ diff --git a/templates/articles/статья_иф.ott b/templates/articles/статья_иф.ott deleted file mode 100644 index e1f8d8d..0000000 Binary files a/templates/articles/статья_иф.ott and /dev/null differ diff --git a/templates/articles/статья_ифе.ott b/templates/articles/статья_ифе.ott deleted file mode 100644 index f9c3425..0000000 Binary files a/templates/articles/статья_ифе.ott and /dev/null differ diff --git a/templates/articles/статья_пцр.ott b/templates/articles/статья_пцр.ott deleted file mode 100644 index 409063a..0000000 Binary files a/templates/articles/статья_пцр.ott and /dev/null differ diff --git a/templates/articles/статья_фа.ott b/templates/articles/статья_фа.ott deleted file mode 100644 index ab2571b..0000000 Binary files a/templates/articles/статья_фа.ott and /dev/null differ diff --git a/templates/articles/статья_фж.ott b/templates/articles/статья_фж.ott deleted file mode 100644 index 02e22b0..0000000 Binary files a/templates/articles/статья_фж.ott and /dev/null differ diff --git a/templates/articles/статья_фнит.ott b/templates/articles/статья_фнит.ott deleted file mode 100644 index 9fbacfd..0000000 Binary files a/templates/articles/статья_фнит.ott and /dev/null differ diff --git a/templates/articles/статья_фр.ott b/templates/articles/статья_фр.ott deleted file mode 100644 index 7823637..0000000 Binary files a/templates/articles/статья_фр.ott and /dev/null differ diff --git a/templates/articles/статья_эифн.ott b/templates/articles/статья_эифн.ott deleted file mode 100644 index bbfec52..0000000 Binary files a/templates/articles/статья_эифн.ott and /dev/null differ diff --git a/templates/articles/статья_эм.ott b/templates/articles/статья_эм.ott deleted file mode 100644 index 69cef11..0000000 Binary files a/templates/articles/статья_эм.ott and /dev/null differ diff --git a/templates/articles/статья_эфэ.ott b/templates/articles/статья_эфэ.ott deleted file mode 100644 index cf7c755..0000000 Binary files a/templates/articles/статья_эфэ.ott and /dev/null differ diff --git a/templates/books/большой_формат_для_архива.ott b/templates/books/большой_формат_для_архива.ott deleted file mode 100644 index 73b55f7..0000000 Binary files a/templates/books/большой_формат_для_архива.ott and /dev/null differ diff --git a/translations.ods b/translations.ods index d685210..ac58eef 100644 Binary files a/translations.ods and b/translations.ods differ