diff --git a/QWERTYkez.WordProcessor/MultiReplace.cs b/QWERTYkez.WordProcessor/MultiReplace.cs index aa1d858..f7d5eee 100644 --- a/QWERTYkez.WordProcessor/MultiReplace.cs +++ b/QWERTYkez.WordProcessor/MultiReplace.cs @@ -360,7 +360,8 @@ internal static class MultiReplaceExt ); para.ParagraphProperties ??= new ParagraphProperties(); - para.ParagraphProperties.AppendChild(sectionProps); + // Вставляем в начало, чтобы свойства секции были первыми + para.ParagraphProperties.InsertAt(sectionProps, 0); } /// Сливает содержимое исходного параграфа в целевой (клонирует дочерние элементы). @@ -549,15 +550,10 @@ internal static class MultiReplaceExt } } - // Если осталась отложенная ориентация (например, замена в конце документа, и не было создано новых параграфов), - // создаём новый параграф с этой ориентацией (пустой, чтобы начать новую секцию) - if (pendingOrientation.HasValue) - { - var newPara = CloneParagraphProperties(original); - AddSectionProperties(newPara, pendingOrientation.Value); - resultParas.Add(newPara); - pendingOrientation = null; - } + // Если осталась отложенная ориентация и нет остатка текста, + // это значит, что маркер смены ориентации был последним элементом в документе. + // В этом случае мы НЕ создаём новый параграф, чтобы избежать пустого листа. + // pendingOrientation просто игнорируется. // Очистка пустых параграфов for (int i = resultParas.Count - 1; i >= 0; i--)