Проблема не связана с R или RStudio.
Проблема связана с процессом создания и преобразования встроенных изображений в документы Microsoft Word в Mac OS X и с тем, как документ затем обрабатывается Microsoft Word в Windows .
Почему? По сути, PDF является родным компонентом системы рисования Apple Quartz. Внутренняя модель обработки изображений Mac OS X Quartz хорошо коррелирует с графиком объектов PDF, что упрощает отображение и управление встроенными изображениями в формате PDF.
Увы, это не относится к операционной системе Windows. [ Это не критика, а просто наблюдение. ] Механизм PDF не включен в Windows, это дополнение. Таким образом, документ Mac OS X Word не будет корректно отображаться в Microsoft Word для Windows. В дополнение к этому, по-видимому, нет никакой полезной возможности иметь OLE-ссылку на PDF.
Пример:
В Mac OS X можно просто перетащить изображение PDF в текстовый документ. Отображаемое изображение будет отображаться как:
сейчас, если мы перейдем на ПК с Windows 10 и откроем документ, который увидим: [ 1124]
Рекомендуемое обходное решение - сохранить изображения в формате .png или .jpg и вставить эти в слово документ.
library(ggplot2)
library(cowplot)
p <- qplot(Sepal.Length, Petal.Length, data = iris, color = Species, size = Petal.Width, alpha = 0.5)
save_plot("plot.pdf",p)
save_plot("plot.png",p)
save_plot("plot.jpg",p)
Microsoft Word в Windows 10
Другой рассматриваемый вариант - использовать
ggsave("plot.eps", p, device=cairo_ps, fallback_resolution = 1200)
, это действительно работает, однако на визуализированных изображениях в Windows 10 были замечены полоски.
По-видимому, страты связаны с неявным диалогом, в котором Word преобразует изображения EPS в формат EMF из-за ограничений безопасности.
[Тысяча сто тридцать два] https://support.office.com/en-us/article/support-for-eps-images-has-been-turned-off-in-office-a069d664-4bcf-415e-a1b5- cbb0c334a840
Таким образом, вы можете вставить изображение EPS, но оно, похоже, преобразуется в EMF, чтобы блокировать векторы атаки встроенного сценария EPS.
Пример:
Вот быстрая реализация идеи ИНФОРМАЦИИ 1800 года:
Sub TemporaryMacro()
DTE.ActiveDocument.Selection.StartOfDocument()
Dim returnValue As vsIncrementalSearchResult
While True
DTE.ActiveDocument.ActiveWindow.Object.ActivePane.IncrementalSearch.StartForward()
returnValue = DTE.ActiveDocument.ActiveWindow.Object.ActivePane.IncrementalSearch.AppendCharAndSearch(AscW("{"))
DTE.ActiveDocument.ActiveWindow.Object.ActivePane.IncrementalSearch.Exit()
If Not (returnValue = vsIncrementalSearchResult.vsIncrementalSearchResultFound) Then
Return
End If
DTE.ExecuteCommand("Debug.ToggleBreakpoint")
DTE.ExecuteCommand("Edit.GotoBrace")
DTE.ActiveDocument.Selection.CharRight()
End While
End Sub
Поместите это наверху файла:
#define WANT_BREAK_IN_EVERY_FUNCTION
#ifdef WANT_BREAK_IN_EVERY_FUNCTION
#define DEBUG_BREAK DebugBreak();
#else
#define DEBUG_BREAK
#endif
затем вставляют DEBUG_BREAK в начале каждой функции, как это:
void function1()
{
DEBUG_BREAK
// the rest of the function
}
void function2()
{
DEBUG_BREAK
// the rest of the function
}
, Когда Вы больше не захотите повреждения отладки, прокомментируйте строку
// #define WANT_BREAK_IN_EVERY_FUNCTION
наверху файла.
Я не знаю то, что DTE функционирует для использования, но Вы могли очень просто записать макрос, который мог в значительной степени сделать это:
Теперь просто работает, это много раз (ctrl - неоднократно смещают P), пока Вы не достигаете конца файла.
, Если у Вас есть пространства имен, затем изменитесь 4.кому:
Такого рода вещь может быть бесконечно изменена для удовлетворения кодовой базе
Вот то, как что-то подобное могло быть достигнуто в WinDbg:
bm mymodule!CSpam::*
Это помещает точку останова в каждый метод класса (или пространство имен) CSpam
в модуле mymodule
.
я все еще ищу что-нибудь похожее к этой функциональности в Visual Studio.
Как метод Константина ... Это похоже на территорию windbg.
Поскольку у вас есть cpp (даже если вы не могли написать сценарий, чтобы обойтись), он должен быть Нет проблем использовать logger часть инструментов отладки для Windows ... это очень удобный инструмент, позор, что немногие люди его используют.
logger отладки C / COM / C ++ легко, с богатой символьной информацией , хуки / профилирование / гибкое оснащение;
(Это не совсем то, о чем вы просите, но почти :)
Вы можете поставить точку останова на каждую функцию-член класса в Visual Studio, вызвав Диалог новой точки останова и ввод:
CMyClass::*
См. http://blogs.msdn.com/b/habibh/archive/2009/09/10/class-breakpoint-how-to-set-a- точка останова на ac-class-in-the-visual-studio-debugger.aspx для получения дополнительных сведений.