docx, сгенерированный pandoc, пропускает курсивные переменные в уравнениях

У меня есть следующий сегмент Markdown со встроенными уравнениями LaTeX:

# Fisher's linear discriminant

\newcommand{\cov}{\mathrm{cov}}
\newcommand{\A}{\mathrm{A}}
\renewcommand{\B}{\mathrm{B}}
\renewcommand{\T}{^\top}

The first method to find an optimal linear discriminant was proposed by Fisher
(1936), using the ratio of the between-class variance to the within-class variance
of the projected data, $d(\vec x)$, as a criterion. Expressed in terms of the
sample properties, the $p$-dimensional centroids $\bar {\vec x}_\A$ and
$\bar {\vec x}_\B$ and the $p \times p$ covariance matrices
$S_A = \cov_i ( \vec x_{\A i} )$ and $S_B = \cov_i ( \vec x_{\B i} )$, the
optimal direction is given by 
$$
\vec w = \left ( \frac{ S_A + S_B }{2} \right ) ^{-1}
~ ( \bar {\vec x}_\B - \bar {\vec x}_\A ).
$$

Когда я конвертирую его с помощью pandoc в LaTeX и компилирую с помощью xelatex, я получаю ожидаемый текст с хорошо отрисованной математикой. Когда я конвертирую его с помощью pandoc в MS Word, используя

pandoc test.text -o test.docx

и открываю его в MS Office Word 2007, получаю следующее:

скриншот слова

Только те части уравнений, которые являются символами или прямым текстом, отображаются правильно, а имена переменных, выделенные курсивом, заменяются вопросительным знаком в рамке.

Как мне заставить это работать?


person A. Donda    schedule 03.12.2013    source источник
comment
Ваш ввод работает для меня с pandoc 1.12.2 на Mac OS X. Можете ли вы опубликовать ссылку на файл Word, который вы получили? Вот мой: fileswap.com/dl/wajeArZq4c   -  person mb21    schedule 12.12.2013
comment
@mb21 Спасибо за ответ! Ваш docx выглядит идентично моему, если я открою его в Word. Так что, возможно, это проблема с моей копией/установкой Word, а не с файлом. Кстати. Я нашел обходной путь: я могу переключить отображение формул в Word на линейное, а затем обратно на профессиональное, и все символы появятся. – Вот мой: dl.dropboxusercontent.com/u/14431931/test.docx   -  person A. Donda    schedule 12.12.2013
comment
Ну ладно, вот как ваш документ выглядит в моей копии Word на Mac: share.pho.to/4J6al Я думаю, это может помочь с использованием новейшей версии pandoc...   -  person mb21    schedule 12.12.2013
comment
@ mb21 Ах, нет, это просто ошибка; Я пропустил последний $$. Я обновил файл, попробуйте еще раз.   -  person A. Donda    schedule 12.12.2013
comment
А, теперь выглядит так же, как мой. Эти вопросительные знаки обычно появляются, когда в выбранном шрифте нет этого символа. У вас установлен шрифт Cambria Math?   -  person mb21    schedule 12.12.2013
comment
Я проверил, да, он установлен.   -  person A. Donda    schedule 12.12.2013
comment
Спасибо за вашу помощь, я думаю, что теперь совершенно ясно, что это не проблема пандока.   -  person A. Donda    schedule 12.12.2013
comment
@А. Донда. Мне не удалось получить доступ к вашему .docx в Dropbox, но я скачал файл mb21 и посмотрел XML. В settings.xml шрифт Math установлен на Lucida Grande, тогда как обычно это Cambria Math (как обсуждалось). Это нормально работает в Mac Word, но когда я попытался открыть его в Windows Word 2010 (в котором нет Lucida Grande), я даже не смог просмотреть текст в режиме печати (он застрял в режиме черновика). Я вижу, что Word использует Cambria Math для отображения (в замене шрифтов ничего не указано). Возможно, это фактор.   -  person    schedule 12.12.2013
comment
Я добавил ответ на основе совета @bibadia   -  person mb21    schedule 12.12.2013
comment
Я отвечаю здесь, чтобы иметь возможность упомянуть @bibadia. Я воссоздал свой docx (должен быть снова доступен по ссылке) и изучил его. Вы правы, файл ссылается на Lucida Grande, а не на Cambria Math. Я проверил, этот параметр взят из reference.docx, который поставляется с pandoc. Однако изменение этого параметра и создание нового docx ничего не меняет в моей проблеме с отображением. Но все равно спасибо за старания!   -  person A. Donda    schedule 12.12.2013
comment
Да, я обнаружил, что моя копия Word для Windows находилась в необычном состоянии — теперь это исправлено, и ваш файл, и тот, который у меня был ранее, открываются нормально, все символы отображаются в Word 2010. Я опишу, что происходит в Word 2007, в Ответ - здесь недостаточно места.   -  person    schedule 13.12.2013


