Спецификация языка C # 5 в LibreOffice Writer

3

Я столкнулся с очень странным поведением LibreOffice при открытии в нем спецификации языка C # версии 5.0. Когда я открываю эту спецификацию в Microsoft Word 2013 на титульном листе, она написана «Спецификация языка C # версия 5.0», но когда я открываю ее в LibreOffice Writer 4.0.3.3, я вижу «Спецификация языка C # версия 4.0».

Я записал свой экран и загрузил на YouTube видео, показывающее это: http://www.youtube.com/watch?v=kpWc9becFtc

Почему LibreOffice Writer ведет себя так?

rpeshkov
источник
Преобразуйте документ в файл .doc. Я думаю, что LibreOffice не нравится формат Word 2013 .docx.
Ramhound
Мне было интересно, почему он тоже сказал 4.0, я понятия не имел, что Word отображает это «правильно».
svick
@svick Я написал это в комментарии для принятого ответа. В разметке документа есть ссылка на настраиваемое поле, но есть также текстовый элемент, содержащий значение 5.0. MS Word использует этот текст, а LO Writer игнорирует его и отображает значение свойства документа, которое равно 4,0
рпешков
Кроме того, если вы обновите поле в Word, оно будет отображать «4.0», как LO.
crayzeewulf

Ответы:

5

Это не совсем странное поведение.

В Word этот номер версии хранится в «Свойстве пользовательского документа», значение которого вставляется с использованием поля DOCPROPERTY, например {DOCPROPERTY Version * Mergeformat}. Вы можете увидеть эти коды полей в Word, используя Alt-F9. Результат отображается как 5.0. Но эти поля не обновляются автоматически в Word - чтобы обновить их, вы можете выбрать поле и нажать F9. Если вы сделаете это, отобразится значение, которое фактически сохраняется в свойстве документа. Другими словами, в какой-то момент кто-то, вероятно, обновил значение свойства до 5.0, затем обновил код поля, затем (по какой-то причине) вернулся и изменил значение свойства документа на 4.0, а затем не обновил поле {DOCPROPERTY}.

В LibreOffice все работает немного по-другому - значение обновляется при открытии документа, и поэтому отображается 4.0. (Вы не можете увидеть код поля так же, как в Word, но если щелкнуть правой кнопкой мыши, вы можете увидеть Fields ... в раскрывающемся меню. Там вы должны увидеть пользовательское поле с именем Version .)


источник
Это правильный ответ. Я просмотрел document.xml внутри файла docx и обнаружил, что это поле. Но я также обнаружил, что в нем есть текстовый элемент с 5.0. Это означает, что LO Writer использует значение поля, даже если оно было изменено в тексте!
рпешков
2
Вы правы - ручное изменение возможно в этом случае и является самым простым объяснением. Скорее всего, никто не задокументировал тот факт, что этот документ использует поля для информации о версии. и редактор, вероятно, не понимал, что эти поля сделали. В Word, обновление полей обычно перезаписывает напечатал результаты, но в некоторых случаях (например , {HYPERLINK} полей, что это не так.