Вы не авторизованы. Пожалуйста, выполните вход или создайте аккаунт.
Самопроизвольное изменение размера объекта-формулы
Страница 1
Для того чтобы отправить ответ, необходимо войти в систему или создать новую учетную запись
Сообщений [ 17 ]
1 25.09.2010 17:49:22
Тема: Самопроизвольное изменение размера объекта-формулы
Коллеги! Уже долго борюсь со следующей проблемой. В тексте Word 2007 много «внутритекстовых» формул, созданных в Equation 3.0. По мере работы с текстом (перенос с компьютера на компьютер) медленно «уплывает» масштаб объекта-формулы и она становиться меньше или больше основного текста. Пробовал разные комбинации опций «сохранять пропорции», «относительно исходного размера».
К сожалению, все попытки оказались безуспешными. Возможно, кто-то знает, как решить эту проблему. Заранее благодарен за помощь.
2 Ответ от viter.alex 25.09.2010 18:18:33
Re: Самопроизвольное изменение размера объекта-формулы
Рекомендую задать нужный размер в одной формуле, а затем использовать этот макрос для быстрого прохождения по остальным. Или я неправильно интерпретировал ваш вопрос?
Лучше день потерять — потом за пять минут долететь!
3 Ответ от Преподаватель 25.09.2010 18:36:20
Re: Самопроизвольное изменение размера объекта-формулы
Постараюсь. Но, похоже, дело не в Equation, а скорее в том, как Word интерпретирует объекты, встроенные в текст. Создается ощущение, что он немного изменяет масштаб по какой-то причине. При масштабе 99 % вместо 100 % это незаметно. Проблемы начинают возникать со временем, когда различия становятся более выраженными.
4 Ответ от tigr 26.09.2010 14:00:28
Re: Самопроизвольное изменение размера объекта-формулы
viter.alex На каком редакторе должны быть наложены формулы, чтобы их можно было «просмотреть с помощью этого макроса»?
5 Ответ от ЮВ 27.09.2010 12:28:45
Re: Самопроизвольное изменение размера объекта-формулы
Создается ощущение, что он немного изменяет размер с определенной целью.
Однажды я столкнулся с похожей проблемой — тоже не удалось решить её. Когда открывал текстовый документ на другом компьютере (версия Word была одинаковой), примерно на тридцатой странице одна строка текста переносилась на следующую страницу.
6 Ответ от sea 22.08.2015 09:20:52
Re: Самопроизвольное изменение размера объекта-формулы
Хочу вновь поднять данную тему.Word 2013. Создаю формулы в Equation.3.Так вот проблема такая же. Со временем при работе с документом сбиваются размеры формул, как объектов внедренных в документ. Чтобы вернуть прежние размеры приходится командой «Формат объекта…» сбрасывать размеры.
Причем увеличение / уменьшение высоты и длины Word совершает непропорциональное.Также изменяются размеры связанных объектов, вставленных как рисунок. Но их размеры обычно в пределах +/- 1% изменяются — не так критично.Вроде в поле < EMBED Equation.3 >можно добавить ключ *MERGEFORMAT, который «Применяет установленные ранее размеры или обрезку к обновленному внедренному объекту. Чтобы сохранить установленные размеры или обрезку внедренного объекта, не удаляйте этот ключ.»Как думаете поможет?В doc документах таких проблем нет. Создал формулу и если самому не растягивать, то размеры сохраняются 100%.
Предложенный макрос данную проблему не решает (он для применения одного стиля оформления в формулах документа).Можно создать макрос, который для объектов Equation.3 в документах сбрасывал ширину и высоту на исходные размеры?
7 Ответ от Александр Б. 22.08.2015 15:36:00
Re: Самопроизвольное изменение размера объекта-формулы
Автоматическое преобразование/исправление/приведение к единому виду/прощелкивание формул Equation 3.0.
Это не очень изящное решение, но я пользуюсь макросом TransformSelectedEquations, который приведен ниже. Надо выделить фрагмент текста и выполнить макрос. Все формулы Equation 3.0, которые оказались в выделении будут «прощелканы» и их размеры исправлены. Перед выполнением макроса надо (!) один раз прощелкать любую формулу, иначе стили могут быть выставлены неверными.
Насчет макроса, поскольку вам не нужно менять стили формул, то надо закоментировать пять строк после Do Until. После этого в цикле останется только две строки установки размеров. Думаю, сработает, но проверять было лень.
Примечание — Недостаток макроса в том, что он работает через поиск и замену. Думаю можно сделать умнее, использовать конструкции типа таких:
With ActiveDocument For i = .Fields.Count To 1 Step -1 With .Fields(i) If .Type = wdFieldRef Then If varColor <> wdNoHighlight Then ActiveDocument.Fields(i).Select Selection.Range.HighlightColorIndex = varColor ‘ выделяем цветом End If .Unlink End If End With Next End With
но я не заморачивался, потому что меня и так устраивает.
Sub ПреобразоватьВыделенныеФормулы() ‘ перевод выделенных формул ‘ "Прощелкать" формулы, которые попали в выделение »»»» Начало первого блока прокрутки Dim lngВертикальнаяПрокрутка Dim k As Long, nk As Long k = 0 ‘счетчик nk = 0 ‘число кликов, которые потребовались для изменения прокрутки на 1% lngВертикальнаяПрокрутка = ActiveWindow.VerticalPercentScrolled ‘начальная прокрутка документа в процентах If lngВертикальнаяПрокрутка < 100 Then ‘если документ прокручен менее чем на 100% Do ActiveWindow.ActivePane.SmallScroll Down:=1 ‘прокручиваем вниз на один клик по кнопке на полосе прокрутки k = k + 1 If ActiveWindow.VerticalPercentScrolled >lngВертикальнаяПрокрутка Or k >= 9999 Then ‘если процент прокрутки увеличился или было 9999 кликов (это защита от зацикливания) _ Значения 9999 должно быть достаточно для документа на несколько тысяч страниц. nk = k Exit Do End If Loop ElseIf lngВертикальнаяПрокрутка = 100 Then ‘если документ прокручен на 100% Do ActiveWindow.ActivePane.SmallScroll Down:=-1 ‘прокручиваем ВВЕРХ на один клик по кнопке на полосе прокрутки k = k + 1 If ActiveWindow.VerticalPercentScrolled < lngВертикальнаяПрокрутка Or k >= 9999 Then ‘если процент прокрутки УМЕНЬШИЛСЯ ‘проверка на k >= 9999 кажется излишней, но пусть будет nk = k Exit Do End If Loop End If »»»» Конец первого блока прокрутки Dim myRange As Range Dim a, b a = Selection.Range.Start ‘ левая граница выделения b = Selection.Range.End ‘ правая граница выделения Set myRange = ActiveDocument.Range(Start:=a, End:=b) ‘сохраняем положение выделения ActiveWindow.View.ShowFieldCodes = True ‘ включение отображения кодов полей Selection.Find.ClearFormatting With Selection.Find ‘настройка опций поиска .text = "^d EMBED Equation.3" ‘^d — означает поле .Replacement.text = "" .Forward = True .Wrap = wdFindStop ‘ начинаем поиск в конце .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Do Until Selection.Find.Execute = False Or Selection.Range.End >= b If Selection.Type = wdSelectionShape Then Selection.ShapeRange(1).ConvertToInlineShape.Select End If Selection.InlineShapes(1).OLEFormat.ConvertTo ClassType:="Equation.3", _ DisplayAsIcon:=False ‘устанавливаем ширину и высоту 100%, на всякий случай. Selection.InlineShapes(1).ScaleWidth = 100 Selection.InlineShapes(1).ScaleHeight = 100 Loop ActiveWindow.View.ShowFieldCodes = False ‘ отключение отображения кодов полей Call ОчиститьПоиск ‘ очистить поиск ДОБАВИЛ ЭТО НЕДАВНО myRange.Select ‘ выделяем исходное выделение »»»» Начало ВТОРОГО блока прокрутки ‘Восстанавливаем исходную прокрутку документа. _ Дважды, потому что первый раз не всегда срабатывает почему-то. _ Кроме того, исходная прокрутка восстанавливается с большой погрешностью, так как значение округляется до целых. ActiveWindow.VerticalPercentScrolled = lngВертикальнаяПрокрутка ActiveWindow.VerticalPercentScrolled = lngВертикальнаяПрокрутка k = 0 ‘инициализация счетчика If lngВертикальнаяПрокрутка < 100 And nk < 9999 Then ‘если исходная прокрутка была менее 100% и в первом блоке прокрутки удалось увеличить процент прокрутки Do ‘прокручиваем вниз по клику, пока не увеличим прокрутку на 1% (число кликов может отличаться от nk) ActiveWindow.ActivePane.SmallScroll Down:=1 ‘прокручиваем вниз на один клик по кнопке на полосе прокрутки k = k + 1 If ActiveWindow.VerticalPercentScrolled >lngВертикальнаяПрокрутка Then ‘Or k >= 9999 Then ‘когда процент прокрутки увеличится, прокручиваем назад на ранее запомненное число nk, _ чтобы вернуться к исходной прокрутке с высокой точностью. _ Условие Or k>=9999 здесь избыточно, так как оно уже присутствует (And nk < 9999). ActiveWindow.ActivePane.SmallScroll Down:=-nk ‘прокручиваем назад ВВЕРХ Exit Do End If Loop ElseIf lngВертикальнаяПрокрутка = 100 And nk < 9999 Then ‘если исходная прокрутка была 100% и в первом блоке прокрутки удалось УМЕНЬШИТЬ процент прокрутки Do ActiveWindow.ActivePane.SmallScroll Down:=-1 ‘прокручиваем ВВЕРХ на один клик по кнопке на полосе прокрутки k = k + 1 If ActiveWindow.VerticalPercentScrolled < lngВертикальнаяПрокрутка Then ‘когда процент прокрутки УМЕНЬШИТСЯ, прокручиваем назад на ранее запомненное число nk ActiveWindow.ActivePane.SmallScroll Down:=nk ‘прокручиваем назад ВНИЗ Exit Do End If Loop End If »»»» Конец ВТОРОГО блока прокрутки ‘ Selection.MoveLeft Unit:=wdCharacter, Count:=1 ‘ это действие лучше не выполнять End Sub Sub ОчиститьПоиск() ‘ Очистка поиска »’ Selection.WholeStory »’ Selection.MoveLeft Unit:=wdCharacter, Count:=1 Selection.Find.ClearFormatting With Selection.Find .text = "" ‘ ищем ничего .Replacement.text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With End Sub
Представляю свой шаблон и макросы для автоматической нумерации в Word 2003, 2007, 2010 и других версиях (включая стили, названия, перекрестные ссылки, LISTNUM). У кого интерес, вот ссылка: http://vk.com/club_alex_bir
8 Ответ от sea 22.08.2015 20:49:50
Re: Самопроизвольное изменение размера объекта-формулы
Спасибо за макрос. Размеры формул 100% на 100% — в идеале.Я в макросах не разбираюсь. Если не очень сложно, можете лишнее удалить под мою задачу?Второй макрос ClearFindDialog обязательно использовать?
9 Ответ от Александр Б. 22.08.2015 22:13:35
Re: Самопроизвольное изменение размера объекта-формулы
Ладно, вот, все то же самое, только закоментировал пять упомянутых строк. Теперь макрос не трогает стили, а только размеры сбрасывает. Кстати, размеры на самом деле устранавливаются с погрешностью (до 1-2% иногда), но это особенность Ворда, и с макросами это никак не связано.
Второй макрос ClearFindDialog это процедура для того чтобы обнулить строку поиска (CTRL+F), иначе там останется текст «^d EMBED Equation.3», который искался. Т.е. эта процедура не особо нужна, но полезна. Можно вместо Sub ClearFindDialog() написать Private Sub ClearFindDialog(), чтобы эта процедура не была видна в списке макросов (я так и сделал в коде ниже).
Sub ПреобразоватьВыделенныеФормулы() ‘ обработка выделенных формул ‘ "Прокручиваем" формулы, которые были выбраны »»»» Начало первого блока прокрутки Dim lngВертикальнаяПрокрутка Dim k As Long, nk As Long k = 0 ‘счетчик nk = 0 ‘количество кликов, необходимое для изменения прокрутки на 1% lngВертикальнаяПрокрутка = ActiveWindow.VerticalPercentScrolled ‘начальная прокрутка документа в процентах If lngВертикальнаяПрокрутка < 100 Then ‘если документ прокручен менее чем на 100% Do ActiveWindow.ActivePane.SmallScroll Down:=1 ‘прокручиваем вниз на один клик по кнопке на полосе прокрутки k = k + 1 If ActiveWindow.VerticalPercentScrolled >lngВертикальнаяПрокрутка Or k >= 9999 Then ‘если процент прокрутки увеличился, или было 9999 кликов (защита от зацикливания) _ Думаю, значений 9999 хватит для документа из нескольких тысяч страниц. nk = k Exit Do End If Loop ElseIf lngВертикальнаяПрокрутка = 100 Then ‘если документ прокручен на 100% Do ActiveWindow.ActivePane.SmallScroll Down:=-1 ‘прокручиваем ВВЕРХ на один клик по кнопке на полосе прокрутки k = k + 1 If ActiveWindow.VerticalPercentScrolled < lngВертикальнаяПрокрутка Or k >= 9999 Then ‘если процент прокрутки УМЕНЬШИЛСЯ ‘проверка на k >= 9999 тут наверно лишняя, но для безопасности оставим nk = k Exit Do End If Loop End If »»»» Конец первого блока прокрутки Dim myRange As Range Dim a, b a = Selection.Range.Start ‘ левая граница выделения b = Selection.Range.End ‘ правая граница выделения Set myRange = ActiveDocument.Range(Start:=a, End:=b) ‘сохраняем положение выделения ActiveWindow.View.ShowFieldCodes = True ‘ включение отображения кодов полей Selection.Find.ClearFormatting With Selection.Find ‘настройка параметров поиска .text = "^d EMBED Equation.3" ‘^d — означает поле .Replacement.text = "" .Forward = True .Wrap = wdFindStop ‘ останавливаем поиск в конце .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Do Until Selection.Find.Execute = False Or Selection.Range.End >= b ‘ If Selection.Type = wdSelectionShape Then ‘ Selection.ShapeRange(1).ConvertToInlineShape.Select ‘ End If ‘ Selection.InlineShapes(1).OLEFormat.ConvertTo ClassType:="Equation.3", _ ‘ DisplayAsIcon:=False ‘принудительно устанавливаем ширину и высоту 100%, на всякий случай. Selection.InlineShapes(1).ScaleWidth = 100 Selection.InlineShapes(1).ScaleHeight = 100 Loop ActiveWindow.View.ShowFieldCodes = False ‘ выключение отображения кодов полей Call ОчиститьПоиск ‘ очистить поиск НЕДАВНО ДОБАВИЛ myRange.Select ‘ выделяем исходное выделение »»»» Начало ВТОРОГО блока прокрутки ‘Восстанавливаем исходную прокрутку документа. _ Дважды, так как с первого раза не всегда срабатывает, почему-то. _ Кроме того, исходная прокрутка восстанавливается с большой погрешностью, поскольку значение округляется до целых чисел. ActiveWindow.VerticalPercentScrolled = lngВертикальнаяПрокрутка ActiveWindow.VerticalPercentScrolled = lngВертикальнаяПрокрутка k = 0 ‘инициализация счетчика If lngВертикальнаяПрокрутка < 100 And nk < 9999 Then ‘если начальная прокрутка была менее 100% и в первом блоке прокрутки удалось увеличить процент прокрутки Do ‘прокручиваем вниз по клику до тех пор, пока не увеличим прокрутку на 1% (число кликов может отличаться от nk) ActiveWindow.ActivePane.SmallScroll Down:=1 ‘прокручиваем вниз на один клик по кнопке на полосе прокрутки k = k + 1 If ActiveWindow.VerticalPercentScrolled >lngВертикальнаяПрокрутка Then ‘Or k >= 9999 Then ‘когда процент прокрутки увеличивается, прокручиваем назад на ранее запомненное число nk, _ чтобы вернуться к исходной прокрутке с высокой точностью. _ Условие Or k>=9999 здесь лишнее, так как оно фактически присутствует выше (And nk < 9999). ActiveWindow.ActivePane.SmallScroll Down:=-nk ‘прокручиваем назад ВВЕРХ Exit Do End If Loop ElseIf lngВертикальнаяПрокрутка = 100 And nk < 9999 Then ‘если начальная прокрутка была 100% и в первом блоке прокрутки удалось УМЕНЬШИТЬ процент прокрутки Do ActiveWindow.ActivePane.SmallScroll Down:=-1 ‘прокручиваем ВВЕРХ на один клик по кнопке на полосе прокрутки k = k + 1 If ActiveWindow.VerticalPercentScrolled < lngВертикальнаяПрокрутка Then ‘когда процент прокрутки УМЕНЬШИТСЯ, прокручиваем назад на ранее запомненное число nk ActiveWindow.ActivePane.SmallScroll Down:=nk ‘прокручиваем назад ВНИЗ Exit Do End If Loop End If »»»» Конец ВТОРОГО блока прокрутки ‘ Selection.MoveLeft Unit:=wdCharacter, Count:=1 ‘ лучше этого не делать End Sub Private Sub ОчиститьПоиск() ‘ Очистить поиск »’ Selection.WholeStory »’ Selection.MoveLeft Unit:=wdCharacter, Count:=1 Selection.Find.ClearFormatting With Selection.Find .text = "" ‘ ищем ничего .Replacement.text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With End Sub
roboforum.ru
Как в Word отменить автом. уменьшение формулы?
Вопросы не попавшие в другие категории.
Сообщений: 5 • Страница 1 из 1
Как в Word отменить автом. уменьшение формулы?
Сергей » 05 дек 2010, 21:51
Собсно пишу в ворде формулу, она имеет нормальный крупный развернутый вид. Хочу после формулы быстро дописать ее номер в скобах, но как только я ставлю какой-либо символ или табуляцию — формула ужимается и делается компактной, выглядит ужасно. Что делать? Word 2007
Re: Как в Word отменить автом. уменьшение формулы?
EdGull » 05 дек 2010, 22:55
читал что все хвалят написание формул в OpenOfficeи ваще, MS Ofiice это не наша религия
Re: Как в Word отменить автом. уменьшение формулы?
Victorovych » 07 дек 2010, 11:25
Занятие помогло.
Re: Как в Word отменить автом. уменьшение формулы?
=DeaD= » 07 дек 2010, 12:51
Скриншот бы о чем речь + сам документ с примером, я бы посмотрел в другой версии Word, может тупо обновиться достаточно.
Проект [[Open Robotics]] — Универсальные модули для построения роботов
Re: Как в Word отменить автом. уменьшение формулы?
Grem » 07 дек 2010, 13:27
Размер шрифта увеличить. Недавно делал ПЗ к курсовому, потом пришлось исправлять формулы, та же фигня была. Надоело потом, формулы в маткаде набирал и в ворд вставлял, на порядок времени сэкономил.
"There is nothing better than sliding down snow and flying through the air" (с) Shane McConkey .Lieber ein Brett am Fuß als eins vorm Kopf, aber lieber ein Brett vorm Kopf als zwei am Fuß.
Почему формула в ворде уменьшается
Пожалуйста, войдите или зарегистрируйтесь что бы
Пожалуйста, войдите или зарегистрируйтесь чтобы ответить на этот вопрос
3 Ответы
Пожалуйста, войдите или зарегистрируйтесь что бы
Пожалуйста, войдите или зарегистрируйтесь что бы
Пожалуйста, войдите или зарегистрируйтесь что бы
Добро пожаловать на VOPROSOTVET.PRO – ваш источник исчерпывающих ответов и волнующих вопросов! На нашем сайте мы используем передовые технологии, включая мощный искусственный интеллект GPT, чтобы обеспечить вас ответами от опытных экспертов в различных областях.
Присоединяйтесь к нашему активному сообществу, где пользователи не только получают качественные ответы на свои вопросы, но и имеют уникальную возможность зарабатывать баллы за активность на сайте. Накопленные баллы могут быть обменяны на денежное вознаграждение, что делает ваши посещения нашего ресурса не только увлекательными, но и выгодными.
Участвуйте в наших захватывающих акциях и конкурсах, где вы можете выиграть ценные призы и поделиться своими знаниями с другими участниками. VOPROSOTVET.PRO – это не просто платформа вопросов и ответов, а целое сообщество людей, где знание ценится, а активность вознаграждается.
Увеличьте уровень своих знаний и участия вместе с нами!