Ответы (3)


В Word 2007 я вижу результат, аналогичный вашему, за исключением того, что здесь я не вижу символов «вопросительные знаки в полях», а только пробел.

Если затем я возьму одно из выражений и воспользуюсь вашим приемом перехода к линейному отображению и обратно, символы для этого выражения снова появятся.

Если я сохраняю и снова открываю, другие выражения по-прежнему отображаются неправильно, но если я сохраняю и смотрю на XML, я замечаю, что

  1. шрифт Math был изменен на Cambria Math
  2. дополнительный параметр прогона (w:rPr) XML, указывающий шрифт Cambria Math, был вставлен во многие прогоны (w:r) внутри элементов oMath, даже в выражениях oMath, которые отображаются неправильно. Однако в выражении oMath, которое теперь отображается правильно, этот дополнительный XML применялся к каждому запуску. В других он применялся только к некоторым прогонам (думаю, я вижу закономерность, но сейчас у меня мало времени...)
  3. Если я вручную добавлю XML в другие прогоны и снова открою документ, выражения будут отображаться правильно. Или, по крайней мере, они это делают в одном случае, который я пробовал.

Поскольку Word 2010 отображает результаты правильно, я могу только предположить, что он не полагается на эти явные настройки шрифта, тогда как Word 2007 делает это. На самом деле это пока вам не поможет, потому что изменить все эти элементы w:r будет еще сложнее, чем то, что вы уже делаете. Но возможно, что необходимо установить стиль/шрифт по умолчанию либо где-то выше в иерархии XML, либо где-то еще в .zip (возможно, в fontTable.xml или styles.xml). Я недостаточно знаком с XML-структурами Word, чтобы догадаться, если что-то может отсутствовать, но, возможно, смогу посмотреть завтра.

Я полагаю, что другая возможность заключается в том, что вам просто нужно иметь все эти дополнительные элементы rPr, чтобы это работало в Word 2007, что предполагает, что pandoc мог быть написан для Word 2010, а не 2007. (Я ничего не знаю об этом инструменте ).

Например, где у вас есть

<m:r>
  <m:t>(</m:t>
</m:r>

что вам нужно, это

<m:r>
  <w:rPr>
    <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math" />
  </w:rPr>
  <m:t>(</m:t>
</m:r>
person Community    schedule 12.12.2013
comment
Я все еще не все вижу ясно, тем более, что XML, сгенерированный Word, трудно читать, но вы определенно на правильном пути. Я попробую и посмотрю, сделают ли изменения в reference.docx, который использует pandoc, это без хитрости. Возможно, я отправлю отчет об ошибке. Если вам случится узнать больше, пожалуйста, обновите ответ. В любом случае: большое спасибо! - person A. Donda; 13.12.2013
comment
Я тщательно осмотрелся, но на данный момент я не вижу другого способа избежать всех этих отдельных настроек w:rPr. Я надеялся, что изменение элемента dispDef в mathPr в settings.xml может дать эффект, но это не так. Никакие другие вещи, которые я пробовал (на всякий случай!), Такие как добавление Cambria Math в fontTable.xml, не имели никакого эффекта. - person ; 13.12.2013

Я сделал следующее, чтобы избавиться от проблемы со шрифтом:

  1. Создайте новый пустой документ Word.
  2. Скопируйте все содержимое в новый документ.
  3. Выберите Сопоставить исходный формат.
person user4794413    schedule 16.04.2015

Как обсуждалось выше, в Windows нет шрифта Lucida Grande, поэтому замена математического шрифта на Cambria Math должна работать.

  1. Переименуйте test.docx в test.zip
  2. vim test.zip и выберите test/word/settings.xml
  3. найти и заменить Lucida Grande на Cambria Math
  4. сохраните и переименуйте zip в docx. В результате получится что-то вроде этого документа.

Затем вы также можете предоставить этот файл в качестве своего рода шаблона docx для pandoc с -- параметр справочного документа.

person mb21    schedule 12.12.2013
comment
Это не работает. У меня та же проблема, что и у OP, но математический шрифт, определенный в файле, сгенерированном pandoc, — это Cambria Math. - person January; 29.04.2018