Проверка отсутствующих кавычек (Microsoft Word)
Дэвид — писатель, и он много использует средства проверки орфографии, стиля и грамматики Word. Иногда он обнаруживает, что предложения Word по исправлению грамматики плохи, и он научился их игнорировать. Одна вещь, с которой у него проблемы, — это использование кавычек в диалогах.
Word не распознает, поставил ли Дэвид кавычки в конце или в начале предложения. Он вспоминает, как много лет назад использовал текстовый редактор, который оставлял в документе зеленые кавычки, чтобы указать на отсутствующие кавычки. Он задается вопросом, можно ли заставить Word распознавать отсутствующие кавычки.
В Word нет возможности сделать это изначально. Причина, вероятно, сводится к тому, что практически невозможно определить, где должна начинаться и заканчиваться цитата. Например, если у вас есть абзац, содержащий четыре предложения, и вы помещаете кавычки где-то внутри этого абзаца, как Word определяет, обозначает ли этот знак начало или конец цитаты? Если это начало, как Word узнает, должен ли конечный знак быть в конце предложения, в конце второго предложения или в конце абзаца? (Та же самая загадка возникает, если кавычка является конечной цитатой, но затруднения с размещением простираются влево, а не вправо.)
Объедините эту потенциальную путаницу с тем фактом, что закрывающая кавычка может даже не находиться в текущем абзаце — она может быть в конце какого-либо более позднего абзаца, когда отмечаемый диалог фактически заканчивается.
Однако вы могли бы разработать макрос, который бы выполнял хотя бы некоторые элементарные проверки за вас. Следующий макрос переходит к началу документа и ищет первую кавычку. Затем он исследует все, от этого символа до конца абзаца. Если вы используете неумные кавычки, он в основном проверяет, есть ли четное количество кавычек. Если вы используете умные кавычки, он проверяет, есть ли конечная цитата для каждой начальной цитаты. Если какое-либо условие оказывается ложным, текст выделяется.
Sub MarkUnevenQuotes() Dim sRaw As String Dim iNorm As Integer Dim iSmart As Integer Dim J As Long Selection.HomeKey Unit:=wdStory Application.ScreenUpdating = False Selection.Find.ClearFormatting With Selection.Find .Text = """" .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute While Selection.Find.Found Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend sRaw = Selection.Text iNorm = 0 iSmart = 0 For J = 1 To Len(sRaw) If Mid(sRaw, J, 1) = Chr(34) Then If iNorm > 0 Then iNorm = iNorm - 1 Else iNorm = iNorm + 1 End If End If If Mid(sRaw, J, 1) = Chr(147) Then iSmart = iSmart + 1 End If If Mid(sRaw, J, 1) = Chr(148) Then iSmart = iSmart - 1 End If Next J If iNorm > 0 Or iSmart > 0 Then Selection.Range.HighlightColorIndex = wdYellow End If Selection.Collapse Direction:=wdCollapseEnd Selection.Find.Execute Wend Selection.HomeKey Unit:=wdStory Application.ScreenUpdating = True End Sub
Когда макрос готов, то в итоге вы получаете набор выделенных текстов, если их необходимо визуально проверить. Однако макрос не будет находить конечные кавычки, которые находятся за пределами абзаца, в котором встречается первая кавычка.
_Примечание: _
Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
WordTips — ваш источник экономичного обучения работе с Microsoft Word.
(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (13293) применим к Microsoft Word 2007, 2010, 2013, 2016 и Word в Office 365.