Símbolos de formatação ocultos no MS Word

2

Eu tenho um documento do Word em persa e há muitas frases como esta:

Meuproblemaéondeo"و نشیب" se conecta ao "هایی".

A princípio, parece que há um caractere não-joiner com largura zero entre eles, mas, na verdade, quando tentei copiá-lo, nada foi copiado.

Eu também copiei toda a frase no Bloco de Notas e obtive isto: "و نشیبهایی" Como você vê, não há nada entre duas palavras anteriores.

Eu virei o show / hide ¶ em no grupo "Paragraph" da aba "Home" para ver se havia algum caractere oculto e este é o resultado:

Agora, gostaria de saber se existe alguma maneira de trabalhar com esse personagem; por exemplo. substituindo-o por ZWNJ.

Um arquivo com esse problema (também leia abaixo)

    
por Iman 27.01.2014 / 13:18

2 respostas

2

Este é um substituto completo da minha resposta original (o texto original está abaixo).

Seu documento marca as palavras em verde ("palavras que copiam como você quer") e vermelho ("palavras que não copiam como você quer").

Ambos os tipos usam um ZWNJ, por ex. para preceder um caractere Heh que só deve se juntar à esquerda, não à direita.

A diferença é que nas palavras verdes, o ZWNJ foi inserido RTL, mas nas palavras vermelhas, foi inserido LTR.

Eu não sei como você normalmente digitaria um ZWNJ, mas aqui, se eu escolher o "No-Optional BreakUp Break" no painel Caracteres Especiais na caixa de diálogo Symbol, o ZWNJ é inserido LTR (bad, neste caso ), enquanto que se eu selecionar o caractere 0x200C da tabela de caracteres na caixa de diálogo Symbol, será inserido RTL (bom, neste caso). No Word 2010, se eu entrar no Word- > Opções de arquivo- > Personalizar Faixa de opções- > Atalhos de teclado- > Personalizar ... e atribuir um pressionamento de tecla à Quebra Opcional sem largura, pressionando essa combinação de teclas ao inserir RTL texto aparece para inserir o ZWNJ como RTL (bom). Você pode atribuir isso da seguinte maneira:

  • na lista de categorias, desça até "Símbolos comuns" e selecione
  • na lista de símbolos comuns exibida, selecione "Sem largura Pausa Opcional "
  • clique na caixa "Pressione nova tecla de atalho"
  • pressione a tecla de atalho desejada (usei o ctrl-9 como um experimento)
  • clique em Atribuir
  • clique em Fechar

Não sei se conseguiremos tudo o que você precisa, mas acho que pelo menos explica o que está acontecendo.

(Eu suspeitava que fosse algo assim, mas eu tinha que salvar como docx e olhar para o XML. As "palavras verdes" foram codificadas em um único Word "run" com "run property" RTL (uma corrida é s sequência de caracteres que compartilham as mesmas características, portanto, se você alterar a cor do texto, haverá uma nova execução.) As palavras vermelhas foram codificadas como três execuções: duas RTL contendo o texto e uma não RTL contendo o ZWNJ personagem.)

Para alterar os ZWNJs LTR para RTL, você deve poder usar o seguinte VBA. (Para aqueles que conhecem o VBA, esta é uma das ocasiões em que você tem que trabalhar com a Seleção e não com o Intervalo, porque o AFAIK é a única maneira de definir um texto Executar para RTL através do método RTLRun do objeto Selection):

Sub replace_LTR_NBZWs_with_RTL_ones()

ActiveDocument.Select
With Selection.Find
  .ClearFormatting
  .Text = ChrW(8204)
  .Forward = True
  .Wrap = wdFindStop
  .Format = False
  .MatchCase = False
  .MatchWholeWord = False
  .MatchKashida = False
  .MatchDiacritics = False
  .MatchAlefHamza = False
  .MatchControl = False
  .MatchByte = False
  .MatchWildcards = False
  .MatchSoundsLike = False
  .MatchAllWordForms = False
  While .Execute
    Selection.RtlRun
  Wend
End With
End Sub

O texto original da minha resposta segue ...

Provavelmente é um ZWNJ. Se você selecioná-lo, clique em Inserir- > Símbolo- > Mais símbolos, o ZWNJ (0x200C) deve ser selecionado. É o mesmo que o caractere que a Microsoft chama de "Interrupção Opcional Sem Largura" no painel "Caracteres Especiais" na caixa de diálogo Símbolo.

Até onde eu sei, o NotePad ignora o ZWNJ. Eu suspeito que você terá que substituir o ZWNJ (se é isso que é) por um espaço (um selecionado, você deve ser capaz de pressionar a barra de espaço para fazer isso) que fará com que o NotePad exiba o formulário de caractere correto. / p>

Copiar de um ponto em um documento do Word para outro deve preservar o ZWNJ, mas é isso que você está vendo?

    
por 27.01.2014 / 19:07
0

Hoje encontrei outra maneira de resolver o problema. O truque é substituir o NWOB (com um caractere antes e depois) por si mesmo, então o Word fará o truque ...

  • Encontre o que: (?)^o(?)
  • Substituir por: ^o
  • Não se esqueça de colocar a marca de seleção ao lado de Use wildcards em More >> pane

Em seguida, ele mudará os ZWNJs LTR para esse modo de retângulo e os RTL para o que eu esperava.

    
por 08.05.2015 / 01:50