From d427d3028ac164025a942394a34e490844861bbc Mon Sep 17 00:00:00 2001 From: Giovanni Lafratta Date: Mon, 15 Nov 2021 11:27:38 +0100 Subject: [PATCH] Support SHFB VS2010 and VS2013 presentation styles. --- .gitignore | 7 +- LICENSE.md | 22 + README.md | 47 + docs/SearchHelp.aspx | 232 ++ docs/SearchHelp.inc.php | 173 ++ docs/SearchHelp.php | 58 + docs/Web.Config | 34 + docs/WebKI.xml | 160 + docs/WebTOC.xml | 119 + docs/fti/FTI_100.json | 1 + docs/fti/FTI_101.json | 1 + docs/fti/FTI_102.json | 1 + docs/fti/FTI_103.json | 1 + docs/fti/FTI_104.json | 1 + docs/fti/FTI_105.json | 1 + docs/fti/FTI_107.json | 1 + docs/fti/FTI_108.json | 1 + docs/fti/FTI_109.json | 1 + docs/fti/FTI_110.json | 1 + docs/fti/FTI_111.json | 1 + docs/fti/FTI_112.json | 1 + docs/fti/FTI_113.json | 1 + docs/fti/FTI_114.json | 1 + docs/fti/FTI_115.json | 1 + docs/fti/FTI_116.json | 1 + docs/fti/FTI_117.json | 1 + docs/fti/FTI_118.json | 1 + docs/fti/FTI_119.json | 1 + docs/fti/FTI_120.json | 1 + docs/fti/FTI_122.json | 1 + docs/fti/FTI_97.json | 1 + docs/fti/FTI_98.json | 1 + docs/fti/FTI_99.json | 1 + docs/fti/FTI_Files.json | 1 + .../47a5afe5-726c-4f74-9ab1-90740bf0a692.htm | 499 ++++ .../77c2fac9-a810-4e5b-ba0e-afff50a42467.htm | 27 + .../7abd97df-f098-4afa-9f9c-2255d3e61a33.htm | 6 + docs/html/G_.htm | 1 + docs/html/G_Novacta_Shfb.htm | 1 + docs/html/G_SampleClassLibrary.htm | 1 + docs/html/GeneralError.htm | 29 + ...b_LatexTools_DviPngProcessor_Arguments.htm | 17 + ..._Shfb_LatexTools_DviPngProcessor__ctor.htm | 17 + ..._LatexTools_DviSvgmProcessor_Arguments.htm | 17 + ...Shfb_LatexTools_DviSvgmProcessor__ctor.htm | 19 + ...hfb_LatexTools_FileProcessor_Arguments.htm | 17 + ...acta_Shfb_LatexTools_FileProcessor_Run.htm | 15 + ...ta_Shfb_LatexTools_FileProcessor_Run_1.htm | 20 + ...ta_Shfb_LatexTools_FileProcessor__ctor.htm | 5 + ...a_Shfb_LatexTools_LatexComponent_Apply.htm | 14 + ...texTools_LatexComponent_Factory_Create.htm | 7 + ...atexTools_LatexComponent_Factory__ctor.htm | 7 + ...b_LatexTools_LatexComponent_Initialize.htm | 11 + ...a_Shfb_LatexTools_LatexComponent__ctor.htm | 12 + ...ta_Shfb_LatexTools_LatexPlugIn_Dispose.htm | 8 + ...ta_Shfb_LatexTools_LatexPlugIn_Execute.htm | 11 + ...a_Shfb_LatexTools_LatexPlugIn_Finalize.htm | 8 + ...Shfb_LatexTools_LatexPlugIn_Initialize.htm | 14 + ...acta_Shfb_LatexTools_LatexPlugIn__ctor.htm | 5 + ...fb_LatexTools_LatexProcessor_Arguments.htm | 17 + ...a_Shfb_LatexTools_LatexProcessor__ctor.htm | 14 + ...esentationStyles_VS2010WithLatex__ctor.htm | 7 + ...esentationStyles_VS2013WithLatex__ctor.htm | 7 + ...Advanced_IntegerArrayOperation_Operate.htm | 85 + ...eClassLibrary_IntegerOperation_Operate.htm | 57 + ...ovacta_Shfb_LatexTools_DviPngProcessor.htm | 10 + ...vacta_Shfb_LatexTools_DviSvgmProcessor.htm | 10 + ..._Novacta_Shfb_LatexTools_FileProcessor.htm | 10 + ...Novacta_Shfb_LatexTools_LatexComponent.htm | 21 + ...Shfb_LatexTools_LatexComponent_Factory.htm | 5 + ..._T_Novacta_Shfb_LatexTools_LatexPlugIn.htm | 13 + ...Novacta_Shfb_LatexTools_LatexProcessor.htm | 10 + ...ols_PresentationStyles_VS2010WithLatex.htm | 9 + ...ols_PresentationStyles_VS2013WithLatex.htm | 9 + ...Library_Advanced_IntegerArrayOperation.htm | 5 + ..._T_SampleClassLibrary_IntegerOperation.htm | 5 + docs/html/N_Novacta_Shfb_LatexTools.htm | 19 + ...cta_Shfb_LatexTools_PresentationStyles.htm | 9 + docs/html/N_SampleClassLibrary.htm | 5 + docs/html/N_SampleClassLibrary_Advanced.htm | 5 + ...acta_Shfb_LatexTools_FileProcessor_Run.htm | 8 + ..._LatexTools_DviPngProcessor_Executable.htm | 9 + ...Tools_DviPngProcessor_WorkingDirectory.htm | 9 + ...LatexTools_DviSvgmProcessor_Executable.htm | 9 + ...ools_DviSvgmProcessor_WorkingDirectory.htm | 9 + ...fb_LatexTools_FileProcessor_Executable.htm | 9 + ...exTools_FileProcessor_WorkingDirectory.htm | 9 + ...Component_Factory_DefaultConfiguration.htm | 7 + ...LatexTools_LatexPlugIn_ExecutionPoints.htm | 8 + ...b_LatexTools_LatexProcessor_Executable.htm | 9 + ...xTools_LatexProcessor_WorkingDirectory.htm | 9 + ...ntationStyles_VS2010WithLatex_Location.htm | 7 + ...ntationStyles_VS2013WithLatex_Location.htm | 7 + docs/html/PageNotFound.htm | 31 + ...ovacta_Shfb_LatexTools_DviPngProcessor.htm | 7 + ...vacta_Shfb_LatexTools_DviSvgmProcessor.htm | 7 + ..._Novacta_Shfb_LatexTools_FileProcessor.htm | 7 + ...Novacta_Shfb_LatexTools_LatexComponent.htm | 7 + ...Shfb_LatexTools_LatexComponent_Factory.htm | 12 + ..._T_Novacta_Shfb_LatexTools_LatexPlugIn.htm | 6 + ...Novacta_Shfb_LatexTools_LatexProcessor.htm | 7 + ...ols_PresentationStyles_VS2010WithLatex.htm | 31 + ...ols_PresentationStyles_VS2013WithLatex.htm | 31 + ...ovacta_Shfb_LatexTools_DviPngProcessor.htm | 28 + ...vacta_Shfb_LatexTools_DviSvgmProcessor.htm | 28 + ..._Novacta_Shfb_LatexTools_FileProcessor.htm | 24 + ...Novacta_Shfb_LatexTools_LatexComponent.htm | 39 + ...Shfb_LatexTools_LatexComponent_Factory.htm | 26 + .../T_Novacta_Shfb_LatexTools_LatexPlugIn.htm | 28 + ...Novacta_Shfb_LatexTools_LatexProcessor.htm | 28 + ...ols_PresentationStyles_VS2010WithLatex.htm | 50 + ...ols_PresentationStyles_VS2013WithLatex.htm | 50 + ...Library_Advanced_IntegerArrayOperation.htm | 11 + .../T_SampleClassLibrary_IntegerOperation.htm | 11 + .../b10d4d75-3729-4247-a58a-b9e5b6e4bb4d.htm | 53 + .../cf22a47c-7bfd-4e16-a103-b99e83335270.htm | 4 + .../fe868fbe-1bfd-47f7-bf24-e1fd586864c6.htm | 24 + docs/icons/AlertCaution.png | Bin 0 -> 618 bytes docs/icons/AlertNote.png | Bin 0 -> 1054 bytes docs/icons/AlertSecurity.png | Bin 0 -> 503 bytes docs/icons/CFW.gif | Bin 0 -> 588 bytes docs/icons/CodeExample.png | Bin 0 -> 196 bytes docs/icons/Help.png | Bin 0 -> 4942 bytes docs/icons/Search.png | Bin 0 -> 343 bytes docs/icons/SectionCollapsed.png | Bin 0 -> 229 bytes docs/icons/SectionExpanded.png | Bin 0 -> 223 bytes docs/icons/TocClose.gif | Bin 0 -> 893 bytes docs/icons/TocCollapsed.gif | Bin 0 -> 838 bytes docs/icons/TocExpanded.gif | Bin 0 -> 837 bytes docs/icons/TocOpen.gif | Bin 0 -> 896 bytes docs/icons/favicon.ico | Bin 0 -> 25094 bytes docs/icons/privclass.gif | Bin 0 -> 621 bytes docs/icons/privdelegate.gif | Bin 0 -> 1045 bytes docs/icons/privenumeration.gif | Bin 0 -> 597 bytes docs/icons/privevent.gif | Bin 0 -> 580 bytes docs/icons/privextension.gif | Bin 0 -> 608 bytes docs/icons/privfield.gif | Bin 0 -> 574 bytes docs/icons/privinterface.gif | Bin 0 -> 585 bytes docs/icons/privmethod.gif | Bin 0 -> 603 bytes docs/icons/privproperty.gif | Bin 0 -> 1054 bytes docs/icons/privstructure.gif | Bin 0 -> 630 bytes docs/icons/protclass.gif | Bin 0 -> 600 bytes docs/icons/protdelegate.gif | Bin 0 -> 1041 bytes docs/icons/protenumeration.gif | Bin 0 -> 583 bytes docs/icons/protevent.gif | Bin 0 -> 564 bytes docs/icons/protextension.gif | Bin 0 -> 589 bytes docs/icons/protfield.gif | Bin 0 -> 570 bytes docs/icons/protinterface.gif | Bin 0 -> 562 bytes docs/icons/protmethod.gif | Bin 0 -> 183 bytes docs/icons/protoperator.gif | Bin 0 -> 547 bytes docs/icons/protproperty.gif | Bin 0 -> 1039 bytes docs/icons/protstructure.gif | Bin 0 -> 619 bytes docs/icons/pubclass.gif | Bin 0 -> 368 bytes docs/icons/pubdelegate.gif | Bin 0 -> 1041 bytes docs/icons/pubenumeration.gif | Bin 0 -> 339 bytes docs/icons/pubevent.gif | Bin 0 -> 314 bytes docs/icons/pubextension.gif | Bin 0 -> 551 bytes docs/icons/pubfield.gif | Bin 0 -> 311 bytes docs/icons/pubinterface.gif | Bin 0 -> 314 bytes docs/icons/pubmethod.gif | Bin 0 -> 329 bytes docs/icons/puboperator.gif | Bin 0 -> 310 bytes docs/icons/pubproperty.gif | Bin 0 -> 609 bytes docs/icons/pubstructure.gif | Bin 0 -> 595 bytes docs/icons/slMobile.gif | Bin 0 -> 909 bytes docs/icons/static.gif | Bin 0 -> 879 bytes docs/icons/xna.gif | Bin 0 -> 549 bytes docs/index.html | 14 + docs/media/LatexComponent.png | Bin 0 -> 108004 bytes docs/media/LatexComponentConfig.png | Bin 0 -> 26371 bytes docs/media/LatexPlugIn.png | Bin 0 -> 103646 bytes docs/media/LatexStyleSelection.png | Bin 0 -> 110682 bytes docs/media/clatex_0.svg | 42 + docs/media/clatex_1.svg | 42 + docs/media/clatex_10.svg | 19 + docs/media/clatex_11.svg | 37 + docs/media/clatex_2.svg | 42 + docs/media/clatex_3.svg | 42 + docs/media/clatex_4.svg | 42 + docs/media/clatex_5.svg | 42 + docs/media/clatex_6.svg | 42 + docs/media/clatex_7.svg | 42 + docs/media/clatex_8.svg | 42 + docs/media/clatex_9.svg | 42 + docs/media/latex_12.svg | 19 + docs/media/latex_13.svg | 37 + docs/media/latex_14.svg | 19 + docs/media/latex_15.svg | 37 + docs/media/latex_16.svg | 19 + docs/media/latex_17.svg | 37 + docs/media/latex_18.svg | 19 + docs/media/latex_19.svg | 37 + docs/media/latex_20.svg | 19 + docs/media/latex_21.svg | 37 + docs/media/latex_22.svg | 19 + docs/media/latex_23.svg | 37 + docs/scripts/branding-Website.js | 624 ++++ docs/scripts/branding.js | 562 ++++ docs/scripts/clipboard.min.js | 7 + docs/scripts/highlight.js | 148 + docs/scripts/jquery-3.5.1.min.js | 2 + docs/search.html | 35 + docs/styles/branding-Help1.css | 40 + docs/styles/branding-HelpViewer.css | 48 + docs/styles/branding-Website.css | 156 + docs/styles/branding-cs-CZ.css | 3 + docs/styles/branding-de-DE.css | 3 + docs/styles/branding-en-US.css | 3 + docs/styles/branding-es-ES.css | 3 + docs/styles/branding-fr-FR.css | 3 + docs/styles/branding-it-IT.css | 3 + docs/styles/branding-ja-JP.css | 18 + docs/styles/branding-ko-KR.css | 19 + docs/styles/branding-pl-PL.css | 3 + docs/styles/branding-pt-BR.css | 3 + docs/styles/branding-ru-RU.css | 3 + docs/styles/branding-tr-TR.css | 3 + docs/styles/branding-zh-CN.css | 18 + docs/styles/branding-zh-TW.css | 18 + docs/styles/branding.css | 583 ++++ docs/styles/highlight.css | 28 + .../7abd97df-f098-4afa-9f9c-2255d3e61a33.xml | 1 + docs/toc/G_Novacta_Shfb.xml | 1 + docs/toc/G_SampleClassLibrary.xml | 1 + ...ovacta_Shfb_LatexTools_DviPngProcessor.xml | 1 + ...vacta_Shfb_LatexTools_DviSvgmProcessor.xml | 1 + ..._Novacta_Shfb_LatexTools_FileProcessor.xml | 1 + ...Novacta_Shfb_LatexTools_LatexComponent.xml | 1 + ...Shfb_LatexTools_LatexComponent_Factory.xml | 1 + ..._T_Novacta_Shfb_LatexTools_LatexPlugIn.xml | 1 + ...Novacta_Shfb_LatexTools_LatexProcessor.xml | 1 + ...Library_Advanced_IntegerArrayOperation.xml | 1 + ..._T_SampleClassLibrary_IntegerOperation.xml | 1 + docs/toc/N_Novacta_Shfb_LatexTools.xml | 1 + ...cta_Shfb_LatexTools_PresentationStyles.xml | 1 + docs/toc/N_SampleClassLibrary.xml | 1 + docs/toc/N_SampleClassLibrary_Advanced.xml | 1 + ...acta_Shfb_LatexTools_FileProcessor_Run.xml | 1 + ...ovacta_Shfb_LatexTools_DviPngProcessor.xml | 1 + ...vacta_Shfb_LatexTools_DviSvgmProcessor.xml | 1 + ..._Novacta_Shfb_LatexTools_FileProcessor.xml | 1 + ...Shfb_LatexTools_LatexComponent_Factory.xml | 1 + ..._T_Novacta_Shfb_LatexTools_LatexPlugIn.xml | 1 + ...Novacta_Shfb_LatexTools_LatexProcessor.xml | 1 + ...ols_PresentationStyles_VS2010WithLatex.xml | 1 + ...ols_PresentationStyles_VS2013WithLatex.xml | 1 + ...ovacta_Shfb_LatexTools_DviPngProcessor.xml | 1 + ...vacta_Shfb_LatexTools_DviSvgmProcessor.xml | 1 + ..._Novacta_Shfb_LatexTools_FileProcessor.xml | 1 + ...Novacta_Shfb_LatexTools_LatexComponent.xml | 1 + ...Shfb_LatexTools_LatexComponent_Factory.xml | 1 + .../T_Novacta_Shfb_LatexTools_LatexPlugIn.xml | 1 + ...Novacta_Shfb_LatexTools_LatexProcessor.xml | 1 + ...ols_PresentationStyles_VS2010WithLatex.xml | 1 + ...ols_PresentationStyles_VS2013WithLatex.xml | 1 + ...Library_Advanced_IntegerArrayOperation.xml | 1 + .../T_SampleClassLibrary_IntegerOperation.xml | 1 + docs/toc/roottoc.xml | 1 + .../Content/OperatingOnIntegerArrays.aml | 35 + .../Content/OperatingOnIntegers.aml | 37 + .../Content/VersionHistory/VersionHistory.aml | 29 + .../Content/VersionHistory/v1.0.0.0.aml | 28 + .../Content/Welcome.aml | 67 + .../ContentLayout.content | 20 + .../README.txt | 3 + .../SampleClassLibrary.Documentation.shfbproj | 148 + .../icons/Help.png | Bin 0 -> 4942 bytes .../media/Function.png | Bin 0 -> 5631 bytes .../Advanced/IntegerArrayOperation.cs | 123 + .../IntegerArrayOperationExample.cs.txt | 68 + .../SampleClassLibrary/IntegerOperation.cs | 84 + .../IntegerOperationExample.cs.txt | 41 + .../SampleClassLibrary.csproj | 8 + shfb-latex-tools.sln | 67 + .../GlobalSuppressions.cs | 12 + .../LatexConfigDlg.cs | 351 +++ .../LatexConfigDlg.designer.cs | 391 +++ .../LatexConfigDlg.resx | 120 + .../Novacta.Shfb.LatexConfiguration.csproj | 27 + .../Properties/AssemblyInfo.cs | 27 + .../Properties/launchSettings.json | 8 + .../FileManagers/FromByteArrayFileCreator.cs | 51 + .../FileManagers/SharedContentItemsUpdater.cs | 139 + .../FileManagers/StyleSheetsImporter.cs | 117 + .../SvgCompatibilityConfigurator.cs | 143 + .../FileManagers/XmlFileCreator.cs | 48 + .../LatexTools.cs | 319 ++ .../Novacta.Shfb.LatexTools.ConsoleApp.csproj | 14 + .../Program.cs | 26 + .../Shfb.cs | 698 +++++ .../Topics.cs | 30 + .../Content/LatexTools.aml | 905 ++++++ .../Content/License.aml | 57 + .../Content/OperatingOnIntegers.aml | 33 + .../Content/VersionHistory/VersionHistory.aml | 33 + .../Content/VersionHistory/v1.0.0.aml | 30 + .../Content/Welcome.aml | 78 + .../ContentLayout.content | 21 + ...cta.Shfb.LatexTools.Documentation.shfbproj | 158 + .../icons/Help.png | Bin 0 -> 4942 bytes .../media/LatexComponent.png | Bin 0 -> 108004 bytes .../media/LatexComponentConfig.png | Bin 0 -> 26371 bytes .../media/LatexPlugIn.png | Bin 0 -> 103646 bytes .../media/LatexStyleSelection.png | Bin 0 -> 110682 bytes .../DviPngProcessor.cs | 78 + .../DviSvgmProcessor.cs | 71 + src/Novacta.Shfb.LatexTools/FileProcessor.cs | 108 + src/Novacta.Shfb.LatexTools/LatexComponent.cs | 935 ++++++ src/Novacta.Shfb.LatexTools/LatexPlugIn.cs | 199 ++ src/Novacta.Shfb.LatexTools/LatexProcessor.cs | 52 + .../Novacta.Shfb.LatexTools.csproj | 1222 ++++++++ .../Configuration/BuildAssembler.config | 547 ++++ .../VS2010/Content/conceptual_content.xml | 77 + .../Content/de-DE/conceptual_content.xml | 78 + .../Content/de-DE/reference_content.xml | 551 ++++ .../VS2010/Content/de-DE/shared_content.xml | 138 + .../Content/de-DE/shared_content_mshc.xml | 9 + .../Content/ja-JP/conceptual_content.xml | 77 + .../Content/ja-JP/reference_content.xml | 552 ++++ .../VS2010/Content/ja-JP/shared_content.xml | 137 + .../Content/ja-JP/shared_content_mshc.xml | 9 + .../VS2010/Content/reference_content.xml | 551 ++++ .../Content/ru-RU/conceptual_content.xml | 78 + .../Content/ru-RU/reference_content.xml | 551 ++++ .../VS2010/Content/ru-RU/shared_content.xml | 139 + .../Content/ru-RU/shared_content_mshc.xml | 10 + .../VS2010/Content/shared_content.xml | 138 + .../VS2010/Content/shared_content_mshc.xml | 10 + .../Content/zh-CN/conceptual_content.xml | 77 + .../Content/zh-CN/reference_content.xml | 639 ++++ .../VS2010/Content/zh-CN/shared_content.xml | 136 + .../Content/zh-CN/shared_content_mshc.xml | 9 + .../VS2010/Data/bibliography.xml | 50 + .../VS2010/SHFBContent/WebsiteContent.xml | 9 + .../VS2010/SHFBContent/de-DE.xml | 59 + .../VS2010/SHFBContent/en-US.xml | 59 + .../VS2010/SHFBContent/es-ES.xml | 59 + .../VS2010/SHFBContent/fr-FR.xml | 59 + .../VS2010/SHFBContent/it-IT.xml | 59 + .../VS2010/SHFBContent/ja-JP.xml | 60 + .../VS2010/SHFBContent/ko-KR.xml | 59 + .../VS2010/SHFBContent/pt-BR.xml | 59 + .../VS2010/SHFBContent/ru-RU.xml | 59 + .../VS2010/SHFBContent/zh-CHS.xml | 59 + .../VS2010/SHFBContent/zh-CN.xml | 59 + .../VS2010/Transforms/codeTemplates.xsl | 458 +++ .../Transforms/conceptualMetadataHelp20.xsl | 179 ++ .../Transforms/conceptualMetadataHelp30.xsl | 166 ++ .../Transforms/conceptualTopicTypes.xsl | 98 + .../VS2010/Transforms/globalTemplates.xsl | 844 ++++++ .../VS2010/Transforms/main_conceptual.xsl | 442 +++ .../VS2010/Transforms/main_sandcastle.xsl | 1284 ++++++++ .../VS2010/Transforms/metadataHelp20.xsl | 1012 +++++++ .../VS2010/Transforms/metadataHelp30.xsl | 729 +++++ .../VS2010/Transforms/novacta_latex_tools.xsl | 110 + .../VS2010/Transforms/seealso_dduexml.xsl | 162 + .../VS2010/Transforms/skeleton.xml | 7 + .../VS2010/Transforms/skeleton_conceptual.xml | 4 + .../Transforms/utilities_bibliography.xsl | 36 + .../VS2010/Transforms/utilities_dduexml.xsl | 1847 ++++++++++++ .../VS2010/Transforms/utilities_metadata.xsl | 319 ++ .../VS2010/Transforms/utilities_reference.xsl | 2622 +++++++++++++++++ .../VS2010/Web/CloseSearch.png | Bin 0 -> 629 bytes .../VS2010/Web/CollapseAll.png | Bin 0 -> 266 bytes .../VS2010/Web/Collapsed.gif | Bin 0 -> 838 bytes .../VS2010/Web/Expanded.gif | Bin 0 -> 837 bytes .../VS2010/Web/FillNode.aspx | 156 + .../VS2010/Web/FillNode.php | 52 + .../PresentationStyles/VS2010/Web/Index.aspx | 152 + .../PresentationStyles/VS2010/Web/Index.gif | Bin 0 -> 902 bytes .../PresentationStyles/VS2010/Web/Item.gif | Bin 0 -> 820 bytes .../VS2010/Web/LoadIndexKeywords.aspx | 100 + .../VS2010/Web/LoadIndexKeywords.php | 68 + .../PresentationStyles/VS2010/Web/Search.gif | Bin 0 -> 971 bytes .../VS2010/Web/SearchHelp.aspx | 235 ++ .../VS2010/Web/SearchHelp.inc.php | 169 ++ .../VS2010/Web/SearchHelp.php | 58 + .../VS2010/Web/Splitter.gif | Bin 0 -> 880 bytes .../PresentationStyles/VS2010/Web/SyncTOC.gif | Bin 0 -> 1056 bytes .../PresentationStyles/VS2010/Web/TOC.css | 141 + .../PresentationStyles/VS2010/Web/TOC.js | 906 ++++++ .../PresentationStyles/VS2010/Web/Web.Config | 34 + .../PresentationStyles/VS2010/Web/favicon.ico | Bin 0 -> 25094 bytes .../VS2010/Web/html/GeneralError.htm | 24 + .../VS2010/Web/html/PageNotFound.htm | 25 + .../PresentationStyles/VS2010/Web/index.html | 66 + .../PresentationStyles/VS2010/Web/index.php | 110 + .../VS2010/Web/scripts/clipboard.min.js | 7 + .../PresentationStyles/VS2010/icons/CFW.gif | Bin 0 -> 588 bytes .../VS2010/icons/CodeExample.png | Bin 0 -> 196 bytes .../VS2010/icons/alert_caution.gif | Bin 0 -> 519 bytes .../VS2010/icons/alert_note.gif | Bin 0 -> 123 bytes .../VS2010/icons/alert_security.gif | Bin 0 -> 183 bytes .../VS2010/icons/favicon.ico | Bin 0 -> 25094 bytes .../VS2010/icons/footer_slice.gif | Bin 0 -> 146 bytes .../VS2010/icons/privclass.gif | Bin 0 -> 621 bytes .../VS2010/icons/privdelegate.gif | Bin 0 -> 1045 bytes .../VS2010/icons/privenumeration.gif | Bin 0 -> 597 bytes .../VS2010/icons/privevent.gif | Bin 0 -> 580 bytes .../VS2010/icons/privextension.gif | Bin 0 -> 608 bytes .../VS2010/icons/privfield.gif | Bin 0 -> 574 bytes .../VS2010/icons/privinterface.gif | Bin 0 -> 585 bytes .../VS2010/icons/privmethod.gif | Bin 0 -> 603 bytes .../VS2010/icons/privproperty.gif | Bin 0 -> 1054 bytes .../VS2010/icons/privstructure.gif | Bin 0 -> 630 bytes .../VS2010/icons/protclass.gif | Bin 0 -> 600 bytes .../VS2010/icons/protdelegate.gif | Bin 0 -> 1041 bytes .../VS2010/icons/protenumeration.gif | Bin 0 -> 583 bytes .../VS2010/icons/protevent.gif | Bin 0 -> 564 bytes .../VS2010/icons/protextension.gif | Bin 0 -> 589 bytes .../VS2010/icons/protfield.gif | Bin 0 -> 570 bytes .../VS2010/icons/protinterface.gif | Bin 0 -> 562 bytes .../VS2010/icons/protmethod.gif | Bin 0 -> 183 bytes .../VS2010/icons/protoperator.gif | Bin 0 -> 547 bytes .../VS2010/icons/protproperty.gif | Bin 0 -> 1039 bytes .../VS2010/icons/protstructure.gif | Bin 0 -> 619 bytes .../VS2010/icons/pubclass.gif | Bin 0 -> 368 bytes .../VS2010/icons/pubdelegate.gif | Bin 0 -> 1041 bytes .../VS2010/icons/pubenumeration.gif | Bin 0 -> 339 bytes .../VS2010/icons/pubevent.gif | Bin 0 -> 314 bytes .../VS2010/icons/pubextension.gif | Bin 0 -> 551 bytes .../VS2010/icons/pubfield.gif | Bin 0 -> 311 bytes .../VS2010/icons/pubinterface.gif | Bin 0 -> 314 bytes .../VS2010/icons/pubmethod.gif | Bin 0 -> 329 bytes .../VS2010/icons/puboperator.gif | Bin 0 -> 310 bytes .../VS2010/icons/pubproperty.gif | Bin 0 -> 609 bytes .../VS2010/icons/pubstructure.gif | Bin 0 -> 595 bytes .../VS2010/icons/slMobile.gif | Bin 0 -> 909 bytes .../VS2010/icons/static.gif | Bin 0 -> 879 bytes .../VS2010/icons/tabLeftBG.gif | Bin 0 -> 847 bytes .../VS2010/icons/tabRightBG.gif | Bin 0 -> 852 bytes .../PresentationStyles/VS2010/icons/xna.gif | Bin 0 -> 549 bytes .../VS2010/scripts/branding.js | 623 ++++ .../VS2010/styles/branding-Help1.css | 14 + .../VS2010/styles/branding-HelpViewer.css | 8 + .../VS2010/styles/branding-cs-CZ.css | 3 + .../VS2010/styles/branding-de-DE.css | 3 + .../VS2010/styles/branding-en-US.css | 3 + .../VS2010/styles/branding-es-ES.css | 3 + .../VS2010/styles/branding-fr-FR.css | 3 + .../VS2010/styles/branding-it-IT.css | 3 + .../VS2010/styles/branding-ja-JP.css | 18 + .../VS2010/styles/branding-ko-KR.css | 19 + .../VS2010/styles/branding-pl-PL.css | 3 + .../VS2010/styles/branding-pt-BR.css | 3 + .../VS2010/styles/branding-ru-RU.css | 3 + .../VS2010/styles/branding-tr-TR.css | 3 + .../VS2010/styles/branding-zh-CN.css | 18 + .../VS2010/styles/branding-zh-TW.css | 18 + .../VS2010/styles/branding.css | 803 +++++ .../PresentationStyles/VS2010WithLatex.cs | 118 + .../Configuration/BuildAssembler.config | 557 ++++ .../VS2013/Content/conceptual_content.xml | 77 + .../Content/de-DE/conceptual_content.xml | 78 + .../Content/de-DE/reference_content.xml | 551 ++++ .../VS2013/Content/de-DE/shared_content.xml | 140 + .../Content/de-DE/shared_content_mshc.xml | 9 + .../Content/es-ES/conceptual_content.xml | 77 + .../Content/es-ES/reference_content.xml | 551 ++++ .../VS2013/Content/es-ES/shared_content.xml | 140 + .../Content/es-ES/shared_content_mshc.xml | 9 + .../Content/fr-FR/conceptual_content.xml | 78 + .../Content/fr-FR/reference_content.xml | 552 ++++ .../VS2013/Content/fr-FR/shared_content.xml | 140 + .../Content/fr-FR/shared_content_mshc.xml | 10 + .../Content/it-IT/conceptual_content.xml | 77 + .../Content/it-IT/reference_content.xml | 551 ++++ .../VS2013/Content/it-IT/shared_content.xml | 138 + .../Content/it-IT/shared_content_mshc.xml | 8 + .../Content/ja-JP/conceptual_content.xml | 77 + .../Content/ja-JP/reference_content.xml | 548 ++++ .../VS2013/Content/ja-JP/shared_content.xml | 138 + .../Content/ja-JP/shared_content_mshc.xml | 9 + .../Content/pt-BR/conceptual_content.xml | 77 + .../Content/pt-BR/reference_content.xml | 550 ++++ .../VS2013/Content/pt-BR/shared_content.xml | 139 + .../Content/pt-BR/shared_content_mshc.xml | 9 + .../VS2013/Content/reference_content.xml | 551 ++++ .../Content/ru-RU/conceptual_content.xml | 78 + .../Content/ru-RU/reference_content.xml | 551 ++++ .../VS2013/Content/ru-RU/shared_content.xml | 141 + .../Content/ru-RU/shared_content_mshc.xml | 10 + .../VS2013/Content/shared_content.xml | 140 + .../VS2013/Content/shared_content_mshc.xml | 10 + .../Content/zh-CN/conceptual_content.xml | 77 + .../Content/zh-CN/reference_content.xml | 560 ++++ .../VS2013/Content/zh-CN/shared_content.xml | 139 + .../Content/zh-CN/shared_content_mshc.xml | 9 + .../VS2013/Data/bibliography.xml | 50 + .../VS2013/SHFBContent/WebsiteContent.xml | 9 + .../VS2013/SHFBContent/de-DE.xml | 59 + .../VS2013/SHFBContent/en-US.xml | 59 + .../VS2013/SHFBContent/es-ES.xml | 59 + .../VS2013/SHFBContent/fr-FR.xml | 59 + .../VS2013/SHFBContent/it-IT.xml | 59 + .../VS2013/SHFBContent/ja-JP.xml | 60 + .../VS2013/SHFBContent/ko-KR.xml | 59 + .../VS2013/SHFBContent/pt-BR.xml | 59 + .../VS2013/SHFBContent/ru-RU.xml | 59 + .../VS2013/SHFBContent/zh-CHS.xml | 59 + .../VS2013/SHFBContent/zh-CN.xml | 59 + .../VS2013/Transforms/codeTemplates.xsl | 405 +++ .../Transforms/conceptualMetadataHelp20.xsl | 179 ++ .../Transforms/conceptualMetadataHelp30.xsl | 166 ++ .../Transforms/conceptualTopicTypes.xsl | 98 + .../VS2013/Transforms/globalTemplates.xsl | 855 ++++++ .../VS2013/Transforms/main_conceptual.xsl | 429 +++ .../VS2013/Transforms/main_sandcastle.xsl | 1284 ++++++++ .../VS2013/Transforms/metadataHelp20.xsl | 1012 +++++++ .../VS2013/Transforms/metadataHelp30.xsl | 729 +++++ .../VS2013/Transforms/novacta_latex_tools.xsl | 110 + .../VS2013/Transforms/seealso_dduexml.xsl | 162 + .../VS2013/Transforms/skeleton.xml | 7 + .../VS2013/Transforms/skeleton_conceptual.xml | 4 + .../Transforms/utilities_bibliography.xsl | 36 + .../VS2013/Transforms/utilities_dduexml.xsl | 1845 ++++++++++++ .../VS2013/Transforms/utilities_metadata.xsl | 319 ++ .../VS2013/Transforms/utilities_reference.xsl | 2611 ++++++++++++++++ .../VS2013/Web/SearchHelp.aspx | 232 ++ .../VS2013/Web/SearchHelp.inc.php | 173 ++ .../VS2013/Web/SearchHelp.php | 58 + .../PresentationStyles/VS2013/Web/Web.Config | 34 + .../VS2013/Web/html/GeneralError.htm | 29 + .../VS2013/Web/html/PageNotFound.htm | 31 + .../VS2013/Web/icons/Search.png | Bin 0 -> 343 bytes .../VS2013/Web/icons/TocClose.gif | Bin 0 -> 893 bytes .../VS2013/Web/icons/TocCollapsed.gif | Bin 0 -> 838 bytes .../VS2013/Web/icons/TocExpanded.gif | Bin 0 -> 837 bytes .../VS2013/Web/icons/TocOpen.gif | Bin 0 -> 896 bytes .../PresentationStyles/VS2013/Web/index.html | 14 + .../VS2013/Web/scripts/branding-Website.js | 624 ++++ .../VS2013/Web/scripts/clipboard.min.js | 7 + .../VS2013/Web/scripts/jquery-3.5.1.min.js | 2 + .../PresentationStyles/VS2013/Web/search.html | 35 + .../VS2013/icons/AlertCaution.png | Bin 0 -> 618 bytes .../VS2013/icons/AlertNote.png | Bin 0 -> 1054 bytes .../VS2013/icons/AlertSecurity.png | Bin 0 -> 503 bytes .../PresentationStyles/VS2013/icons/CFW.gif | Bin 0 -> 588 bytes .../VS2013/icons/CodeExample.png | Bin 0 -> 196 bytes .../VS2013/icons/SectionCollapsed.png | Bin 0 -> 229 bytes .../VS2013/icons/SectionExpanded.png | Bin 0 -> 223 bytes .../VS2013/icons/favicon.ico | Bin 0 -> 25094 bytes .../VS2013/icons/privclass.gif | Bin 0 -> 621 bytes .../VS2013/icons/privdelegate.gif | Bin 0 -> 1045 bytes .../VS2013/icons/privenumeration.gif | Bin 0 -> 597 bytes .../VS2013/icons/privevent.gif | Bin 0 -> 580 bytes .../VS2013/icons/privextension.gif | Bin 0 -> 608 bytes .../VS2013/icons/privfield.gif | Bin 0 -> 574 bytes .../VS2013/icons/privinterface.gif | Bin 0 -> 585 bytes .../VS2013/icons/privmethod.gif | Bin 0 -> 603 bytes .../VS2013/icons/privproperty.gif | Bin 0 -> 1054 bytes .../VS2013/icons/privstructure.gif | Bin 0 -> 630 bytes .../VS2013/icons/protclass.gif | Bin 0 -> 600 bytes .../VS2013/icons/protdelegate.gif | Bin 0 -> 1041 bytes .../VS2013/icons/protenumeration.gif | Bin 0 -> 583 bytes .../VS2013/icons/protevent.gif | Bin 0 -> 564 bytes .../VS2013/icons/protextension.gif | Bin 0 -> 589 bytes .../VS2013/icons/protfield.gif | Bin 0 -> 570 bytes .../VS2013/icons/protinterface.gif | Bin 0 -> 562 bytes .../VS2013/icons/protmethod.gif | Bin 0 -> 183 bytes .../VS2013/icons/protoperator.gif | Bin 0 -> 547 bytes .../VS2013/icons/protproperty.gif | Bin 0 -> 1039 bytes .../VS2013/icons/protstructure.gif | Bin 0 -> 619 bytes .../VS2013/icons/pubclass.gif | Bin 0 -> 368 bytes .../VS2013/icons/pubdelegate.gif | Bin 0 -> 1041 bytes .../VS2013/icons/pubenumeration.gif | Bin 0 -> 339 bytes .../VS2013/icons/pubevent.gif | Bin 0 -> 314 bytes .../VS2013/icons/pubextension.gif | Bin 0 -> 551 bytes .../VS2013/icons/pubfield.gif | Bin 0 -> 311 bytes .../VS2013/icons/pubinterface.gif | Bin 0 -> 314 bytes .../VS2013/icons/pubmethod.gif | Bin 0 -> 329 bytes .../VS2013/icons/puboperator.gif | Bin 0 -> 310 bytes .../VS2013/icons/pubproperty.gif | Bin 0 -> 609 bytes .../VS2013/icons/pubstructure.gif | Bin 0 -> 595 bytes .../VS2013/icons/slMobile.gif | Bin 0 -> 909 bytes .../VS2013/icons/static.gif | Bin 0 -> 879 bytes .../PresentationStyles/VS2013/icons/xna.gif | Bin 0 -> 549 bytes .../VS2013/scripts/branding.js | 562 ++++ .../VS2013/styles/branding-Help1.css | 40 + .../VS2013/styles/branding-HelpViewer.css | 48 + .../VS2013/styles/branding-Website.css | 156 + .../VS2013/styles/branding-cs-CZ.css | 3 + .../VS2013/styles/branding-de-DE.css | 3 + .../VS2013/styles/branding-en-US.css | 3 + .../VS2013/styles/branding-es-ES.css | 3 + .../VS2013/styles/branding-fr-FR.css | 3 + .../VS2013/styles/branding-it-IT.css | 3 + .../VS2013/styles/branding-ja-JP.css | 18 + .../VS2013/styles/branding-ko-KR.css | 19 + .../VS2013/styles/branding-pl-PL.css | 3 + .../VS2013/styles/branding-pt-BR.css | 3 + .../VS2013/styles/branding-ru-RU.css | 3 + .../VS2013/styles/branding-tr-TR.css | 3 + .../VS2013/styles/branding-zh-CN.css | 18 + .../VS2013/styles/branding-zh-TW.css | 18 + .../VS2013/styles/branding.css | 583 ++++ .../PresentationStyles/VS2013WithLatex.cs | 118 + .../Properties/AssemblyInfo.cs | 26 + .../Properties/launchSettings.json | 8 + .../build/Novacta.Shfb.LatexTools.props | 5 + 599 files changed, 54029 insertions(+), 2 deletions(-) create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 docs/SearchHelp.aspx create mode 100644 docs/SearchHelp.inc.php create mode 100644 docs/SearchHelp.php create mode 100644 docs/Web.Config create mode 100644 docs/WebKI.xml create mode 100644 docs/WebTOC.xml create mode 100644 docs/fti/FTI_100.json create mode 100644 docs/fti/FTI_101.json create mode 100644 docs/fti/FTI_102.json create mode 100644 docs/fti/FTI_103.json create mode 100644 docs/fti/FTI_104.json create mode 100644 docs/fti/FTI_105.json create mode 100644 docs/fti/FTI_107.json create mode 100644 docs/fti/FTI_108.json create mode 100644 docs/fti/FTI_109.json create mode 100644 docs/fti/FTI_110.json create mode 100644 docs/fti/FTI_111.json create mode 100644 docs/fti/FTI_112.json create mode 100644 docs/fti/FTI_113.json create mode 100644 docs/fti/FTI_114.json create mode 100644 docs/fti/FTI_115.json create mode 100644 docs/fti/FTI_116.json create mode 100644 docs/fti/FTI_117.json create mode 100644 docs/fti/FTI_118.json create mode 100644 docs/fti/FTI_119.json create mode 100644 docs/fti/FTI_120.json create mode 100644 docs/fti/FTI_122.json create mode 100644 docs/fti/FTI_97.json create mode 100644 docs/fti/FTI_98.json create mode 100644 docs/fti/FTI_99.json create mode 100644 docs/fti/FTI_Files.json create mode 100644 docs/html/47a5afe5-726c-4f74-9ab1-90740bf0a692.htm create mode 100644 docs/html/77c2fac9-a810-4e5b-ba0e-afff50a42467.htm create mode 100644 docs/html/7abd97df-f098-4afa-9f9c-2255d3e61a33.htm create mode 100644 docs/html/G_.htm create mode 100644 docs/html/G_Novacta_Shfb.htm create mode 100644 docs/html/G_SampleClassLibrary.htm create mode 100644 docs/html/GeneralError.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_DviPngProcessor_Arguments.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_DviPngProcessor__ctor.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_DviSvgmProcessor_Arguments.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_DviSvgmProcessor__ctor.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_FileProcessor_Arguments.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_FileProcessor_Run.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_FileProcessor_Run_1.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_FileProcessor__ctor.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_LatexComponent_Apply.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_LatexComponent_Factory_Create.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_LatexComponent_Factory__ctor.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_LatexComponent_Initialize.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_LatexComponent__ctor.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Dispose.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Execute.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Finalize.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Initialize.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn__ctor.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_LatexProcessor_Arguments.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_LatexProcessor__ctor.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex__ctor.htm create mode 100644 docs/html/M_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex__ctor.htm create mode 100644 docs/html/M_SampleClassLibrary_Advanced_IntegerArrayOperation_Operate.htm create mode 100644 docs/html/M_SampleClassLibrary_IntegerOperation_Operate.htm create mode 100644 docs/html/Methods_T_Novacta_Shfb_LatexTools_DviPngProcessor.htm create mode 100644 docs/html/Methods_T_Novacta_Shfb_LatexTools_DviSvgmProcessor.htm create mode 100644 docs/html/Methods_T_Novacta_Shfb_LatexTools_FileProcessor.htm create mode 100644 docs/html/Methods_T_Novacta_Shfb_LatexTools_LatexComponent.htm create mode 100644 docs/html/Methods_T_Novacta_Shfb_LatexTools_LatexComponent_Factory.htm create mode 100644 docs/html/Methods_T_Novacta_Shfb_LatexTools_LatexPlugIn.htm create mode 100644 docs/html/Methods_T_Novacta_Shfb_LatexTools_LatexProcessor.htm create mode 100644 docs/html/Methods_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.htm create mode 100644 docs/html/Methods_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.htm create mode 100644 docs/html/Methods_T_SampleClassLibrary_Advanced_IntegerArrayOperation.htm create mode 100644 docs/html/Methods_T_SampleClassLibrary_IntegerOperation.htm create mode 100644 docs/html/N_Novacta_Shfb_LatexTools.htm create mode 100644 docs/html/N_Novacta_Shfb_LatexTools_PresentationStyles.htm create mode 100644 docs/html/N_SampleClassLibrary.htm create mode 100644 docs/html/N_SampleClassLibrary_Advanced.htm create mode 100644 docs/html/Overload_Novacta_Shfb_LatexTools_FileProcessor_Run.htm create mode 100644 docs/html/P_Novacta_Shfb_LatexTools_DviPngProcessor_Executable.htm create mode 100644 docs/html/P_Novacta_Shfb_LatexTools_DviPngProcessor_WorkingDirectory.htm create mode 100644 docs/html/P_Novacta_Shfb_LatexTools_DviSvgmProcessor_Executable.htm create mode 100644 docs/html/P_Novacta_Shfb_LatexTools_DviSvgmProcessor_WorkingDirectory.htm create mode 100644 docs/html/P_Novacta_Shfb_LatexTools_FileProcessor_Executable.htm create mode 100644 docs/html/P_Novacta_Shfb_LatexTools_FileProcessor_WorkingDirectory.htm create mode 100644 docs/html/P_Novacta_Shfb_LatexTools_LatexComponent_Factory_DefaultConfiguration.htm create mode 100644 docs/html/P_Novacta_Shfb_LatexTools_LatexPlugIn_ExecutionPoints.htm create mode 100644 docs/html/P_Novacta_Shfb_LatexTools_LatexProcessor_Executable.htm create mode 100644 docs/html/P_Novacta_Shfb_LatexTools_LatexProcessor_WorkingDirectory.htm create mode 100644 docs/html/P_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex_Location.htm create mode 100644 docs/html/P_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex_Location.htm create mode 100644 docs/html/PageNotFound.htm create mode 100644 docs/html/Properties_T_Novacta_Shfb_LatexTools_DviPngProcessor.htm create mode 100644 docs/html/Properties_T_Novacta_Shfb_LatexTools_DviSvgmProcessor.htm create mode 100644 docs/html/Properties_T_Novacta_Shfb_LatexTools_FileProcessor.htm create mode 100644 docs/html/Properties_T_Novacta_Shfb_LatexTools_LatexComponent.htm create mode 100644 docs/html/Properties_T_Novacta_Shfb_LatexTools_LatexComponent_Factory.htm create mode 100644 docs/html/Properties_T_Novacta_Shfb_LatexTools_LatexPlugIn.htm create mode 100644 docs/html/Properties_T_Novacta_Shfb_LatexTools_LatexProcessor.htm create mode 100644 docs/html/Properties_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.htm create mode 100644 docs/html/Properties_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.htm create mode 100644 docs/html/T_Novacta_Shfb_LatexTools_DviPngProcessor.htm create mode 100644 docs/html/T_Novacta_Shfb_LatexTools_DviSvgmProcessor.htm create mode 100644 docs/html/T_Novacta_Shfb_LatexTools_FileProcessor.htm create mode 100644 docs/html/T_Novacta_Shfb_LatexTools_LatexComponent.htm create mode 100644 docs/html/T_Novacta_Shfb_LatexTools_LatexComponent_Factory.htm create mode 100644 docs/html/T_Novacta_Shfb_LatexTools_LatexPlugIn.htm create mode 100644 docs/html/T_Novacta_Shfb_LatexTools_LatexProcessor.htm create mode 100644 docs/html/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.htm create mode 100644 docs/html/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.htm create mode 100644 docs/html/T_SampleClassLibrary_Advanced_IntegerArrayOperation.htm create mode 100644 docs/html/T_SampleClassLibrary_IntegerOperation.htm create mode 100644 docs/html/b10d4d75-3729-4247-a58a-b9e5b6e4bb4d.htm create mode 100644 docs/html/cf22a47c-7bfd-4e16-a103-b99e83335270.htm create mode 100644 docs/html/fe868fbe-1bfd-47f7-bf24-e1fd586864c6.htm create mode 100644 docs/icons/AlertCaution.png create mode 100644 docs/icons/AlertNote.png create mode 100644 docs/icons/AlertSecurity.png create mode 100644 docs/icons/CFW.gif create mode 100644 docs/icons/CodeExample.png create mode 100644 docs/icons/Help.png create mode 100644 docs/icons/Search.png create mode 100644 docs/icons/SectionCollapsed.png create mode 100644 docs/icons/SectionExpanded.png create mode 100644 docs/icons/TocClose.gif create mode 100644 docs/icons/TocCollapsed.gif create mode 100644 docs/icons/TocExpanded.gif create mode 100644 docs/icons/TocOpen.gif create mode 100644 docs/icons/favicon.ico create mode 100644 docs/icons/privclass.gif create mode 100644 docs/icons/privdelegate.gif create mode 100644 docs/icons/privenumeration.gif create mode 100644 docs/icons/privevent.gif create mode 100644 docs/icons/privextension.gif create mode 100644 docs/icons/privfield.gif create mode 100644 docs/icons/privinterface.gif create mode 100644 docs/icons/privmethod.gif create mode 100644 docs/icons/privproperty.gif create mode 100644 docs/icons/privstructure.gif create mode 100644 docs/icons/protclass.gif create mode 100644 docs/icons/protdelegate.gif create mode 100644 docs/icons/protenumeration.gif create mode 100644 docs/icons/protevent.gif create mode 100644 docs/icons/protextension.gif create mode 100644 docs/icons/protfield.gif create mode 100644 docs/icons/protinterface.gif create mode 100644 docs/icons/protmethod.gif create mode 100644 docs/icons/protoperator.gif create mode 100644 docs/icons/protproperty.gif create mode 100644 docs/icons/protstructure.gif create mode 100644 docs/icons/pubclass.gif create mode 100644 docs/icons/pubdelegate.gif create mode 100644 docs/icons/pubenumeration.gif create mode 100644 docs/icons/pubevent.gif create mode 100644 docs/icons/pubextension.gif create mode 100644 docs/icons/pubfield.gif create mode 100644 docs/icons/pubinterface.gif create mode 100644 docs/icons/pubmethod.gif create mode 100644 docs/icons/puboperator.gif create mode 100644 docs/icons/pubproperty.gif create mode 100644 docs/icons/pubstructure.gif create mode 100644 docs/icons/slMobile.gif create mode 100644 docs/icons/static.gif create mode 100644 docs/icons/xna.gif create mode 100644 docs/index.html create mode 100644 docs/media/LatexComponent.png create mode 100644 docs/media/LatexComponentConfig.png create mode 100644 docs/media/LatexPlugIn.png create mode 100644 docs/media/LatexStyleSelection.png create mode 100644 docs/media/clatex_0.svg create mode 100644 docs/media/clatex_1.svg create mode 100644 docs/media/clatex_10.svg create mode 100644 docs/media/clatex_11.svg create mode 100644 docs/media/clatex_2.svg create mode 100644 docs/media/clatex_3.svg create mode 100644 docs/media/clatex_4.svg create mode 100644 docs/media/clatex_5.svg create mode 100644 docs/media/clatex_6.svg create mode 100644 docs/media/clatex_7.svg create mode 100644 docs/media/clatex_8.svg create mode 100644 docs/media/clatex_9.svg create mode 100644 docs/media/latex_12.svg create mode 100644 docs/media/latex_13.svg create mode 100644 docs/media/latex_14.svg create mode 100644 docs/media/latex_15.svg create mode 100644 docs/media/latex_16.svg create mode 100644 docs/media/latex_17.svg create mode 100644 docs/media/latex_18.svg create mode 100644 docs/media/latex_19.svg create mode 100644 docs/media/latex_20.svg create mode 100644 docs/media/latex_21.svg create mode 100644 docs/media/latex_22.svg create mode 100644 docs/media/latex_23.svg create mode 100644 docs/scripts/branding-Website.js create mode 100644 docs/scripts/branding.js create mode 100644 docs/scripts/clipboard.min.js create mode 100644 docs/scripts/highlight.js create mode 100644 docs/scripts/jquery-3.5.1.min.js create mode 100644 docs/search.html create mode 100644 docs/styles/branding-Help1.css create mode 100644 docs/styles/branding-HelpViewer.css create mode 100644 docs/styles/branding-Website.css create mode 100644 docs/styles/branding-cs-CZ.css create mode 100644 docs/styles/branding-de-DE.css create mode 100644 docs/styles/branding-en-US.css create mode 100644 docs/styles/branding-es-ES.css create mode 100644 docs/styles/branding-fr-FR.css create mode 100644 docs/styles/branding-it-IT.css create mode 100644 docs/styles/branding-ja-JP.css create mode 100644 docs/styles/branding-ko-KR.css create mode 100644 docs/styles/branding-pl-PL.css create mode 100644 docs/styles/branding-pt-BR.css create mode 100644 docs/styles/branding-ru-RU.css create mode 100644 docs/styles/branding-tr-TR.css create mode 100644 docs/styles/branding-zh-CN.css create mode 100644 docs/styles/branding-zh-TW.css create mode 100644 docs/styles/branding.css create mode 100644 docs/styles/highlight.css create mode 100644 docs/toc/7abd97df-f098-4afa-9f9c-2255d3e61a33.xml create mode 100644 docs/toc/G_Novacta_Shfb.xml create mode 100644 docs/toc/G_SampleClassLibrary.xml create mode 100644 docs/toc/Methods_T_Novacta_Shfb_LatexTools_DviPngProcessor.xml create mode 100644 docs/toc/Methods_T_Novacta_Shfb_LatexTools_DviSvgmProcessor.xml create mode 100644 docs/toc/Methods_T_Novacta_Shfb_LatexTools_FileProcessor.xml create mode 100644 docs/toc/Methods_T_Novacta_Shfb_LatexTools_LatexComponent.xml create mode 100644 docs/toc/Methods_T_Novacta_Shfb_LatexTools_LatexComponent_Factory.xml create mode 100644 docs/toc/Methods_T_Novacta_Shfb_LatexTools_LatexPlugIn.xml create mode 100644 docs/toc/Methods_T_Novacta_Shfb_LatexTools_LatexProcessor.xml create mode 100644 docs/toc/Methods_T_SampleClassLibrary_Advanced_IntegerArrayOperation.xml create mode 100644 docs/toc/Methods_T_SampleClassLibrary_IntegerOperation.xml create mode 100644 docs/toc/N_Novacta_Shfb_LatexTools.xml create mode 100644 docs/toc/N_Novacta_Shfb_LatexTools_PresentationStyles.xml create mode 100644 docs/toc/N_SampleClassLibrary.xml create mode 100644 docs/toc/N_SampleClassLibrary_Advanced.xml create mode 100644 docs/toc/Overload_Novacta_Shfb_LatexTools_FileProcessor_Run.xml create mode 100644 docs/toc/Properties_T_Novacta_Shfb_LatexTools_DviPngProcessor.xml create mode 100644 docs/toc/Properties_T_Novacta_Shfb_LatexTools_DviSvgmProcessor.xml create mode 100644 docs/toc/Properties_T_Novacta_Shfb_LatexTools_FileProcessor.xml create mode 100644 docs/toc/Properties_T_Novacta_Shfb_LatexTools_LatexComponent_Factory.xml create mode 100644 docs/toc/Properties_T_Novacta_Shfb_LatexTools_LatexPlugIn.xml create mode 100644 docs/toc/Properties_T_Novacta_Shfb_LatexTools_LatexProcessor.xml create mode 100644 docs/toc/Properties_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.xml create mode 100644 docs/toc/Properties_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.xml create mode 100644 docs/toc/T_Novacta_Shfb_LatexTools_DviPngProcessor.xml create mode 100644 docs/toc/T_Novacta_Shfb_LatexTools_DviSvgmProcessor.xml create mode 100644 docs/toc/T_Novacta_Shfb_LatexTools_FileProcessor.xml create mode 100644 docs/toc/T_Novacta_Shfb_LatexTools_LatexComponent.xml create mode 100644 docs/toc/T_Novacta_Shfb_LatexTools_LatexComponent_Factory.xml create mode 100644 docs/toc/T_Novacta_Shfb_LatexTools_LatexPlugIn.xml create mode 100644 docs/toc/T_Novacta_Shfb_LatexTools_LatexProcessor.xml create mode 100644 docs/toc/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.xml create mode 100644 docs/toc/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.xml create mode 100644 docs/toc/T_SampleClassLibrary_Advanced_IntegerArrayOperation.xml create mode 100644 docs/toc/T_SampleClassLibrary_IntegerOperation.xml create mode 100644 docs/toc/roottoc.xml create mode 100644 samples/SampleClassLibrary.Documentation/Content/OperatingOnIntegerArrays.aml create mode 100644 samples/SampleClassLibrary.Documentation/Content/OperatingOnIntegers.aml create mode 100644 samples/SampleClassLibrary.Documentation/Content/VersionHistory/VersionHistory.aml create mode 100644 samples/SampleClassLibrary.Documentation/Content/VersionHistory/v1.0.0.0.aml create mode 100644 samples/SampleClassLibrary.Documentation/Content/Welcome.aml create mode 100644 samples/SampleClassLibrary.Documentation/ContentLayout.content create mode 100644 samples/SampleClassLibrary.Documentation/README.txt create mode 100644 samples/SampleClassLibrary.Documentation/SampleClassLibrary.Documentation.shfbproj create mode 100644 samples/SampleClassLibrary.Documentation/icons/Help.png create mode 100644 samples/SampleClassLibrary.Documentation/media/Function.png create mode 100644 samples/SampleClassLibrary/Advanced/IntegerArrayOperation.cs create mode 100644 samples/SampleClassLibrary/Advanced/IntegerArrayOperationExample.cs.txt create mode 100644 samples/SampleClassLibrary/IntegerOperation.cs create mode 100644 samples/SampleClassLibrary/IntegerOperationExample.cs.txt create mode 100644 samples/SampleClassLibrary/SampleClassLibrary.csproj create mode 100644 shfb-latex-tools.sln create mode 100644 src/Novacta.Shfb.LatexConfiguration/GlobalSuppressions.cs create mode 100644 src/Novacta.Shfb.LatexConfiguration/LatexConfigDlg.cs create mode 100644 src/Novacta.Shfb.LatexConfiguration/LatexConfigDlg.designer.cs create mode 100644 src/Novacta.Shfb.LatexConfiguration/LatexConfigDlg.resx create mode 100644 src/Novacta.Shfb.LatexConfiguration/Novacta.Shfb.LatexConfiguration.csproj create mode 100644 src/Novacta.Shfb.LatexConfiguration/Properties/AssemblyInfo.cs create mode 100644 src/Novacta.Shfb.LatexConfiguration/Properties/launchSettings.json create mode 100644 src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/FromByteArrayFileCreator.cs create mode 100644 src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/SharedContentItemsUpdater.cs create mode 100644 src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/StyleSheetsImporter.cs create mode 100644 src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/SvgCompatibilityConfigurator.cs create mode 100644 src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/XmlFileCreator.cs create mode 100644 src/Novacta.Shfb.LatexTools.ConsoleApp/LatexTools.cs create mode 100644 src/Novacta.Shfb.LatexTools.ConsoleApp/Novacta.Shfb.LatexTools.ConsoleApp.csproj create mode 100644 src/Novacta.Shfb.LatexTools.ConsoleApp/Program.cs create mode 100644 src/Novacta.Shfb.LatexTools.ConsoleApp/Shfb.cs create mode 100644 src/Novacta.Shfb.LatexTools.ConsoleApp/Topics.cs create mode 100644 src/Novacta.Shfb.LatexTools.Documentation/Content/LatexTools.aml create mode 100644 src/Novacta.Shfb.LatexTools.Documentation/Content/License.aml create mode 100644 src/Novacta.Shfb.LatexTools.Documentation/Content/OperatingOnIntegers.aml create mode 100644 src/Novacta.Shfb.LatexTools.Documentation/Content/VersionHistory/VersionHistory.aml create mode 100644 src/Novacta.Shfb.LatexTools.Documentation/Content/VersionHistory/v1.0.0.aml create mode 100644 src/Novacta.Shfb.LatexTools.Documentation/Content/Welcome.aml create mode 100644 src/Novacta.Shfb.LatexTools.Documentation/ContentLayout.content create mode 100644 src/Novacta.Shfb.LatexTools.Documentation/Novacta.Shfb.LatexTools.Documentation.shfbproj create mode 100644 src/Novacta.Shfb.LatexTools.Documentation/icons/Help.png create mode 100644 src/Novacta.Shfb.LatexTools.Documentation/media/LatexComponent.png create mode 100644 src/Novacta.Shfb.LatexTools.Documentation/media/LatexComponentConfig.png create mode 100644 src/Novacta.Shfb.LatexTools.Documentation/media/LatexPlugIn.png create mode 100644 src/Novacta.Shfb.LatexTools.Documentation/media/LatexStyleSelection.png create mode 100644 src/Novacta.Shfb.LatexTools/DviPngProcessor.cs create mode 100644 src/Novacta.Shfb.LatexTools/DviSvgmProcessor.cs create mode 100644 src/Novacta.Shfb.LatexTools/FileProcessor.cs create mode 100644 src/Novacta.Shfb.LatexTools/LatexComponent.cs create mode 100644 src/Novacta.Shfb.LatexTools/LatexPlugIn.cs create mode 100644 src/Novacta.Shfb.LatexTools/LatexProcessor.cs create mode 100644 src/Novacta.Shfb.LatexTools/Novacta.Shfb.LatexTools.csproj create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Configuration/BuildAssembler.config create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/conceptual_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/de-DE/conceptual_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/de-DE/reference_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/de-DE/shared_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/de-DE/shared_content_mshc.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/ja-JP/conceptual_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/ja-JP/reference_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/ja-JP/shared_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/ja-JP/shared_content_mshc.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/reference_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/ru-RU/conceptual_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/ru-RU/reference_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/ru-RU/shared_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/ru-RU/shared_content_mshc.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/shared_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/shared_content_mshc.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/zh-CN/conceptual_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/zh-CN/reference_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/zh-CN/shared_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Content/zh-CN/shared_content_mshc.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Data/bibliography.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/WebsiteContent.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/de-DE.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/en-US.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/es-ES.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/fr-FR.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/it-IT.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/ja-JP.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/ko-KR.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/pt-BR.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/ru-RU.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/zh-CHS.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/zh-CN.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/codeTemplates.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/conceptualMetadataHelp20.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/conceptualMetadataHelp30.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/conceptualTopicTypes.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/globalTemplates.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/main_conceptual.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/main_sandcastle.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/metadataHelp20.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/metadataHelp30.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/novacta_latex_tools.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/seealso_dduexml.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/skeleton.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/skeleton_conceptual.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/utilities_bibliography.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/utilities_dduexml.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/utilities_metadata.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/utilities_reference.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/CloseSearch.png create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/CollapseAll.png create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Collapsed.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Expanded.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/FillNode.aspx create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/FillNode.php create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Index.aspx create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Index.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Item.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/LoadIndexKeywords.aspx create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/LoadIndexKeywords.php create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Search.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/SearchHelp.aspx create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/SearchHelp.inc.php create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/SearchHelp.php create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Splitter.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/SyncTOC.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/TOC.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/TOC.js create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Web.Config create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/favicon.ico create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/html/GeneralError.htm create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/html/PageNotFound.htm create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/index.html create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/index.php create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/scripts/clipboard.min.js create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/CFW.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/CodeExample.png create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/alert_caution.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/alert_note.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/alert_security.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/favicon.ico create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/footer_slice.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privclass.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privdelegate.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privenumeration.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privevent.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privextension.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privfield.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privinterface.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privmethod.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privproperty.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privstructure.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protclass.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protdelegate.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protenumeration.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protevent.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protextension.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protfield.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protinterface.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protmethod.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protoperator.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protproperty.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protstructure.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubclass.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubdelegate.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubenumeration.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubevent.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubextension.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubfield.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubinterface.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubmethod.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/puboperator.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubproperty.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubstructure.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/slMobile.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/static.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/tabLeftBG.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/tabRightBG.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/xna.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/scripts/branding.js create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-Help1.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-HelpViewer.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-cs-CZ.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-de-DE.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-en-US.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-es-ES.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-fr-FR.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-it-IT.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-ja-JP.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-ko-KR.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-pl-PL.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-pt-BR.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-ru-RU.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-tr-TR.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-zh-CN.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-zh-TW.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010WithLatex.cs create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Configuration/BuildAssembler.config create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/conceptual_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/de-DE/conceptual_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/de-DE/reference_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/de-DE/shared_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/de-DE/shared_content_mshc.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/es-ES/conceptual_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/es-ES/reference_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/es-ES/shared_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/es-ES/shared_content_mshc.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/fr-FR/conceptual_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/fr-FR/reference_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/fr-FR/shared_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/fr-FR/shared_content_mshc.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/it-IT/conceptual_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/it-IT/reference_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/it-IT/shared_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/it-IT/shared_content_mshc.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/ja-JP/conceptual_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/ja-JP/reference_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/ja-JP/shared_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/ja-JP/shared_content_mshc.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/pt-BR/conceptual_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/pt-BR/reference_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/pt-BR/shared_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/pt-BR/shared_content_mshc.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/reference_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/ru-RU/conceptual_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/ru-RU/reference_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/ru-RU/shared_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/ru-RU/shared_content_mshc.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/shared_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/shared_content_mshc.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/zh-CN/conceptual_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/zh-CN/reference_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/zh-CN/shared_content.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Content/zh-CN/shared_content_mshc.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Data/bibliography.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/WebsiteContent.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/de-DE.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/en-US.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/es-ES.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/fr-FR.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/it-IT.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/ja-JP.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/ko-KR.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/pt-BR.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/ru-RU.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/zh-CHS.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/zh-CN.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/codeTemplates.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/conceptualMetadataHelp20.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/conceptualMetadataHelp30.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/conceptualTopicTypes.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/globalTemplates.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/main_conceptual.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/main_sandcastle.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/metadataHelp20.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/metadataHelp30.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/novacta_latex_tools.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/seealso_dduexml.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/skeleton.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/skeleton_conceptual.xml create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/utilities_bibliography.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/utilities_dduexml.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/utilities_metadata.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/utilities_reference.xsl create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/SearchHelp.aspx create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/SearchHelp.inc.php create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/SearchHelp.php create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/Web.Config create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/html/GeneralError.htm create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/html/PageNotFound.htm create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/icons/Search.png create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/icons/TocClose.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/icons/TocCollapsed.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/icons/TocExpanded.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/icons/TocOpen.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/index.html create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/scripts/branding-Website.js create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/scripts/clipboard.min.js create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/scripts/jquery-3.5.1.min.js create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/search.html create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/AlertCaution.png create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/AlertNote.png create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/AlertSecurity.png create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/CFW.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/CodeExample.png create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/SectionCollapsed.png create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/SectionExpanded.png create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/favicon.ico create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privclass.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privdelegate.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privenumeration.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privevent.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privextension.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privfield.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privinterface.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privmethod.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privproperty.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privstructure.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protclass.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protdelegate.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protenumeration.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protevent.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protextension.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protfield.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protinterface.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protmethod.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protoperator.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protproperty.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protstructure.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubclass.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubdelegate.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubenumeration.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubevent.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubextension.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubfield.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubinterface.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubmethod.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/puboperator.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubproperty.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubstructure.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/slMobile.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/static.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/xna.gif create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/scripts/branding.js create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-Help1.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-HelpViewer.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-Website.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-cs-CZ.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-de-DE.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-en-US.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-es-ES.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-fr-FR.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-it-IT.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-ja-JP.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-ko-KR.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-pl-PL.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-pt-BR.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-ru-RU.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-tr-TR.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-zh-CN.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-zh-TW.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding.css create mode 100644 src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013WithLatex.cs create mode 100644 src/Novacta.Shfb.LatexTools/Properties/AssemblyInfo.cs create mode 100644 src/Novacta.Shfb.LatexTools/Properties/launchSettings.json create mode 100644 src/Novacta.Shfb.LatexTools/build/Novacta.Shfb.LatexTools.props diff --git a/.gitignore b/.gitignore index ece8b6a..720ecf2 100644 --- a/.gitignore +++ b/.gitignore @@ -287,8 +287,11 @@ TSWLatexianTemp* ## VISUAL STUDIO -# Novacta.FinTech.Documentation -**/Novacta.FinTech.Documentation/Help/ +**/src/.local-nuget-debug.txt + +# Documentation +**/Novacta.Shfb.LatexTools.Documentation/Help/ +**/samples/SampleClassLibrary.Documentation/Help/ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..14a8780 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,22 @@ +### The MIT License + +Copyright (c) 2021 Giovanni Lafratta. +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..1a01dfc --- /dev/null +++ b/README.md @@ -0,0 +1,47 @@ +# Novacta.Shfb.LatexTools + +This repo contains the source code for **Novacta.Shfb.LatexTools**, a .NET library that +enables adding LaTeX content in documentation files created via the +[Sandcastle Help File Builder](https://github.com/EWSoftware/SHFB) project. + +The tools support SHFB, version 2021.10.23.0 or later. + +## Features + +* The + [LatexComponent](https://novacta.github.io/shfb-latex-tools/html/T_Novacta_Shfb_LatexTools_LatexComponent.htm) + enables the representation of LaTeX equations + as images in SHFB documentation files. + Supported image formats are + [PNG](https://en.wikipedia.org/wiki/Portable_Network_Graphics) + and + [SVG](https://en.wikipedia.org/wiki/Scalable_Vector_Graphics). +* The + [LatexPlugIn](https://novacta.github.io/shfb-latex-tools/html/T_Novacta_Shfb_LatexTools_LatexPlugIn.htm), + which is responsible to support the *SVG* image file format for the *MSHelpViewer* help output. +* The presentation styles + [VS2010WithLatex](https://novacta.github.io/shfb-latex-tools/html/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.htm) + and + [VS2013WithLatex](https://novacta.github.io/shfb-latex-tools/html/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.htm), + which add to styles *VS2010* and *VS2013*, respectively, the ability to manage LaTeX content. + +## Installation + +The library is available as a [NuGet package](https://www.nuget.org/packages/Novacta.Shfb.LatexTools). + +## Documentation + +[Adding LaTeX equations](https://novacta.github.io/shfb-latex-tools/html/47a5afe5-726c-4f74-9ab1-90740bf0a692.htm) +includes topics showing how to define LaTeX content in help files. + +Full documentation is located [here](http://novacta.github.io/shfb-latex-tools/). + +## Versioning + +For available versions, see the +[tags on this repository](https://github.com/novacta/shfb-latex-tools/tags). + +## License + +**Novacta.Shfb.LatexTools** is licensed under the +[MIT License](https://github.com/novacta/shfb-latex-tools/blob/master/LICENSE.md). diff --git a/docs/SearchHelp.aspx b/docs/SearchHelp.aspx new file mode 100644 index 0000000..40f4afe --- /dev/null +++ b/docs/SearchHelp.aspx @@ -0,0 +1,232 @@ +<%@ Page Language="C#" EnableViewState="False" %> + + diff --git a/docs/SearchHelp.inc.php b/docs/SearchHelp.inc.php new file mode 100644 index 0000000..b905e13 --- /dev/null +++ b/docs/SearchHelp.inc.php @@ -0,0 +1,173 @@ +filename = $file; + $this->pageTitle = $title; + $this->rank = $rank; + } +} + + +/// +/// Split the search text up into keywords +/// +/// The keywords to parse +/// A list containing the words for which to search +function ParseKeywords($keywords) +{ + $keywordList = array(); + $words = preg_split("/[^\w]+/", $keywords); + + foreach($words as $word) + { + $checkWord = strtolower($word); + $first = substr($checkWord, 0, 1); + if(strlen($checkWord) > 2 && !ctype_digit($first) && !in_array($checkWord, $keywordList)) + { + array_push($keywordList, $checkWord); + } + } + + return $keywordList; +} + + +/// +/// Search for the specified keywords and return the results as a block of +/// HTML. +/// +/// The keywords for which to search +/// The file list +/// The dictionary used to find the words +/// True to sort by title, false to sort by +/// ranking +/// A block of HTML representing the search results. +function Search($keywords, $fileInfo, $wordDictionary, $sortByTitle) +{ + $sb = "
    "; + $matches = array(); + $matchingFileIndices = array(); + $rankings = array(); + + $isFirst = true; + + foreach($keywords as $word) + { + if (!array_key_exists($word, $wordDictionary)) + { + return "Nothing found"; + } + $occurrences = $wordDictionary[$word]; + + $matches[$word] = $occurrences; + $occurrenceIndices = array(); + + // Get a list of the file indices for this match + foreach($occurrences as $entry) + array_push($occurrenceIndices, ($entry >> 16)); + + if($isFirst) + { + $isFirst = false; + foreach($occurrenceIndices as $i) + { + array_push($matchingFileIndices, $i); + } + } + else + { + // After the first match, remove files that do not appear for + // all found keywords. + for($idx = 0; $idx < count($matchingFileIndices); $idx++) + { + if (!in_array($matchingFileIndices[$idx], $occurrenceIndices)) + { + array_splice($matchingFileIndices, $idx, 1); + $idx--; + } + } + } + } + + if(count($matchingFileIndices) == 0) + { + return "Nothing found"; + } + + // Rank the files based on the number of times the words occurs + foreach($matchingFileIndices as $index) + { + // Split out the title, filename, and word count + $fileIndex = explode("\x00", $fileInfo[$index]); + + $title = $fileIndex[0]; + $filename = $fileIndex[1]; + $wordCount = intval($fileIndex[2]); + $matchCount = 0; + + foreach($keywords as $words) + { + $occurrences = $matches[$word]; + + foreach($occurrences as $entry) + { + if(($entry >> 16) == $index) + $matchCount += $entry & 0xFFFF; + } + } + + $r = new Ranking($filename, $title, $matchCount * 1000 / $wordCount); + array_push($rankings, $r); + + if(count($rankings) > 99) + break; + } + + // Sort by rank in descending order or by page title in ascending order + if($sortByTitle) + { + usort($rankings, "cmprankbytitle"); + } + else + { + usort($rankings, "cmprank"); + } + + // Format the file list and return the results + foreach($rankings as $r) + { + $f = $r->filename; + $t = $r->pageTitle; + $sb .= "
  1. $t
  2. "; + } + + $sb .= "rank - $x->rank; +} + +function cmprankbytitle($x, $y) +{ + return strcmp($x->pageTitle, $y->pageTitle); +} + +?> diff --git a/docs/SearchHelp.php b/docs/SearchHelp.php new file mode 100644 index 0000000..eaa1e11 --- /dev/null +++ b/docs/SearchHelp.php @@ -0,0 +1,58 @@ + + Nothing found + $val) + { + $wordDictionary[$ftiWord] = $val; + } + } + } + } + + // Perform the search and return the results as a block of HTML + $results = Search($keywords, $fileList, $wordDictionary, $sortByTitle); + echo $results; +?> \ No newline at end of file diff --git a/docs/Web.Config b/docs/Web.Config new file mode 100644 index 0000000..f0f3e6c --- /dev/null +++ b/docs/Web.Config @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/WebKI.xml b/docs/WebKI.xml new file mode 100644 index 0000000..203a88f --- /dev/null +++ b/docs/WebKI.xml @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/WebTOC.xml b/docs/WebTOC.xml new file mode 100644 index 0000000..dcbf6ca --- /dev/null +++ b/docs/WebTOC.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fti/FTI_100.json b/docs/fti/FTI_100.json new file mode 100644 index 0000000..7214741 --- /dev/null +++ b/docs/fti/FTI_100.json @@ -0,0 +1 @@ +{"demonstrate":[5505025],"determines":[655361,720897,786433,851969,917505,983041,1179649,1245185,1638401,4587521,4718593,4784129,4980737,5046273,5177345,5242881,5308417,5439489],"dvisvgmbinpath":[1572866],"discussed":[5505027],"documents":[5505025],"dvisvgmprocessor":[786435,1376258,1572868,2752513,3080195,3735554,3997698,4718593,4784135],"dvipngprocessor":[655363,1310722,1835012,2752513,2949123,3670018,4063234,4587527,4718593],"dependencies":[3866625,4456449,4849665,5046273,5242881,5439489],"distribution":[5505031],"dvipng":[2752513,4587521,5505025],"dealings":[393217],"ddue":[5505026],"data":[2359297],"documentmodelapplicator":[4456449,4849665,5242881,5439489],"distribute":[393217],"defined":[983041,2293761,3145729,3276801,5308417,5505028],"depends":[3866625,5046273],"dvisvgm":[1572865,2752513,4784129,5505026],"destination":[917505,1245185,5242881,5439489],"documentation":[65537,131073,196609,262145,327683,393218,458753,524290,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801093,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505039],"description":[131073,327681,458753,524289,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1638401,2555905,2752513,2818049,2883585,2949121,3014657,3080193,3407873,3473409,3604481,3866625,3932161,4456449,4587523,4718595,4784131,4849665,4980739,5046275,5111809,5177347,5242883,5308419,5373953,5439491,5505025],"developerconceptualdocument":[5505028],"default":[1,655361,720897,786433,851969,917505,983041,1179649,1245185,1572865,1638401,1835009,3866625,4259842,4587521,4718593,4784129,4980737,5046274,5177345,5242881,5308417,5439489,5505036],"depth":[5505035],"derived":[1179649,4456449,4653057,4849665,4915201,4980737,5242881,5439489],"document":[1769475,4456449,4849665,5242881,5439489,5505029],"dvi":[4587521,4784129,5177345,5505025],"defaultzoomfactor":[1572866],"documented":[1769473],"deal":[393217],"distance":[5505025],"directory":[2949121,3014657,3080193,3932161,3997698,4063234,4194306,4521986,4587521,4718593,4784129,5177345],"download":[5505026],"disposal":[1179650,4980738],"displayed":[5505027],"display":[5505027],"define":[589827,3145730,3276802,3604481,3801089,3866625,4259841,4325377,5046273,5308417,5505027],"dispose":[983041,1179653,2293763,4980741,5308417],"dll":[1310721,1376257,1441793,1507329,1572865,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2621441,2686977,3145729,3276801,3342337,3538945,3670017,3735553,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4521985,4587521,4653057,4718593,4784129,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489],"difference":[5505025],"distributions":[5505025],"defaultconfiguration":[3866626,4259842,5046274],"declared":[5505025],"describe":[131073],"defaultimageresolution":[1835010],"d7c6":[5505025],"damages":[393217]} \ No newline at end of file diff --git a/docs/fti/FTI_101.json b/docs/fti/FTI_101.json new file mode 100644 index 0000000..95e7755 --- /dev/null +++ b/docs/fti/FTI_101.json @@ -0,0 +1 @@ +{"exceptions":[1507329,2097153,3145729,3276801],"equations":[3801090,5505032],"executes":[983041,1966081,5308417],"equivalent":[589825,5505026],"element":[5505036],"error":[196610],"execution":[1966081,3604481,4325377,5308417,5505026],"executing":[589826,3145730,3276802,4653057,4915201,5505027],"exposes":[655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1638401,2949121,3014657,3080193,3473409,3604481,3866625,3932161,4456449,4587521,4718593,4784129,4849665,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489],"e71f0a67f7a8":[5505025],"empty":[4259841,5505025],"executioncontext":[1966083],"extensions":[5505025],"examples":[3145729,3276801],"executionpoints":[3604481,4325379,5308417],"evaluate":[1310721,1376257,2031617,2097153,2490369,3145729],"executionpoint":[4325378],"execute":[983041,1966083,5308417],"elaborations":[2752513,4718593],"entered":[3211265,5505025],"exited":[1507329,2097153],"executed":[5505026],"equal":[655361,720897,786433,851969,917505,983041,1179649,1245185,1638401,4587521,4718593,4784129,4980737,5046273,5177345,5242881,5308417,5439489],"encoding":[5505025],"event":[393217,1179650,4980738],"explicitly":[1179649,4980737],"elements":[5505033],"equation":[5505029],"environment":[5505025],"exploiting":[327681,524289,5505025],"ensure":[1179649,4980737],"exemplified":[5505026],"equals":[655361,720897,786433,851969,917505,983041,1179649,1245185,1638401,4587521,4718593,4784129,4980737,5046273,5177345,5242881,5308417,5439489],"errors":[917505,1245185,1507329,2097153,5242881,5439489],"express":[393217],"executable":[2949122,3014657,3080194,3670018,3735554,3932162,4128770,4390914,4587522,4718593,4784130,5177346,5505025],"exception":[589825,1507329,2097153,3145731,3276802,5505027],"enables":[5505027],"example":[589825,3145729,3276801,5505036],"events":[3473409,4980737]} \ No newline at end of file diff --git a/docs/fti/FTI_102.json b/docs/fti/FTI_102.json new file mode 100644 index 0000000..cb98c11 --- /dev/null +++ b/docs/fti/FTI_102.json @@ -0,0 +1 @@ +{"footnotesize":[5505025],"form":[5505027],"following":[393218,589826,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1638401,2949121,3014657,3080193,3145730,3276802,3473409,3604481,3801089,3866625,3932161,4456449,4587521,4718593,4784129,4849665,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505041],"formula":[5505025],"forall":[5505026],"filename":[1310722,1376258,1507330,2031618,2097154,2490370,4456449,4849665,5242881,5439489],"final":[5505025],"false":[1572865,5505027],"factor":[1572865],"free":[393217,655361,786433,851969,983041,1638401,2424833,4587521,4718593,4784129,5177345,5308417],"folder":[917505,1245185,3342338,5242881,5439489,5505030],"furnished":[393217],"formats":[4456449,4849665,5242881,5439489,5505026],"formulas":[2752513,3407874,4980737,5242881,5439489],"figure":[5505027],"formatted":[2752513,3407874,4980737,5242881,5439489],"function":[589827,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1638401,3145735,3276805,4587521,4718593,4784129,4980737,5111809,5046273,5177345,5242881,5308417,5373953,5439489,5505031],"follows":[5505028],"file":[327681,458755,655364,786436,851972,917505,1245185,1310723,1376259,1507331,1638404,2031619,2097157,2490371,2752514,2818051,3407873,3801089,4456451,4587524,4718597,4784132,4849667,5177348,5242884,5439492,5505031],"fileprocessor":[655363,786435,851971,1441796,1507330,1638403,2031618,2097154,2752513,2818050,2949122,3014659,3080194,3932162,4128770,4194306,4587527,4718598,4784135,5177351],"freeing":[983041,2293761,5308417],"func":[589826,3145736,3276808,5505036],"finalize":[655361,786433,851969,983042,1179649,1638401,2424835,4587521,4718593,4784129,4980737,5177345,5308418],"fitness":[393217],"factory":[720900,1703940,2228227,2752514,3866627,4259842,5046280],"follow":[1],"files":[327681,393217,458755,2752514,3407873,3801090,4456451,4587522,4653057,4784130,4849667,4915201,5177346,5242883,5308417,5439491,5505029],"font":[5505026],"format":[2752513,5308417,5505029]} \ No newline at end of file diff --git a/docs/fti/FTI_103.json b/docs/fti/FTI_103.json new file mode 100644 index 0000000..291e9a0 --- /dev/null +++ b/docs/fti/FTI_103.json @@ -0,0 +1 @@ +{"garbage":[655361,786433,851969,983041,1179649,1638401,2424833,4587521,4718593,4784129,4980737,5177345,5308417],"granted":[393217],"gui":[5505026],"giovanni":[131073,262145,327681,393218,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5111809,5046273,5177345,5242881,5308417,5373953,5439489,5505025],"gethashcode":[655361,720897,786433,851969,917505,983041,1179649,1245185,1638401,4587521,4718593,4784129,4980737,5046273,5177345,5242881,5308417,5439489],"generator":[4456449,4849665,5242881,5439489],"grouping":[4456450,4849666,5242882,5439490],"goes":[5505025],"groupid":[3473409,4980737],"group":[3473409,4980737],"general":[196609],"generated":[327681,458755,2752513,3407873,3801089],"graphics":[5505025],"given":[917505,1048577,1114113,1245185,3145730,3276801,5111809,5242881,5373953,5439489,5505027],"gettype":[655361,720897,786433,851969,917505,983041,1179649,1245185,1638401,4587521,4718593,4784129,4980737,5046273,5177345,5242881,5308417,5439489],"gets":[655361,720897,786433,851969,917505,983041,1179649,1245185,1638401,2949122,3014658,3080194,3670017,3735553,3932162,3997697,4063233,4128769,4194305,4390913,4521985,4587523,4718595,4784131,4980737,5046273,5177347,5242881,5308417,5439489]} \ No newline at end of file diff --git a/docs/fti/FTI_104.json b/docs/fti/FTI_104.json new file mode 100644 index 0000000..1f0374d --- /dev/null +++ b/docs/fti/FTI_104.json @@ -0,0 +1 @@ +{"holders":[393217],"host":[5505026],"hard":[5505025],"history":[131074,262145,3801089],"help":[327681,458755,917505,1245185,2752514,3407873,3801089,4456451,4849667,5242884,5308417,5439492,5505029],"href":[5505025],"huge":[5505026],"hash":[655361,720897,786433,851969,917505,983041,1179649,1245185,1638401,4587521,4718593,4784129,4980737,5046273,5177345,5242881,5308417,5439489],"http":[5505030],"having":[5505026],"handles":[1179649,4980737],"hierarchy":[4587521,4718593,4784129,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489]} \ No newline at end of file diff --git a/docs/fti/FTI_105.json b/docs/fti/FTI_105.json new file mode 100644 index 0000000..a9c00a9 --- /dev/null +++ b/docs/fti/FTI_105.json @@ -0,0 +1 @@ +{"item":[1769473,4456450,4849666,5242882,5439490],"integeroperation":[589827,1048579,2555905,3276804,5111812,5505033],"int":[589829,3145740,3276809,5505036],"ins":[5505028],"inserting":[5505025],"int32":[3145735,3276807,5505030],"image":[1835009,2752513,5308417,5505043],"integerarrayoperationexample":[3145729],"inside":[5505025],"integeroperationexample":[589825,3276801,5505026],"idisposable":[2293761,5308417],"inline":[5505031],"instructions":[5505025],"implements":[1179649,1966081,2293761,2359297,2424833,4325377,4980737],"integerarrayoperation":[1114115,2883585,3145733,5373956],"integer":[524289,589829,2883585,3276804,5505030],"inserts":[5505025],"inheritance":[4587521,4718593,4784129,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489],"instances":[2752513,4587521,4784129,5046273,5177345],"inserted":[5505027],"images":[5505026],"initial":[262145,5505025],"information":[327681,524289,1310721,1376257,2031617,2097153,2490369,3801089],"introduction":[5505026],"initializes":[983041,1179649,1441793,1572865,1703937,1835009,1900545,2162689,2359297,2621441,2686977,3342337,3538945,4587521,4718593,4784129,4980738,5046273,5177345,5242881,5308418,5439489],"includes":[3801090,5505025],"invalidoperationexception":[1507329,2097153],"interface":[1179649,4980737],"including":[393218],"implied":[393217],"inherited":[655368,720900,786440,851974,917511,983044,1179659,1245191,1638408,3473410,3866627,4456460,4587528,4718598,4784136,4849676,4980749,5046279,5177352,5242899,5308420,5439507],"input":[589825,3145729,3276801,5505026],"instance":[655361,720897,786433,851969,917505,983042,1179649,1245185,1441793,1572865,1638401,1703937,1835009,1900545,2228225,2424833,2621441,2686977,3342337,3473409,3538945,4587522,4718594,4784130,4980739,5046274,5177346,5242882,5308419,5439490],"included":[393217],"installed":[5505028],"iplugin":[1966081,2359297,4325377,5308417],"implemented":[720897,2228225,5046273],"initialize":[983041,1179650,2162690,2359300,4980738,5308417],"installing":[5505025],"install":[5505028],"implementations":[5505025],"insert":[5505025],"integers":[524289,589825,2555906,2883585,3145729,5111809,5373953,5505025],"ienumerable":[4325378],"invoked":[3604481,4325377,5308417],"interpreted":[5505027]} \ No newline at end of file diff --git a/docs/fti/FTI_107.json b/docs/fti/FTI_107.json new file mode 100644 index 0000000..304782c --- /dev/null +++ b/docs/fti/FTI_107.json @@ -0,0 +1 @@ +{"kind":[393217],"key":[1769475]} \ No newline at end of file diff --git a/docs/fti/FTI_108.json b/docs/fti/FTI_108.json new file mode 100644 index 0000000..a822672 --- /dev/null +++ b/docs/fti/FTI_108.json @@ -0,0 +1 @@ +{"log":[5505025],"ltx":[5505034],"linq":[2359297],"large":[5505028],"link":[1,5505025],"latexprocessor":[1638403,2490370,2752513,3342340,3932163,4390914,4521986,4718593,5177351],"load":[196609],"locations":[4456449,4849665,5242881,5439489],"latexcomponent":[720898,1179651,1703939,1769474,1900548,2162690,2228226,2752515,3473411,3866626,4259842,4980742,5046278,5505029],"length":[3145729],"licensed":[393217,3801089],"limited":[393217],"location":[4456451,4653059,4849667,4915203,5242883,5439491],"let":[5505025],"lined":[5505026],"lines":[5505025],"listed":[5505025],"looking":[3211265],"library":[327681,524289,3801093],"latex":[327682,458755,524289,1835009,2752516,3342337,3407875,3801091,4980737,5177345,5242881,5308417,5439489,5505097],"latextools":[65537,131074,196609,262145,327681,393217,458755,524289,589825,655362,720898,786434,851970,917506,983042,1048577,1114113,1179650,1245186,1310725,1376261,1441797,1507333,1572869,1638402,1703941,1769477,1835013,1900549,1966085,2031621,2097157,2162693,2228229,2293765,2359301,2424837,2490373,2555905,2621445,2686981,2752514,2818050,2883585,2949122,3014658,3080194,3145729,3211265,3276801,3342341,3407874,3473410,3538949,3604482,3670021,3735557,3801092,3866626,3932162,3997701,4063237,4128773,4194309,4259845,4325381,4390917,4456450,4521989,4587527,4653061,4718601,4784135,4849666,4915205,4980742,5046278,5111809,5177351,5242886,5308422,5373953,5439494,5505032],"list":[2818049,3866625,4456449,4849665,5046273,5242881,5439489,5505031],"latexbinpath":[1835010],"like":[5505026],"line":[655361,786433,851969,1638401,2097153,2818049,4587521,4718593,4784129,5177345,5505026],"life":[131073],"limitation":[393217],"liability":[393217],"lafratta":[131073,262145,327681,393218,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5111809,5046273,5177345,5242881,5308417,5373953,5439489,5505025],"looks":[5505026],"latexbinfolder":[3342338],"left":[5505026],"latexplugin":[983043,1966082,2293762,2359298,2424834,2686980,2752513,3604483,4325378,5308422,5505028],"locate":[3211265],"language":[5505026],"liable":[393217],"license":[393218,3801089],"longer":[3211265]} \ No newline at end of file diff --git a/docs/fti/FTI_109.json b/docs/fti/FTI_109.json new file mode 100644 index 0000000..717c474 --- /dev/null +++ b/docs/fti/FTI_109.json @@ -0,0 +1 @@ +{"mathbb":[5505030],"model":[4456449,4849665,5242881,5439489],"make":[5505025],"merge":[393217],"maml":[5505025],"mshelpviewer":[5505026],"mode":[5505037],"mathematical":[5505025],"mapsto":[5505026],"modified":[5505025],"member":[1769473],"missing":[327681],"modify":[393217,5505025],"messagelevel":[1179650,4980738],"methods":[655362,720898,786434,851970,917506,983042,1048578,1114114,1179650,1245186,1638402,4587521,4718593,4784129,4980737,5111809,5046273,5177345,5242881,5308417,5373953,5439489],"memberwiseclone":[655361,786433,851969,1179649,1638401,4587521,4718593,4784129,4980737,5177345],"merchantability":[393217],"miktex":[5505025],"message":[589825,1179650,3145730,3276801,4980738,5505025],"main":[589826,3145730,3276802,5505029],"messages":[1572865],"misspelled":[3211265],"manage":[458753,589825,3407873,3801089,5505030],"method":[589827,1310721,1376257,1507329,1769473,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2752513,2818049,2883585,3145731,3276803,5046273,5111809,5373953,5505030],"menu":[5505025],"members":[655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1638401,2949121,3014657,3080193,3473409,3604481,3866625,3932161,4456449,4587521,4718593,4784129,4849665,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489],"mit":[393217,3801089],"machine":[5505026],"microsoft":[5505026]} \ No newline at end of file diff --git a/docs/fti/FTI_110.json b/docs/fti/FTI_110.json new file mode 100644 index 0000000..0356172 --- /dev/null +++ b/docs/fti/FTI_110.json @@ -0,0 +1 @@ +{"needs":[5505025],"normalsize":[5505027],"nuget":[5505026],"nameof":[5505025],"need":[5505025],"needed":[1310721,1376257,2031617,2097153,2490369,5505026],"node":[5505025],"notes":[3801089],"namespace":[327681,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310722,1376258,1441794,1507330,1572866,1638401,1703938,1769474,1835010,1900546,1966082,2031618,2097154,2162690,2228226,2293762,2359298,2424834,2490370,2555905,2621442,2686978,2752513,2818049,2883585,2949121,3014657,3080193,3145731,3276803,3342338,3407873,3473409,3538946,3604481,3670018,3735554,3801089,3866625,3932161,3997698,4063234,4128770,4194306,4259842,4325378,4390914,4456450,4521986,4587522,4653058,4718594,4784130,4849666,4915202,4980738,5046274,5111810,5177346,5242883,5308418,5373954,5439491,5505028],"novacta":[65537,131074,196609,262145,327683,393217,458756,524290,589825,655362,720898,786434,851970,917506,983042,1048577,1114113,1179650,1245186,1310725,1376261,1441797,1507333,1572869,1638402,1703941,1769477,1835013,1900549,1966085,2031621,2097157,2162693,2228229,2293765,2359301,2424837,2490373,2555905,2621445,2686981,2752514,2818050,2883585,2949122,3014658,3080194,3145729,3211265,3276801,3342341,3407874,3473410,3538949,3604482,3670021,3735557,3801092,3866626,3932162,3997701,4063237,4128773,4194309,4259845,4325381,4390917,4456450,4521989,4587527,4653061,4718601,4784135,4849666,4915205,4980742,5046278,5111809,5177351,5242886,5308422,5373953,5439494,5505034],"notice":[393218],"negative":[5505025],"new":[1441793,1572865,1703937,1835009,1900545,2228225,2621441,2686977,3145730,3342337,3538945,4587521,4718593,4784129,4980737,5046273,5177345,5242881,5308417,5439489,5505025],"net":[3801089,5505026],"null":[589829,3145740,3276806,5505031],"november":[262145],"necessary":[1179649,4980737],"noninfringement":[393217],"namespaces":[327682,458754,524290,3801089]} \ No newline at end of file diff --git a/docs/fti/FTI_111.json b/docs/fti/FTI_111.json new file mode 100644 index 0000000..de2d4b9 --- /dev/null +++ b/docs/fti/FTI_111.json @@ -0,0 +1 @@ +{"overrides":[655361,720897,786433,983041,1179650,1638401,2949122,3080194,3866625,3932162,4456449,4587523,4784131,4849665,4980738,5046274,5177347,5242881,5308417,5439489],"optional":[3473409,4980737],"oncomponentevent":[1179649,4980737],"order":[5505026],"operation":[3276801,5505025],"one":[5505028],"obtained":[3801089],"overriding":[5505025],"occurred":[196609],"operations":[524290,589825,655361,786433,851969,983041,1638401,2424833,2555905,2883585,3145729,4587521,4718593,4784129,5177345,5308417,5505025],"operands":[1114113,3145739,5373953],"operand":[589829,1048577,3145733,3276809,5111809,5505034],"option":[5505041],"overload":[1507329,2097153,2818049],"operator":[589826,3145730,3276802,5505026],"operatingonintegers":[5505025],"options":[5505025],"obtaining":[393217],"override":[1310721,1376257,1769473,2162689,2228225,2424833,2490369,3670017,3735553,3997697,4063233,4259841,4390913,4521985,4653057,4915201],"org":[5505026],"open":[5505027],"object":[655371,720903,786443,851979,917511,983048,1179659,1245191,1638411,2424833,4587532,4718604,4784140,4980748,5046280,5111809,5177356,5242888,5308425,5373953,5439496],"output":[589825,1507329,2097153,3145729,3276801,5505027],"operating":[589825],"overridden":[1179649,3866626,4259841,4456449,4653057,4849665,4915201,4980737,5046274,5242881,5439489,5505029],"operate":[589829,1048577,1114113,2555905,2883585,3145735,3276806,5111810,5373954,5505033],"outputs":[5505025]} \ No newline at end of file diff --git a/docs/fti/FTI_112.json b/docs/fti/FTI_112.json new file mode 100644 index 0000000..2731138 --- /dev/null +++ b/docs/fti/FTI_112.json @@ -0,0 +1 @@ +{"performs":[983041,1179649,1769473,2293761,4980737,5308417],"pagestyle":[5505025],"points":[3604481,3801089,4325377,5308417],"presentation":[458753,917507,1245187,3407875,4456455,4653057,4849671,4915201,5242891,5439499,5505028],"percentages":[5505025],"persists":[196609],"presentationstylesettings":[917507,1245187,4456461,4849677,5242898,5439506],"perform":[655361,786433,851969,983041,1638401,2424833,4587521,4718593,4784129,5177345,5308417],"protected":[1441793,1900545,2424833],"parameter":[589825,3145730,3276801,5505025],"packages":[5505028],"png":[4587521,5505025],"provided":[393217],"plug":[983042,1966081,2359298,3604481,4325377,4456449,4849665,5242881,5308419,5439489,5505029],"pop":[5505025],"page":[196609,3211268,5505025],"placement":[3866626,5046274],"permission":[393218],"permit":[393217],"particular":[393217,5505025],"persons":[393217],"printed":[1572865],"properties":[2949122,3014658,3080194,3473410,3604482,3866626,3932162,4456450,4587521,4718593,4784129,4849666,4980737,5046273,5177345,5242881,5308417,5439489,5505027],"provides":[458754,524290,589825,2555906,2752516,2883586,3407873,3801089,4980737,5046273,5111809,5308417,5373953,5505026],"processed":[1310721,1376257,2031617,2097153,2490369,5505026],"package":[5505027],"portions":[393217],"purpose":[393217,5505025],"property":[3473409,3670018,3735554,3866626,3997698,4063234,4128770,4194306,4259843,4325378,4390914,4456451,4521986,4653058,4849667,4915202,4980737,5046274,5242883,5439491],"paths":[4456449,4849665,5242881,5439489],"properly":[1179649,4980737],"paramref":[5505025],"plugindependencies":[4456449,4849665,5242881,5439489],"percentage":[5505027],"processing":[5505025],"param":[5505028],"proper":[1179649,4980737],"processor":[655362,786434,851970,1507330,1638402,2097154,2818050,2949122,3014658,3080194,3670018,3735554,3932162,3997697,4063233,4128770,4194305,4390914,4521985,4587524,4718596,4784132,5177348],"publish":[393217],"projects":[5505025],"predefined":[5505026],"public":[589826,1310721,1376257,1507329,1572865,1703937,1769473,1835009,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2490369,2621441,2686977,3145731,3276803,3342337,3538945,3670017,3735553,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4521985,4587521,4653057,4718593,4784129,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505028],"process":[655361,786433,851969,983042,1310723,1376259,1507330,1638401,1966081,2031619,2097153,2359298,2490371,2752516,3604481,4325377,4587522,4718594,4784130,5177346,5308419,5505026],"presentationstyles":[458753,917505,1245185,2621442,3407873,3538946,4456449,4653058,4849665,4915202,5242883,5439491],"para":[5505032],"path":[917505,1245185,1572866,1835010,2949121,3014657,3080193,3670018,3735554,3932161,4128770,4390914,4456451,4587521,4653057,4718593,4784129,4849667,4915201,5177345,5242884,5439492,5505025],"person":[393217],"project":[131073,3801089,5505039],"produces":[589825,3145729,3276801,5505025],"provide":[327682,458753,524289,720897,2228225,3866625,4456449,4653057,4849665,4915201,5046274,5242881,5439489],"printout":[5505026],"prefix":[5505025],"preamble":[5505026],"processors":[5505025],"parameters":[1310721,1376257,1507329,1572865,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2359297,2490369,3145729,3276801,3342337],"prefixing":[5505025]} \ No newline at end of file diff --git a/docs/fti/FTI_113.json b/docs/fti/FTI_113.json new file mode 100644 index 0000000..f699506 --- /dev/null +++ b/docs/fti/FTI_113.json @@ -0,0 +1 @@ +{"qualify":[5505025],"qualified":[5505025],"qualifyhint":[5505027]} \ No newline at end of file diff --git a/docs/fti/FTI_114.json b/docs/fti/FTI_114.json new file mode 100644 index 0000000..478d9bb --- /dev/null +++ b/docs/fti/FTI_114.json @@ -0,0 +1 @@ +{"responsible":[5505025],"redirectfileprocessors":[1572866],"represents":[655361,720897,786433,851969,917505,983041,1179649,1245185,1638401,2752516,3407874,4587522,4718594,4784130,4980737,5046273,5177346,5242882,5308417,5439490],"result":[589828,3145732,3276805,5505029],"required":[4456449,4849665,5242881,5439489,5505026],"resources":[131073,262145,655361,786433,851969,983042,1638401,2293761,2424833,3801089,4587521,4718593,4784129,5177345,5308418],"represented":[2752513,5308417,5505025],"reclaimed":[655361,786433,851969,983041,1638401,2424833,4587521,4718593,4784129,5177345,5308417],"revisionnumber":[5505026],"reported":[5505025],"results":[3145733],"releasing":[983041,2293761,5308417],"representation":[1310721,1376257,2031617,2490369,5505026],"resetting":[983041,2293761,5308417],"remarks":[4587521,4784129,5177345],"runs":[655362,786434,851970,1507329,1638402,2097153,2818050,4587522,4718594,4784130,5177346],"represent":[458753,2752513,5505025],"referencebuildplacement":[3866625,5046273],"restriction":[393217],"read":[3473409,3866626,4259841,4456451,4849667,4980737,5046274,5242883,5439491],"released":[262145],"referred":[5505027],"respectively":[5505025],"right":[5505029],"rights":[393218],"resolvepath":[917505,1245185,5242881,5439489],"resolution":[1835009],"return":[1310721,1376257,1507329,2031617,2097153,2228225,2490369,3145729,3276801,4653057,4915201,5505025],"random":[5505025],"report":[1179650,4980738],"redirection":[5505025],"returned":[5505025],"relatedtopics":[5505026],"redirect":[5505025],"requested":[3211265],"returns":[655362,720897,786434,851970,917505,983041,1179649,1245185,1310721,1376257,1638402,2031617,2490369,3473409,3604481,4259841,4325377,4456451,4587522,4718594,4784130,4849667,4980738,5046273,5177346,5242884,5308418,5439492,5505026],"resolve":[917505,1245185,4456449,4849665,5242882,5439490],"relative":[4456449,4849665,5242881,5439489],"reference":[655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2621441,2686977,2752513,2818049,2949121,3014657,3080193,3145729,3276801,3342337,3407874,3473410,3538945,3604481,3670017,3735553,3801091,3866626,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980739,5111809,5046274,5177345,5242882,5308417,5373953,5439490,5505025],"reserved":[393217],"resourceitemspath":[4456449,4849665,5242881,5439489],"rightarrow":[5505026],"resource":[4456450,4849666,5242882,5439490],"redirected":[1],"release":[262146,3801089,5505026]} \ No newline at end of file diff --git a/docs/fti/FTI_115.json b/docs/fti/FTI_115.json new file mode 100644 index 0000000..d2c074d --- /dev/null +++ b/docs/fti/FTI_115.json @@ -0,0 +1 @@ +{"summary":[327681,5505028],"select":[131073,5505030],"squares":[589825,3145729,3276801,5505025],"source":[5505028],"squared":[589825,3145729,3276801,5505026],"shows":[5505027],"showed":[5505025],"supportedformats":[4456449,4849665,5242881,5439489],"shown":[5505026],"separated":[5505025],"styles":[458753,3407873,5505027],"stored":[4456450,4849666,5242882,5439490],"small":[5505025],"site":[196609],"size":[5505034],"selecting":[5505025],"scaling":[5505025],"search":[65537,3211265,5505025],"studio":[5505026],"selected":[5505026],"supportsnamespacegrouping":[4456449,4849665,5242881,5439489],"standalone":[5505026],"specific":[655361,786433,851969,1179649,1310721,1376257,1638401,2031617,2097154,2490369,2818049,4587521,4718593,4784129,4980737,5177345,5505028],"snippet":[4456449,4849665,5242881,5439489],"svg":[2752513,4784129,5308417,5505029],"sample":[327681,524289,3801089],"supported":[4456451,4849667,5242883,5439491,5505028],"surrounding":[5505025],"say":[589825,3145729,3276801,5505026],"shfblatextools":[5505026],"supportscodesnippetgrouping":[4456449,4849665,5242881,5439489],"sandcastle":[327681,458755,2752513,3407873,3801089],"schemas":[5505026],"shall":[393218],"substantial":[393217],"square":[589826,3145731,3276802,5505026],"sets":[5505025],"sealed":[5046273,5242881,5308417,5439489],"sell":[393217],"syntax":[1310721,1376257,1441793,1507329,1572865,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2621441,2686977,3145729,3276801,3342337,3538945,3670017,3735553,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4521985,4587521,4653057,4718593,4784129,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489],"sort":[65537],"sized":[5505025],"save":[5505025],"scriptsize":[5505026],"string":[655366,720897,786438,851972,917505,983041,1179653,1245185,1310727,1376263,1507333,1572870,1638406,1769474,1835014,2031623,2097160,2490375,2818051,3342340,3670018,3735554,3997698,4063234,4128770,4194306,4259843,4390914,4521986,4587526,4653058,4718596,4784134,4915202,4980741,5046273,5177350,5242881,5308417,5439489],"scale":[5505030],"sorry":[196609,3211265],"sampleclasslibrary":[327681,524291,589825,1048577,1114113,2555905,2883585,3145734,3276805,3801089,5111813,5373957,5505034],"system":[589825,1310722,1376258,1507329,1572868,1769474,1835011,2031618,2097154,2162689,2359297,2490370,3145731,3276803,3342338,4587521,4718593,4784129,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505034],"start":[983041,2359297,5308417,5505025],"shallow":[655361,786433,851969,1179649,1638401,4587521,4718593,4784129,4980737,5177345],"software":[393226],"supports":[2752513,3407874,3801089,4718593,5242881,5439489],"support":[327681,458753,524290,2555905,2752514,2883585,4980737,5308417,5505026],"section":[131073,5505027],"sublicense":[393217],"shfb":[65537,131074,196609,262145,327683,393217,458756,524290,589825,655362,720898,786434,851970,917506,983042,1048577,1114113,1179650,1245186,1310725,1376261,1441797,1507333,1572869,1638402,1703941,1769477,1835013,1900549,1966085,2031621,2097157,2162693,2228229,2293765,2359301,2424837,2490373,2555905,2621445,2686981,2752514,2818050,2883585,2949122,3014658,3080194,3145729,3211265,3276801,3342341,3407874,3473410,3538949,3604482,3670021,3735557,3801093,3866626,3932162,3997701,4063237,4128773,4194309,4259845,4325381,4390917,4456450,4521989,4587527,4653061,4718601,4784135,4849666,4915205,4980742,5046278,5111809,5177351,5242886,5308422,5373953,5439494,5505043],"sizing":[5505025],"subject":[393217],"style":[917507,1245187,3407874,4456455,4653057,4849671,4915201,5242891,5439499,5505027],"specified":[655364,720897,786436,851972,917505,983041,1048577,1114113,1179650,1245185,1310721,1376257,1507329,1638404,1900545,2031617,2097153,2490369,2818050,3145729,3276801,4587524,4718596,4784132,4980739,5111809,5046273,5177348,5242881,5308417,5373953,5439489,5505025],"squaring":[589826,3145732,3276802,5505026],"static":[3145729,3276801,5111809,5373953,5505026],"set":[3473409,3866626,4456457,4849673,4980737,5046274,5242889,5439497,5505033],"specify":[5505027],"showing":[3801089],"sure":[5505025],"serves":[655361,720897,786433,851969,917505,983041,1179649,1245185,1638401,4587521,4718593,4784129,4980737,5046273,5177345,5242881,5308417,5439489]} \ No newline at end of file diff --git a/docs/fti/FTI_116.json b/docs/fti/FTI_116.json new file mode 100644 index 0000000..9b0ffca --- /dev/null +++ b/docs/fti/FTI_116.json @@ -0,0 +1 @@ +{"tostring":[655361,720897,786433,851969,917505,983041,1179649,1245185,1638401,4587521,4718593,4784129,4980737,5046273,5177345,5242881,5308417,5439489],"terms":[393217],"text":[5505032],"tab":[5505029],"tag":[5505025],"topics":[131073,2752513,3407874,3801090,4980737,5242881,5439489,5505029],"top":[655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1638401,2818049,2949121,3014657,3080193,3211265,3473409,3604481,3866625,3932161,4456449,4587523,4718595,4784131,4849665,4980739,5046275,5111809,5177347,5242883,5308419,5373953,5439491],"tort":[393217],"tags":[5505025],"typo":[3211265],"transformcomponentarguments":[4456449,4849665,5242881,5439489],"tasks":[983041,1179649,1769473,2293761,4980737,5308417],"tiny":[5505025],"tested":[5505025],"throw":[5505025],"type":[655362,720898,786434,851970,917506,983042,1048577,1114113,1179650,1245186,1310723,1376259,1507330,1572868,1638402,1769474,1835011,1900545,1966081,2031619,2097155,2162689,2228225,2359298,2490371,2949121,3014657,3080193,3145731,3276803,3342338,3473409,3604481,3670017,3735553,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587522,4653057,4718594,4784130,4849665,4915201,4980738,5046274,5111809,5177346,5242882,5308418,5373953,5439490,5505026],"title":[65537,5505025],"types":[458753,2752513,3801090],"tools":[327681,524289,5505025],"transform":[4456449,4849665,5242881,5439489],"typically":[4653057,4915201],"try":[196609,589825,655361,786433,851969,983041,1638401,2424833,3145730,3211265,3276801,4587521,4718593,4784129,5177345,5308417,5505025],"true":[1572865],"toolresourceitemspath":[4456449,4849665,5242881,5439489],"txt":[5505025],"tex":[5177345,5505026],"tool":[5505025],"table":[4456449,4849665,5242881,5439489,5505025],"thoroughly":[5505025],"topi":[5505025],"topic":[1,1179649,4980737,5505030],"targets":[5505025],"taken":[5505025]} \ No newline at end of file diff --git a/docs/fti/FTI_117.json b/docs/fti/FTI_117.json new file mode 100644 index 0000000..3acc7b9 --- /dev/null +++ b/docs/fti/FTI_117.json @@ -0,0 +1 @@ +{"using":[589825,3145730,3276801,3473409,4980737,5505032],"used":[917507,1179651,1245187,3473409,3866626,4456458,4849674,4980740,5046274,5242893,5439501],"utf":[5505025],"url":[3211265],"unmanaged":[983041,2293761,5308417]} \ No newline at end of file diff --git a/docs/fti/FTI_118.json b/docs/fti/FTI_118.json new file mode 100644 index 0000000..20ddbbb --- /dev/null +++ b/docs/fti/FTI_118.json @@ -0,0 +1 @@ +{"vs2010":[3407873,5439489,5505027],"various":[131073],"vs2013":[3407873,5242881,5505026],"visual":[5505026],"vs2010withlatex":[917507,2621444,3407873,4456451,4653058,5439494,5505025],"viewer":[2752513,5308417],"variable":[5505025],"version":[131076,262147,1310721,1376257,1441793,1507329,1572865,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2621441,2686977,3145729,3276801,3342337,3538945,3670017,3735553,3801090,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4521985,4587521,4653057,4718593,4784129,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505028],"value":[589825,1310721,1376257,1507329,2031617,2097153,2228225,2490369,3145731,3276802,3670017,3735553,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4521985,4653057,4915201,5505030],"vs2013withlatex":[1245187,3407873,3538948,4849667,4915202,5242886,5505025],"void":[589825,1769473,1966081,2162689,2293761,2359297,2424833,3145729,3276801,5505025],"values":[589825,5505028],"validation":[589825,3145729,3276801,5505026]} \ No newline at end of file diff --git a/docs/fti/FTI_119.json b/docs/fti/FTI_119.json new file mode 100644 index 0000000..592fea0 --- /dev/null +++ b/docs/fti/FTI_119.json @@ -0,0 +1 @@ +{"workingdirectory":[2949122,3014657,3080194,3932162,3997698,4063234,4194306,4521986,4587522,4718593,4784130,5177346],"write":[5505025],"welcome":[131073,3801089],"workingpath":[1572866,1835010],"writeline":[589829,3145735,3276805,5505029],"way":[5505025],"www":[5505028],"want":[5505026],"warranty":[393217],"window":[5505026],"writemessage":[1179650,4980738],"warranties":[393217],"working":[1572865,1835009,2949121,3014657,3080193,3342337,3932161,3997698,4063234,4194306,4521986,4587521,4718593,4784129,5177345],"works":[5505025],"workingfolder":[3342338],"web":[3211265]} \ No newline at end of file diff --git a/docs/fti/FTI_120.json b/docs/fti/FTI_120.json new file mode 100644 index 0000000..a2d35a2 --- /dev/null +++ b/docs/fti/FTI_120.json @@ -0,0 +1 @@ +{"xmldocument":[1179649,1769474,4980737],"xlink":[5505029],"xelement":[2359299],"xpath":[2162689],"xmlns":[5505030],"xpathnavigator":[1179649,2162690,4980737],"xml":[1769474,2162689,2359297,2752513,3407874,4980737,5242881,5439489,5505035],"xsl":[5505026]} \ No newline at end of file diff --git a/docs/fti/FTI_122.json b/docs/fti/FTI_122.json new file mode 100644 index 0000000..c68ed44 --- /dev/null +++ b/docs/fti/FTI_122.json @@ -0,0 +1 @@ +{"zoom":[1572865]} \ No newline at end of file diff --git a/docs/fti/FTI_97.json b/docs/fti/FTI_97.json new file mode 100644 index 0000000..6ac5222 --- /dev/null +++ b/docs/fti/FTI_97.json @@ -0,0 +1 @@ +{"applies":[1048577,1114113,3145729,3276801,5111809,5373953,5505025],"applied":[589825,3145729,3276801,5505026],"available":[3211265,5505029],"assume":[5505026],"agreement":[393217],"active":[5505025],"apply":[589826,1179650,1769474,3145732,3276802,4980738,5505027],"array":[1114113,3145735,5373953],"authors":[393217],"allowed":[5505025],"add":[1179649,4980737,5505030],"additional":[1310721,1376257,2031617,2097153,2490369,5505025],"aml":[5505025],"automatically":[1],"addition":[589825,3145729,3276801,5505027],"a58a":[5505025],"action":[393217,3866626,5046274],"added":[5505030],"applicator":[4456449,4849665,5242881,5439489],"api":[4456449,4849665,5242881,5439489],"arguments":[655364,786436,851971,1179649,1310725,1376261,1638404,2031621,2097154,2490373,2818049,4456449,4587524,4718595,4784132,4849665,4980737,5177348,5242881,5439489],"adopting":[5505025],"assembler":[1900546,3473409,4980738],"apitableofcontentsgenerator":[4456449,4849665,5242881,5439489],"attribute":[5505030],"authoring":[5505026],"amsmath":[5505025],"arising":[393217],"advanced":[524289,1114113,2883585,3145732,5373955],"according":[5505026],"application":[983041,2293761,5308417],"amsfonts":[5505025],"assembly":[262145,1310721,1376257,1441793,1507329,1572865,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2621441,2686977,3145729,3276801,3342337,3538945,3670017,3735553,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4521985,4587521,4653058,4718593,4784129,4915202,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489],"article":[5505025],"ability":[5505025],"able":[458754,2752513,3407873,5505025],"address":[3211265],"arrays":[524289,2883586,5373953],"associated":[393217,983041,2293761,5308417,5505025],"adding":[3801089,5505028],"applying":[655361,786433,851969,1638401,2097153,2818049,4587521,4718593,4784129,5177345,5505025],"accordingly":[5505025],"additionalinfo":[1310722,1376258,2031618,2097154,2490370],"argumentnullexception":[3145729,3276801,5505026],"administrator":[196609],"aware":[5505025],"attributes":[5505026],"abstract":[2031617,4128769,4194305,4718593],"allows":[655361,786433,851969,983041,1638401,2424833,4587521,4718593,4784129,5177345,5308417]} \ No newline at end of file diff --git a/docs/fti/FTI_98.json b/docs/fti/FTI_98.json new file mode 100644 index 0000000..63b4dbd --- /dev/null +++ b/docs/fti/FTI_98.json @@ -0,0 +1 @@ +{"buildprocess":[2359301],"b10d4d75":[5505025],"box":[3211265],"binary":[5505026],"base":[4456449,4849665,5242881,5439489],"based":[3407874,5242881,5439489,5505025],"baseline":[5505026],"buildassembler":[1900546,3473409,4456450,4849666,4980737,5242882,5439490],"basic":[5505027],"builds":[3866626,5046274],"buildcomponentcore":[1179656,2228226,3473410,4980748],"buildcomponentfactory":[720897,3866628,5046279],"binaries":[5505025],"bool":[1572865],"b492":[5505025],"b9e5b6e4bb4d":[5505025],"build":[720897,983042,1179651,1900546,1966081,2162689,2228226,2359298,3473409,3604481,3866626,4259841,4325377,4980741,5046275,5308419,5505028],"button":[5505027],"basepath":[4456449,4849665,5242881,5439489],"buildassemblerconfiguration":[4456449,4849665,5242881,5439489],"body":[5505025],"behavior":[5505028],"buildassemblercore":[1900546],"boolean":[1179649,1572865,4980737],"bin":[1572865,1835009,3342337,5505027],"builder":[327681,458755,2752513,3407873,3801089,4456449,4849665,5242881,5439489]} \ No newline at end of file diff --git a/docs/fti/FTI_99.json b/docs/fti/FTI_99.json new file mode 100644 index 0000000..566bfad --- /dev/null +++ b/docs/fti/FTI_99.json @@ -0,0 +1 @@ +{"convert":[4587521,4784129,5177345],"contentfiles":[4456449,4849665,5242881,5439489],"copies":[393218],"class":[589826,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441794,1507329,1572866,1638401,1703938,1769473,1835010,1900546,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621442,2686978,2752513,2818049,2883585,2949121,3014657,3080193,3145730,3276802,3342338,3407873,3473409,3538946,3604481,3670017,3735553,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587523,4653057,4718595,4784131,4849665,4915201,4980739,5046275,5111810,5177347,5242883,5308419,5373954,5439491,5505028],"clicking":[5505025],"component":[720897,1179652,1769473,2162690,2228226,3473410,3866626,4259841,4456449,4849665,4980742,5046275,5242881,5439489,5505029],"com":[5505026],"check":[589825,917505,1245185,3145730,3211265,3276801,5242881,5439489,5505027],"condition":[1507329,2097153,3145729,3276801],"controls":[5505026],"creates":[655361,786433,851969,1179649,1638401,4587521,4718593,4784129,4980737,5177345],"created":[327681,524289,5505025],"controlled":[5505025],"code":[327681,524289,1179649,4456449,4849665,4980737,5242881,5439489,5505030],"contain":[3211265],"catch":[589825,3145730,3276801,5505025],"create":[720898,2228226,2752513,5046275,5505025],"content":[327681,458755,917505,1245185,2752515,3407875,3801090,3866626,4456451,4849667,4980737,5046274,5242885,5308417,5439493,5505034],"contains":[3801089],"cleanup":[655361,786433,851969,983041,1638401,2424833,4587521,4718593,4784129,5177345,5308417],"changes":[131074,262145],"copyhelpcontent":[917505,1245185,5242881,5439489],"click":[5505030],"conditions":[393217],"copyright":[131073,262145,327681,393220,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5111809,5046273,5177345,5242881,5308417,5373953,5439489,5505025],"connection":[393217],"contained":[5505026],"contact":[196609],"change":[5505025],"classes":[1179649,2555905,2752513,2883585,3407873,4456449,4653057,4849665,4915201,4980737,5242881,5439489],"cref":[5505026],"console":[589829,3145735,3276805,5505030],"componentevent":[1179649,4980737],"corresponding":[5505028],"configuring":[5505025],"conceptualbuildplacement":[3866625,5046273],"conceptual":[2752513,3407874,3801089,3866625,4980737,5046273,5242881,5439489,5505028],"claim":[393217],"commands":[5505026],"copy":[393218,589825,655361,786433,851969,917505,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2621441,2686977,3145730,3276802,3342337,3538945,3670017,3735553,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4521985,4587522,4653057,4718594,4784130,4915201,4980738,5046273,5111809,5177346,5242882,5308417,5373953,5439490,5505032],"contextual":[5505025],"coded":[5505025],"containing":[327681,524289],"contract":[393217],"choice":[5505026],"command":[655361,786433,851969,1638401,2097153,2818049,4587521,4718593,4784129,5177345,5505026],"converter":[5505027],"codeexamples":[589825,3145729,3276801,5505025],"context":[1966083],"components":[3866625,5046273,5505027],"charge":[393217],"comments":[2752513,3407874,4980737,5242881,5439489,5505027],"constructors":[4587521,4718593,4784129,4980737,5046273,5177345,5242881,5308417,5439489],"codeentityreference":[5505030],"configuration":[2162691,2359299,3866625,4259841,4456449,4849665,5046273,5242881,5439489,5505032],"custom":[5505025],"checkforerrors":[917505,1245185,5242881,5439489],"configured":[5505025],"correction":[5505028],"cdata":[5505025],"constructor":[1441793,1572865,1703937,1835009,1900545,2621441,2686977,3342337,3538945],"currently":[5505025],"collection":[655361,786433,851969,983041,1179649,1638401,2424833,3604481,4325377,4587521,4718593,4784129,4980737,5177345,5308418],"configure":[5505025],"committed":[5505026],"checked":[589825,3145729,3276801,5505027],"current":[655364,720899,786436,851972,917507,983043,1179652,1245187,1638404,1966081,2359297,3801089,4587524,4718596,4784132,4980740,5046275,5177348,5242883,5308419,5439491,5505025]} \ No newline at end of file diff --git a/docs/fti/FTI_Files.json b/docs/fti/FTI_Files.json new file mode 100644 index 0000000..a46df11 --- /dev/null +++ b/docs/fti/FTI_Files.json @@ -0,0 +1 @@ +["Novacta.Shfb.LatexTools Documentation - Redirect\u0000index.html\u000018","Novacta.Shfb.LatexTools Documentation - Search\u0000search.html\u000013","Version History\u0000html/7abd97df-f098-4afa-9f9c-2255d3e61a33.htm\u000058","General Error\u0000html/GeneralError.htm\u000034","Version 1.0.0\u0000html/cf22a47c-7bfd-4e16-a103-b99e83335270.htm\u000043","Namespaces\u0000html/G_.htm\u000066","License agreement\u0000html/77c2fac9-a810-4e5b-ba0e-afff50a42467.htm\u0000233","Novacta.Shfb Namespaces\u0000html/G_Novacta_Shfb.htm\u000075","SampleClassLibrary Namespaces\u0000html/G_SampleClassLibrary.htm\u000055","Operating on integers\u0000html/b10d4d75-3729-4247-a58a-b9e5b6e4bb4d.htm\u0000312","DviPngProcessor Methods\u0000html/Methods_T_Novacta_Shfb_LatexTools_DviPngProcessor.htm\u0000217","Factory Methods\u0000html/Methods_T_Novacta_Shfb_LatexTools_LatexComponent_Factory.htm\u0000122","DviSvgmProcessor Methods\u0000html/Methods_T_Novacta_Shfb_LatexTools_DviSvgmProcessor.htm\u0000217","FileProcessor Methods\u0000html/Methods_T_Novacta_Shfb_LatexTools_FileProcessor.htm\u0000192","VS2010WithLatex Methods\u0000html/Methods_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.htm\u0000163","LatexPlugIn Methods\u0000html/Methods_T_Novacta_Shfb_LatexTools_LatexPlugIn.htm\u0000171","IntegerOperation Methods\u0000html/Methods_T_SampleClassLibrary_IntegerOperation.htm\u000043","IntegerArrayOperation Methods\u0000html/Methods_T_SampleClassLibrary_Advanced_IntegerArrayOperation.htm\u000046","LatexComponent Methods\u0000html/Methods_T_Novacta_Shfb_LatexTools_LatexComponent.htm\u0000306","VS2013WithLatex Methods\u0000html/Methods_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.htm\u0000163","DviPngProcessor.Arguments Method\u0000html/M_Novacta_Shfb_LatexTools_DviPngProcessor_Arguments.htm\u0000117","DviSvgmProcessor.Arguments Method\u0000html/M_Novacta_Shfb_LatexTools_DviSvgmProcessor_Arguments.htm\u0000117","FileProcessor Constructor\u0000html/M_Novacta_Shfb_LatexTools_FileProcessor__ctor.htm\u000063","FileProcessor.Run Method (String)\u0000html/M_Novacta_Shfb_LatexTools_FileProcessor_Run.htm\u0000108","DviSvgmProcessor Constructor\u0000html/M_Novacta_Shfb_LatexTools_DviSvgmProcessor__ctor.htm\u0000126","LatexProcessor Methods\u0000html/Methods_T_Novacta_Shfb_LatexTools_LatexProcessor.htm\u0000217","LatexComponent.Factory Constructor\u0000html/M_Novacta_Shfb_LatexTools_LatexComponent_Factory__ctor.htm\u000067","LatexComponent.Apply Method\u0000html/M_Novacta_Shfb_LatexTools_LatexComponent_Apply.htm\u000098","DviPngProcessor Constructor\u0000html/M_Novacta_Shfb_LatexTools_DviPngProcessor__ctor.htm\u0000105","LatexComponent Constructor\u0000html/M_Novacta_Shfb_LatexTools_LatexComponent__ctor.htm\u000081","LatexPlugIn.Execute Method\u0000html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Execute.htm\u000084","FileProcessor.Arguments Method\u0000html/M_Novacta_Shfb_LatexTools_FileProcessor_Arguments.htm\u0000117","FileProcessor.Run Method (String, String)\u0000html/M_Novacta_Shfb_LatexTools_FileProcessor_Run_1.htm\u0000137","LatexComponent.Initialize Method\u0000html/M_Novacta_Shfb_LatexTools_LatexComponent_Initialize.htm\u000078","LatexComponent.Factory.Create Method\u0000html/M_Novacta_Shfb_LatexTools_LatexComponent_Factory_Create.htm\u000081","LatexPlugIn.Dispose Method\u0000html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Dispose.htm\u000075","LatexPlugIn.Initialize Method\u0000html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Initialize.htm\u0000113","LatexPlugIn.Finalize Method\u0000html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Finalize.htm\u000082","LatexProcessor.Arguments Method\u0000html/M_Novacta_Shfb_LatexTools_LatexProcessor_Arguments.htm\u0000117","SampleClassLibrary Namespace\u0000html/N_SampleClassLibrary.htm\u000033","VS2010WithLatex Constructor\u0000html/M_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex__ctor.htm\u000066","LatexPlugIn Constructor\u0000html/M_Novacta_Shfb_LatexTools_LatexPlugIn__ctor.htm\u000063","Novacta.Shfb.LatexTools Namespace\u0000html/N_Novacta_Shfb_LatexTools.htm\u0000108","FileProcessor.Run Method\u0000html/Overload_Novacta_Shfb_LatexTools_FileProcessor_Run.htm\u000061","SampleClassLibrary.Advanced Namespace\u0000html/N_SampleClassLibrary_Advanced.htm\u000037","DviPngProcessor Properties\u0000html/Properties_T_Novacta_Shfb_LatexTools_DviPngProcessor.htm\u000066","FileProcessor Properties\u0000html/Properties_T_Novacta_Shfb_LatexTools_FileProcessor.htm\u000052","DviSvgmProcessor Properties\u0000html/Properties_T_Novacta_Shfb_LatexTools_DviSvgmProcessor.htm\u000066","IntegerArrayOperation.Operate Method\u0000html/M_SampleClassLibrary_Advanced_IntegerArrayOperation_Operate.htm\u0000595","Page Not Found\u0000html/PageNotFound.htm\u000068","IntegerOperation.Operate Method\u0000html/M_SampleClassLibrary_IntegerOperation_Operate.htm\u0000406","LatexProcessor Constructor\u0000html/M_Novacta_Shfb_LatexTools_LatexProcessor__ctor.htm\u000091","Novacta.Shfb.LatexTools.PresentationStyles Namespace\u0000html/N_Novacta_Shfb_LatexTools_PresentationStyles.htm\u000080","LatexComponent Properties\u0000html/Properties_T_Novacta_Shfb_LatexTools_LatexComponent.htm\u000080","VS2013WithLatex Constructor\u0000html/M_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex__ctor.htm\u000066","LatexPlugIn Properties\u0000html/Properties_T_Novacta_Shfb_LatexTools_LatexPlugIn.htm\u000056","DviPngProcessor.Executable Property\u0000html/P_Novacta_Shfb_LatexTools_DviPngProcessor_Executable.htm\u000080","DviSvgmProcessor.Executable Property\u0000html/P_Novacta_Shfb_LatexTools_DviSvgmProcessor_Executable.htm\u000080","Welcome\u0000html/fe868fbe-1bfd-47f7-bf24-e1fd586864c6.htm\u0000127","Factory Properties\u0000html/Properties_T_Novacta_Shfb_LatexTools_LatexComponent_Factory.htm\u0000133","LatexProcessor Properties\u0000html/Properties_T_Novacta_Shfb_LatexTools_LatexProcessor.htm\u000066","DviSvgmProcessor.WorkingDirectory Property\u0000html/P_Novacta_Shfb_LatexTools_DviSvgmProcessor_WorkingDirectory.htm\u000079","DviPngProcessor.WorkingDirectory Property\u0000html/P_Novacta_Shfb_LatexTools_DviPngProcessor_WorkingDirectory.htm\u000079","FileProcessor.Executable Property\u0000html/P_Novacta_Shfb_LatexTools_FileProcessor_Executable.htm\u000080","FileProcessor.WorkingDirectory Property\u0000html/P_Novacta_Shfb_LatexTools_FileProcessor_WorkingDirectory.htm\u000079","LatexComponent.Factory.DefaultConfiguration Property\u0000html/P_Novacta_Shfb_LatexTools_LatexComponent_Factory_DefaultConfiguration.htm\u000092","LatexPlugIn.ExecutionPoints Property\u0000html/P_Novacta_Shfb_LatexTools_LatexPlugIn_ExecutionPoints.htm\u000095","LatexProcessor.Executable Property\u0000html/P_Novacta_Shfb_LatexTools_LatexProcessor_Executable.htm\u000080","VS2010WithLatex Properties\u0000html/Properties_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.htm\u0000341","LatexProcessor.WorkingDirectory Property\u0000html/P_Novacta_Shfb_LatexTools_LatexProcessor_WorkingDirectory.htm\u000079","DviPngProcessor Class\u0000html/T_Novacta_Shfb_LatexTools_DviPngProcessor.htm\u0000324","VS2010WithLatex.Location Property\u0000html/P_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex_Location.htm\u000095","FileProcessor Class\u0000html/T_Novacta_Shfb_LatexTools_FileProcessor.htm\u0000283","DviSvgmProcessor Class\u0000html/T_Novacta_Shfb_LatexTools_DviSvgmProcessor.htm\u0000324","VS2013WithLatex Properties\u0000html/Properties_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.htm\u0000341","VS2013WithLatex.Location Property\u0000html/P_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex_Location.htm\u000095","LatexComponent Class\u0000html/T_Novacta_Shfb_LatexTools_LatexComponent.htm\u0000429","LatexComponent.Factory Class\u0000html/T_Novacta_Shfb_LatexTools_LatexComponent_Factory.htm\u0000289","IntegerOperation Class\u0000html/T_SampleClassLibrary_IntegerOperation.htm\u000079","LatexProcessor Class\u0000html/T_Novacta_Shfb_LatexTools_LatexProcessor.htm\u0000324","VS2013WithLatex Class\u0000html/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.htm\u0000549","LatexPlugIn Class\u0000html/T_Novacta_Shfb_LatexTools_LatexPlugIn.htm\u0000269","IntegerArrayOperation Class\u0000html/T_SampleClassLibrary_Advanced_IntegerArrayOperation.htm\u000086","VS2010WithLatex Class\u0000html/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.htm\u0000549","Adding LaTeX equations\u0000html/47a5afe5-726c-4f74-9ab1-90740bf0a692.htm\u00003351"] \ No newline at end of file diff --git a/docs/html/47a5afe5-726c-4f74-9ab1-90740bf0a692.htm b/docs/html/47a5afe5-726c-4f74-9ab1-90740bf0a692.htm new file mode 100644 index 0000000..0e48f49 --- /dev/null +++ b/docs/html/47a5afe5-726c-4f74-9ab1-90740bf0a692.htm @@ -0,0 +1,499 @@ +Adding LaTeX equations

    Adding LaTeX equations

    + The instructions on this page + demonstrate how to install the + + Novacta.Shfb.LatexTools + , + and how to use them + to insert Latex content in documentation topics. +

    Installing the LatexTools

    Install a supported version of SHFB

    + The current release of + Novacta.Shfb.LatexTools + targets SHFB, version 2021.10.23.0 or later. +

    + Make sure that a supported SHFB version of your choice + is currently installed on your host machine. +

    + You can download the required SHFB release + here. +

    Install a full LaTeX distribution

    + You need a full TeX distribution installed on your host machine. + You can find a list of TeX implementations + here. +

    + In particular, the LatexTools + have been tested using the + MiKTeX distribution. +

    Create a SHFB documentation project

    + Documentation projects can be created via the + SHFB standalone GUI, + or via the + SHFB Visual Studio package. +

    Add the Latex Tools to the SHFB documentation project

    + Right click on node Component Packages of your project + and, from the contextual menu, select Manage Component Packages... + (if your are using the SHFB standalone GUI), or + Manage NuGet Packages... (if you are + inside Visual Studio). Hence search package + Novacta.Shfb.LatexTools and install it. +

    + In this way, a reference to + the Novacta.Shfb.LatexTools + NuGet package will be added to your documentation project, and the following + SHFB extensions will be available while processing help files. +

    • + The LatexComponent + enables the representation of LaTeX equations + as images in SHFB documentation topics. + Supported image formats are + PNG and + SVG. +

    • + The LatexPlugIn, which + is responsible to support the SVG + image file format for the MSHelpViewer + help output. +

    • + The presentation styles + VS2010WithLatex and + VS2013WithLatex, + which add the ability to manage LaTeX content to styles + VS2010 and + VS2013, respectively. +

    Exploiting the LatexTools

    Selecting a LaTeX-aware presentation style

    + To select a presentation style able to manage LaTeX content, open + the project properties and click on the + Build tab. From the list + of available presentation styles, select the one + of your choice among those defined + as VS2010 + LaTeX or + VS2010 + LaTeX. + For example, the following figure shows a project + in which the + VS2013 + LaTeX style + has been selected. +

    Latex Style Selection

    Configuring the LatexComponent

    + The + LatexComponent + must be added to a documentation project + in order to manage LaTeX content in documentation topics. +

    + To such purpose, open the project properties and click on the + Components tab. From the list + of available components, select the one + referred to as + Novacta.Shfb.LaTeXComponent + and click the Add button. + Now the Latex component is inserted in the list of the + components executed during + the build process of the documentation project. + Such list is showed on the right side + of the tab, as exemplified in the following figure. +

    Latex Component

    + Once the LaTeX component has been committed for execution, + it must be configured. By clicking the + Configure button, the following + pop-up window will be displayed. +

    Latex Component Config

    + Through that window, configuration options can be set as follows. +

    LaTeX Component Configuration

    Option

    Description

    + Image file format +

    + Through this option, one of the + image formats supported for LaTeX + content representation can be selected. +

    + Image depth correction +

    + When a LaTeX element is in-lined, + then the corresponding image depth, i.e. the distance of the + bottom of the image from its baseline, must be modified in + order for the text represented in the image to have the same + baseline of the surrounding text. +

    + The initial image depth is returned by the DviPng executable of + the LaTeX distribution. Then, the difference between such value and + that set for the Image Depth Correction option + is taken as the final image depth. + By default, the Image Depth Correction option + is set to 0, + a value that works well for the default text size. +

    + Such behavior can be overridden for each specific equation, + as discussed in the following section. +

    + Image scale percentage +

    + This option controls the size of the text in a LaTeX equation. + The default value is 100, + and is equivalent to apply the \normalsize + text sizing LaTeX command while adopting + 10pt as the size of the main font in the document. + Values other than + 100 modify the size, + but negative values are not allowed. +

    + Such behavior can be overridden for each specific equation, + as discussed in the following section. +

    + Redirect file processors +

    + If checked, this option enables the redirection of + LaTeX console outputs to the SHFB + Help Build Log Content. +

    + Default LaTeX Mode +

    + This option controls if a LaTeX equation must be interpreted, + by default, as entered in inline mode, or + in display mode. + The default configuration sets this option + to display. +

    + Such behavior can be overridden for each specific equation, + as discussed in the following section. +

    + Additional Preamble Commands +

    + If needed, this option enables the addition of specific + commands to the preamble + of the documents processed to get the + LaTeX equations required in the documentation. +

    + LaTeX bin folder +

    + Through this option, you can specify the folder where + are contained the binary files of the installed + LaTeX distribution. +

    + DviSvgm bin folder +

    + Through this option, you can specify the folder where + are contained the binary files of + + DviSvgm, + a converter of DVI files to the SVG graphics format. +

    + The converter has been added to several LaTeX distributions. + If the installed distribution includes the tool, you can + specify here the same path set for option + LaTeX bin folder. + Otherwise, you can download the converter + here, + save it in a folder and set the option + accordingly. +

    + These binaries are only needed if you + select the SVG image file format. +

    The LatexPlugIn

    + The + LatexPlugIn + must be added to a documentation project + only if the project needs to support the SVG + image file format for the MSHelpViewer + help output. +

    + To do so, open the project properties and click on the + Plug-Ins tab. From the list + of available plug-ins, select the one + referred to as + Novacta.Shfb.LatexPlugIn + and click the Add button. + Now the Latex plug-in is inserted in the list of the + plug-ins executed during + the build process of the documentation project. + The plug-ins committed for execution are listed on the right side + of the tab, as exemplified in the following figure. +

    Latex Plug In
    Using LaTeX equations in XML comments

    + LaTeX equations can be added to the XML comments on your + source code by inserting custom XML elements, referred + to as the LaTeX elements. +

    + The start-tag of such elements + is <latex>. + The basic form of a LaTeX element, + i.e. a form with no XML + attributes, is as follows. +

    XML
    <latex>X_{(0)}=2^{-1/3}</latex>

    + When LaTeX elements are processed, + their content is interpreted as having document class + article, + with an option of + 10pt for the size of the + main font in the document, and the + \pagestyle set to + empty. You can also + assume as available the packages + amsmath + and + amsfonts. +

    + When the default configuration + is active and the latex element is in basic form, then its content + is interpreted as inserted in a displayed mathematical + environment (separated by the main text), and sized + applying the \normalsize LaTeX command. +

    + Such behavior can be overridden by adding attributes + to the latex element or overriding the default configuration. +

    + If you want a LaTeX formula displayed in-line, + that is, within the body of text where it is declared, + you can add a mode attribute + having the "inline" value, as in the following + example. +

    C#
    /// Let us assume that the random variable
    +/// <latex mode="inline">Y_{i}</latex> has distribution function
    +/// <latex mode="inline">F_{Y_{i}}</latex>.

    + If a LaTeX element has + no mode attribute, then its + mode is set, by default, according to the + + Default LaTeX mode + + configuration option. +

    + The Novacta + LatexComponent + inserts images in help files + to represent your equations. + When + a LaTeX element is in-lined, + then the corresponding image + depth is, by default, set according to the + + Image depth correction + + configuration option. + However, the image depth for a given + LaTeX element + can be hard coded by adding a depth attribute, + as in the following example. +

    XML
    <latex depth="10">F_{Y_{i}}</latex>

    + In a LaTeX element, + the size of the text is controlled, by default, + through the + + Image scale percentage + + configuration option. + However, the size of a given + LaTeX element can be + overridden by adding to it + a scale attribute. + For example, if you want its size being the + 70% of the basic size, you can write + a LaTeX element as follows. +

    XML
    <latex scale="scriptsize">F_{Y_{i}}</latex>

    + More thoroughly, you can set the value of the + scale attribute + using any of the predefined values shown in the following table, + where the corresponding percentages are also reported. +

    Scaling LaTeX Equations

    Predefined LaTeX size

    Percentage

    Example

    + tiny +

    + 50 +

    LaTeX equation

    + scriptsize +

    + 70 +

    LaTeX equation

    + footnotesize +

    + 80 +

    LaTeX equation

    + small +

    + 90 +

    LaTeX equation

    + normalsize +

    + 100 +

    LaTeX equation

    + large +

    + 120 +

    LaTeX equation

    + Large +

    + 144 +

    LaTeX equation

    + LARGE +

    + 172.8 +

    LaTeX equation

    + huge +

    + 207.4 +

    LaTeX equation

    + Huge +

    + 248.8 +

    LaTeX equation

    + As an example, the following file printout shows the source code for + type + IntegerOperation, + as defined in project + SampleClassLibrary: +

    SampleClassLibrary\IntegerOperation.cs
     1using System;
    + 2
    + 3namespace SampleClassLibrary
    + 4{
    + 5    /// <summary>
    + 6    /// Provides a method to operate on integers.
    + 7    /// </summary>
    + 8    public static class IntegerOperation
    + 9    {
    +10        /// <summary>
    +11        /// Applies the specified function to the given operand.
    +12        /// </summary>
    +13        /// <param name="func">The function.</param>
    +14        /// <param name="operand">The operand.</param>
    +15        /// <returns>The result of the operation.</returns>
    +16        /// <exception cref="ArgumentNullException">
    +17        /// <paramref name="func"/> is <b>null</b>.</exception>
    +18        /// <example>
    +19        /// <para>
    +20        /// In the following example, the applied function, say 
    +21        /// <latex mode='inline'>f:\mathbb{N}\rightarrow \mathbb{N},</latex> is defined as
    +22        /// <latex mode='display'>
    +23        /// \forall n \in \mathbb{N}: n \mapsto f\left(n\right)=n^2.
    +24        /// </latex>
    +25        /// An integer is thus squared 
    +26        /// executing the <see cref="Operate(Func{int, int}, int)"/> method.
    +27        /// In addition, input validation is also checked.
    +28        /// </para>
    +29        /// <para>
    +30        /// <code language="cs">
    +31        /// using System;
    +32        /// namespace SampleClassLibrary.CodeExamples
    +33        /// {
    +34        ///     public class IntegerOperationExample
    +35        ///     {
    +36        ///         public void Main()
    +37        ///         {
    +38        ///             // Define an operator that squares its operand
    +39        ///             Func<![CDATA[<]]>int, int> square = (int operand) => operand * operand;
    +40        /// 
    +41        ///             // Define an operand
    +42        ///             int integer = 2;
    +43        /// 
    +44        ///             // Operate on it
    +45        ///             Console.WriteLine("Squaring {0}...", integer);
    +46        ///             int result = IntegerOperation.Operate(square, integer);
    +47        ///             Console.WriteLine("...the result is {0}.", result);
    +48        /// 
    +49        ///             // Check that an operator cannot be null
    +50        ///             try
    +51        ///             {
    +52        ///                 IntegerOperation.Operate(null, 0);
    +53        ///             }
    +54        ///             catch (Exception e)
    +55        ///             {
    +56        ///                 Console.WriteLine();
    +57        ///                 Console.WriteLine("Cannot apply a null function:");
    +58        ///                 Console.WriteLine(e.Message);
    +59        ///             }
    +60        ///         }
    +61        ///     }
    +62        /// }
    +63        ///  
    +64        /// // Executing method Main() produces the following output:
    +65        /// // 
    +66        /// // Squaring 2...
    +67        /// // ...the result is 4.
    +68        /// // 
    +69        /// // Cannot apply a null function:
    +70        /// // Value cannot be null.
    +71        /// // Parameter name: func
    +72        /// </code>
    +73        /// </para>
    +74        /// </example>
    +75        public static int Operate(Func<int, int> func, int operand)
    +76        {
    +77            if (func==null)
    +78            {
    +79                throw new ArgumentNullException(nameof(func));
    +80            }
    +81            return func(operand);
    +82        }
    +83    }
    +84}

    + Note the LaTeX elements at line 21-24 + in the XML comments on method + Operate. + You can check + here + how the + corresponding documentation looks like. +

    Using LaTeX equations in conceptual topics

    + Elements in + MAML + conceptual topics must be qualified using a namespace. + To qualify LaTeX elements, + add to the topic's document element a namespace attribute + associated with prefix ltx, + as shown in the following example. +

    XML
    <topic id="303c996a-2911-4c08-b492-6496c82b3edb" revisionNumber="1">
    +  <!-- This element name will change based on the document type -->
    +  <developerConceptualDocument
    +    xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5"
    +    xmlns:xlink="http://www.w3.org/1999/xlink"
    +    xmlns:ltx="http://www.novacta.net/2018/XSL/ShfbLatexTools">
    +
    +    <!-- The content goes here -->
    +
    +  </developerConceptualDocument>
    +</topic>

    + Now LaTeX elements can be added + by prefixing their tags with ltx, + as follows. +

    XML
    <ltx:latex scale="LARGE" mode="inline">X_{(0)}</ltx:latex>

    + As an example, the following file printout shows the source code for + a conceptual topic about + IntegerOperation, + as defined in project + SampleClassLibrary: +

    SampleClassLibrary.Documentation\Content\OperatingOnIntegers.aml
     1<?xml version="1.0" encoding="utf-8"?>
    + 2<topic id="b10d4d75-3729-4247-a58a-b9e5b6e4bb4d" revisionNumber="1">
    + 3  <developerConceptualDocument
    + 4    xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5"
    + 5    xmlns:xlink="http://www.w3.org/1999/xlink"
    + 6    xmlns:ltx="http://www.novacta.net/2018/XSL/ShfbLatexTools">
    + 7
    + 8    <introduction>
    + 9      <para>
    +10        Class <codeEntityReference qualifyHint="false">
    +11          T:SampleClassLibrary.IntegerOperation
    +12        </codeEntityReference> provides method
    +13        <codeEntityReference qualifyHint="false">
    +14          M:SampleClassLibrary.IntegerOperation.Operate(System.Func{System.Int32,System.Int32},System.Int32)
    +15        </codeEntityReference>
    +16        to manage operations on integer values.
    +17      </para>
    +18      <para>
    +19        In the following example, an integer is squared
    +20        executing the <codeEntityReference qualifyHint="false">
    +21          M:SampleClassLibrary.IntegerOperation.Operate(System.Func{System.Int32,System.Int32},System.Int32)
    +22        </codeEntityReference> method.
    +23        This is equivalent to define the applied function,
    +24        say <ltx:latex mode="inline">f:\mathbb{N}\rightarrow \mathbb{N},</ltx:latex>
    +25        as <ltx:latex>\forall n \in \mathbb{N}: n \mapsto f\left(n\right)=n^2.</ltx:latex>
    +26        In addition, input validation is also checked.
    +27      </para>
    +28      <code source="..\SampleClassLibrary\IntegerOperationExample.cs.txt"
    +29        language="cs" title="C#" />
    +30    </introduction>
    +31
    +32    <relatedTopics>
    +33      <link xlink:href="4c3871a5-d7c6-477c-96ee-e71f0a67f7a8" />
    +34    </relatedTopics>
    +35
    +36  </developerConceptualDocument>
    +37</topic>

    + Note the LaTeX elements at lines 24-25. + You can check + here + how such conceptual topic looks like. +

    \ No newline at end of file diff --git a/docs/html/77c2fac9-a810-4e5b-ba0e-afff50a42467.htm b/docs/html/77c2fac9-a810-4e5b-ba0e-afff50a42467.htm new file mode 100644 index 0000000..830d822 --- /dev/null +++ b/docs/html/77c2fac9-a810-4e5b-ba0e-afff50a42467.htm @@ -0,0 +1,27 @@ +License agreement

    License agreement

    + This software is licensed under the following terms. +

    The MIT license

    + Copyright (c) 2021 Giovanni Lafratta. All rights reserved. +

    + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons + to whom the Software is furnished to do so, subject to the + following conditions: +

    + The above copyright notice and this permission notice shall + be included in + all copies or substantial portions of the Software. +

    + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +

    \ No newline at end of file diff --git a/docs/html/7abd97df-f098-4afa-9f9c-2255d3e61a33.htm b/docs/html/7abd97df-f098-4afa-9f9c-2255d3e61a33.htm new file mode 100644 index 0000000..7a19d21 --- /dev/null +++ b/docs/html/7abd97df-f098-4afa-9f9c-2255d3e61a33.htm @@ -0,0 +1,6 @@ +Version History

    Version History

    + The topics in this section describe the various changes made to + Novacta.Shfb.LatexTools over the + life of the project. +

    Version History

    Select a version below to see a description of its changes.

    See Also

    Other Resources

    \ No newline at end of file diff --git a/docs/html/G_.htm b/docs/html/G_.htm new file mode 100644 index 0000000..aa82909 --- /dev/null +++ b/docs/html/G_.htm @@ -0,0 +1 @@ +Namespaces

    Namespaces

    [Missing <summary> documentation for "G:"]

    Namespaces
    NamespaceDescription
    Novacta.Shfb
    Provide support to LaTeX content in files generated by the Sandcastle Help File Builder.
    SampleClassLibrary
    Provide information about a library containing sample code whose documentation has been created exploiting the Novacta SHFB LaTeX Tools.
    \ No newline at end of file diff --git a/docs/html/G_Novacta_Shfb.htm b/docs/html/G_Novacta_Shfb.htm new file mode 100644 index 0000000..62b6a13 --- /dev/null +++ b/docs/html/G_Novacta_Shfb.htm @@ -0,0 +1 @@ +Novacta.Shfb Namespaces

    Novacta.Shfb Namespaces

    Provide support to LaTeX content in files generated by the Sandcastle Help File Builder.
    Namespaces
    NamespaceDescription
    Novacta.Shfb.LatexTools
    Provides types able to represent LaTeX content in files generated by the Sandcastle Help File Builder.
    Novacta.Shfb.LatexTools.PresentationStyles
    Provides presentation styles able to manage LaTeX content in files generated by the Sandcastle Help File Builder.
    \ No newline at end of file diff --git a/docs/html/G_SampleClassLibrary.htm b/docs/html/G_SampleClassLibrary.htm new file mode 100644 index 0000000..d8718ca --- /dev/null +++ b/docs/html/G_SampleClassLibrary.htm @@ -0,0 +1 @@ +SampleClassLibrary Namespaces

    SampleClassLibrary Namespaces

    Provide information about a library containing sample code whose documentation has been created exploiting the Novacta SHFB LaTeX Tools.
    Namespaces
    NamespaceDescription
    SampleClassLibrary
    Provides support for operations on integers.
    SampleClassLibrary.Advanced
    Provides support for operations on integer arrays.
    \ No newline at end of file diff --git a/docs/html/GeneralError.htm b/docs/html/GeneralError.htm new file mode 100644 index 0000000..251858f --- /dev/null +++ b/docs/html/GeneralError.htm @@ -0,0 +1,29 @@ + + + + + + + + + General Error + + + + + + + + + + +
    +

    We're sorry, a general error has occurred.

    +

    Please try to load the page again. If the error persists, please contact the site administrator.

    +
    + + + diff --git a/docs/html/M_Novacta_Shfb_LatexTools_DviPngProcessor_Arguments.htm b/docs/html/M_Novacta_Shfb_LatexTools_DviPngProcessor_Arguments.htm new file mode 100644 index 0000000..cf2e57f --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_DviPngProcessor_Arguments.htm @@ -0,0 +1,17 @@ +DviPngProcessor.Arguments Method

    DviPngProcessorArguments Method

    + Returns the process arguments for the specified file. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public override string Arguments(
    +	string fileName,
    +	string additionalInfo
    +)

    Parameters

    fileName
    Type: SystemString
    + Name of the file to process. +
    additionalInfo
    Type: SystemString
    + Additional information needed to + evaluate arguments specific to the processed file. +

    Return Value

    Type: String
    + A string representation of the process arguments. +
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_DviPngProcessor__ctor.htm b/docs/html/M_Novacta_Shfb_LatexTools_DviPngProcessor__ctor.htm new file mode 100644 index 0000000..c832f43 --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_DviPngProcessor__ctor.htm @@ -0,0 +1,17 @@ +DviPngProcessor Constructor

    DviPngProcessor Constructor

    + Initializes a new instance of the DviPngProcessor class. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public DviPngProcessor(
    +	string latexBinPath,
    +	string workingPath,
    +	string defaultImageResolution
    +)

    Parameters

    latexBinPath
    Type: SystemString
    + The LaTeX bin path. +
    workingPath
    Type: SystemString
    + The working path. +
    defaultImageResolution
    Type: SystemString
    + The default image resolution. +
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_DviSvgmProcessor_Arguments.htm b/docs/html/M_Novacta_Shfb_LatexTools_DviSvgmProcessor_Arguments.htm new file mode 100644 index 0000000..e1b395b --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_DviSvgmProcessor_Arguments.htm @@ -0,0 +1,17 @@ +DviSvgmProcessor.Arguments Method

    DviSvgmProcessorArguments Method

    + Returns the process arguments for the specified file. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public override string Arguments(
    +	string fileName,
    +	string additionalInfo
    +)

    Parameters

    fileName
    Type: SystemString
    + Name of the file to process. +
    additionalInfo
    Type: SystemString
    + Additional information needed to + evaluate arguments specific to the processed file. +

    Return Value

    Type: String
    + A string representation of the process arguments. +
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_DviSvgmProcessor__ctor.htm b/docs/html/M_Novacta_Shfb_LatexTools_DviSvgmProcessor__ctor.htm new file mode 100644 index 0000000..8077dee --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_DviSvgmProcessor__ctor.htm @@ -0,0 +1,19 @@ +DviSvgmProcessor Constructor

    DviSvgmProcessor Constructor

    + Initializes a new instance of the DviSvgmProcessor class. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public DviSvgmProcessor(
    +	string dvisvgmBinPath,
    +	string workingPath,
    +	string defaultZoomFactor,
    +	bool redirectFileProcessors
    +)

    Parameters

    dvisvgmBinPath
    Type: SystemString
    + The DviSvgm bin path. +
    workingPath
    Type: SystemString
    + The working path. +
    defaultZoomFactor
    Type: SystemString
    + The default zoom factor. +
    redirectFileProcessors
    Type: SystemBoolean
    true if messages must be printed; otherwise, false. +
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_FileProcessor_Arguments.htm b/docs/html/M_Novacta_Shfb_LatexTools_FileProcessor_Arguments.htm new file mode 100644 index 0000000..54a0219 --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_FileProcessor_Arguments.htm @@ -0,0 +1,17 @@ +FileProcessor.Arguments Method

    FileProcessorArguments Method

    + Returns the process arguments for the specified file. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public abstract string Arguments(
    +	string fileName,
    +	string additionalInfo
    +)

    Parameters

    fileName
    Type: SystemString
    + Name of the file to process. +
    additionalInfo
    Type: SystemString
    + Additional information needed to + evaluate arguments specific to the processed file. +

    Return Value

    Type: String
    + A string representation of the process arguments. +
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_FileProcessor_Run.htm b/docs/html/M_Novacta_Shfb_LatexTools_FileProcessor_Run.htm new file mode 100644 index 0000000..5b1ab56 --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_FileProcessor_Run.htm @@ -0,0 +1,15 @@ +FileProcessor.Run Method (String)

    FileProcessorRun Method (String)

    + Runs the processor on the specified file. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public string Run(
    +	string fileName
    +)

    Parameters

    fileName
    Type: SystemString
    + Name of the file to process. +

    Return Value

    Type: String
    + The output of the file processor. +
    Exceptions
    ExceptionCondition
    InvalidOperationException + The process exited with errors. +
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_FileProcessor_Run_1.htm b/docs/html/M_Novacta_Shfb_LatexTools_FileProcessor_Run_1.htm new file mode 100644 index 0000000..5a6514b --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_FileProcessor_Run_1.htm @@ -0,0 +1,20 @@ +FileProcessor.Run Method (String, String)

    FileProcessorRun Method (String, String)

    + Runs the processor on the specified file applying + command-line arguments specific to that file. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public string Run(
    +	string fileName,
    +	string additionalInfo
    +)

    Parameters

    fileName
    Type: SystemString
    + Name of the file. +
    additionalInfo
    Type: SystemString
    + Additional information needed to + evaluate arguments specific to the processed file. +

    Return Value

    Type: String
    + The output of the file processor. +
    Exceptions
    ExceptionCondition
    InvalidOperationException + The process exited with errors. +
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_FileProcessor__ctor.htm b/docs/html/M_Novacta_Shfb_LatexTools_FileProcessor__ctor.htm new file mode 100644 index 0000000..0401b2b --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_FileProcessor__ctor.htm @@ -0,0 +1,5 @@ +FileProcessor Constructor

    FileProcessor Constructor

    Initializes a new instance of the FileProcessor class

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    protected FileProcessor()
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_LatexComponent_Apply.htm b/docs/html/M_Novacta_Shfb_LatexTools_LatexComponent_Apply.htm new file mode 100644 index 0000000..4038301 --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_LatexComponent_Apply.htm @@ -0,0 +1,14 @@ +LatexComponent.Apply Method

    LatexComponentApply Method

    + Performs the component tasks. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public override void Apply(
    +	XmlDocument document,
    +	string key
    +)

    Parameters

    document
    Type: System.XmlXmlDocument
    + The XML document. +
    key
    Type: SystemString
    + The key (member name) of the item being documented. +
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_LatexComponent_Factory_Create.htm b/docs/html/M_Novacta_Shfb_LatexTools_LatexComponent_Factory_Create.htm new file mode 100644 index 0000000..5a06088 --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_LatexComponent_Factory_Create.htm @@ -0,0 +1,7 @@ +LatexComponent.Factory.Create Method

    LatexComponentFactoryCreate Method

    + This is implemented to provide a build component factory +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public override BuildComponentCore Create()

    Return Value

    Type: BuildComponentCore
    A new instance of a build component
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_LatexComponent_Factory__ctor.htm b/docs/html/M_Novacta_Shfb_LatexTools_LatexComponent_Factory__ctor.htm new file mode 100644 index 0000000..f328985 --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_LatexComponent_Factory__ctor.htm @@ -0,0 +1,7 @@ +LatexComponent.Factory Constructor

    LatexComponentFactory Constructor

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public Factory()
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_LatexComponent_Initialize.htm b/docs/html/M_Novacta_Shfb_LatexTools_LatexComponent_Initialize.htm new file mode 100644 index 0000000..45a584b --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_LatexComponent_Initialize.htm @@ -0,0 +1,11 @@ +LatexComponent.Initialize Method

    LatexComponentInitialize Method

    + Initializes the build component. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public override void Initialize(
    +	XPathNavigator configuration
    +)

    Parameters

    configuration
    Type: System.Xml.XPathXPathNavigator
    + The component configuration. +
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_LatexComponent__ctor.htm b/docs/html/M_Novacta_Shfb_LatexTools_LatexComponent__ctor.htm new file mode 100644 index 0000000..4c5682b --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_LatexComponent__ctor.htm @@ -0,0 +1,12 @@ +LatexComponent Constructor

    LatexComponent Constructor

    + Initializes a new instance of the LatexComponent class + with the specified build assembler. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    protected LatexComponent(
    +	BuildAssemblerCore buildAssembler
    +)

    Parameters

    buildAssembler
    Type: BuildAssemblerCore
    + The build assembler. +
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Dispose.htm b/docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Dispose.htm new file mode 100644 index 0000000..dd76234 --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Dispose.htm @@ -0,0 +1,8 @@ +LatexPlugIn.Dispose Method

    LatexPlugInDispose Method

    + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Execute.htm b/docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Execute.htm new file mode 100644 index 0000000..f347a22 --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Execute.htm @@ -0,0 +1,11 @@ +LatexPlugIn.Execute Method

    LatexPlugInExecute Method

    + Executes the plug-in during the build process. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public void Execute(
    +	ExecutionContext context
    +)

    Parameters

    context
    Type: ExecutionContext
    + The current execution context. +

    Implements

    IPlugIn.Execute(ExecutionContext)
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Finalize.htm b/docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Finalize.htm new file mode 100644 index 0000000..bc49273 --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Finalize.htm @@ -0,0 +1,8 @@ +LatexPlugIn.Finalize Method

    LatexPlugInFinalize Method

    + Allows this instance to try to free resources and perform other + cleanup operations before it is reclaimed by garbage collection. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Initialize.htm b/docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Initialize.htm new file mode 100644 index 0000000..3d038ce --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn_Initialize.htm @@ -0,0 +1,14 @@ +LatexPlugIn.Initialize Method

    LatexPlugInInitialize Method

    + Initializes the plug-in at the start of the build process. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public void Initialize(
    +	BuildProcess buildProcess,
    +	XElement configuration
    +)

    Parameters

    buildProcess
    Type: BuildProcess
    + The current build process. +
    configuration
    Type: System.Xml.LinqXElement
    + The configuration data that the plug-in should use to initialize itself. +

    Implements

    IPlugIn.Initialize(BuildProcess, XElement)
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn__ctor.htm b/docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn__ctor.htm new file mode 100644 index 0000000..4112dd0 --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_LatexPlugIn__ctor.htm @@ -0,0 +1,5 @@ +LatexPlugIn Constructor

    LatexPlugIn Constructor

    Initializes a new instance of the LatexPlugIn class

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public LatexPlugIn()
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_LatexProcessor_Arguments.htm b/docs/html/M_Novacta_Shfb_LatexTools_LatexProcessor_Arguments.htm new file mode 100644 index 0000000..2bd1501 --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_LatexProcessor_Arguments.htm @@ -0,0 +1,17 @@ +LatexProcessor.Arguments Method

    LatexProcessorArguments Method

    + Returns the process arguments for the specified file. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public override string Arguments(
    +	string fileName,
    +	string additionalInfo
    +)

    Parameters

    fileName
    Type: SystemString
    + Name of the file to process. +
    additionalInfo
    Type: SystemString
    + Additional information needed to + evaluate arguments specific to the processed file. +

    Return Value

    Type: String
    + A string representation of the process arguments. +
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_LatexProcessor__ctor.htm b/docs/html/M_Novacta_Shfb_LatexTools_LatexProcessor__ctor.htm new file mode 100644 index 0000000..9ee8ef6 --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_LatexProcessor__ctor.htm @@ -0,0 +1,14 @@ +LatexProcessor Constructor

    LatexProcessor Constructor

    + Initializes a new instance of the LatexProcessor class. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public LatexProcessor(
    +	string latexBinFolder,
    +	string workingFolder
    +)

    Parameters

    latexBinFolder
    Type: SystemString
    + The LaTeX bin folder. +
    workingFolder
    Type: SystemString
    + The working folder. +
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex__ctor.htm b/docs/html/M_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex__ctor.htm new file mode 100644 index 0000000..389fb7a --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex__ctor.htm @@ -0,0 +1,7 @@ +VS2010WithLatex Constructor

    VS2010WithLatex Constructor

    + Initializes a new instance of the VS2010WithLatex class. +

    + Namespace: +  Novacta.Shfb.LatexTools.PresentationStyles
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public VS2010WithLatex()
    See Also
    \ No newline at end of file diff --git a/docs/html/M_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex__ctor.htm b/docs/html/M_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex__ctor.htm new file mode 100644 index 0000000..581d6a7 --- /dev/null +++ b/docs/html/M_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex__ctor.htm @@ -0,0 +1,7 @@ +VS2013WithLatex Constructor

    VS2013WithLatex Constructor

    + Initializes a new instance of the VS2013WithLatex class. +

    + Namespace: +  Novacta.Shfb.LatexTools.PresentationStyles
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public VS2013WithLatex()
    See Also
    \ No newline at end of file diff --git a/docs/html/M_SampleClassLibrary_Advanced_IntegerArrayOperation_Operate.htm b/docs/html/M_SampleClassLibrary_Advanced_IntegerArrayOperation_Operate.htm new file mode 100644 index 0000000..b3c284f --- /dev/null +++ b/docs/html/M_SampleClassLibrary_Advanced_IntegerArrayOperation_Operate.htm @@ -0,0 +1,85 @@ +IntegerArrayOperation.Operate Method

    IntegerArrayOperationOperate Method

    + Applies the specified function to the given array of operands. +

    + Namespace: +  SampleClassLibrary.Advanced
    + Assembly: +  SampleClassLibrary (in SampleClassLibrary.dll) Version: 1.0.0
    Syntax
    C#
    public static int[] Operate(
    +	Func<int, int> func,
    +	int[] operands
    +)

    Parameters

    func
    Type: SystemFuncInt32, Int32
    The function to evaluate at each operand.
    operands
    Type: SystemInt32
    The array of operands.

    Return Value

    Type: Int32
    The results of the operations.
    Exceptions
    ExceptionCondition
    ArgumentNullExceptionfunc is null.
    + -or-
    operands is null. +
    Examples

    + In the following example, the applied function, say + LaTeX equation is defined as +

    LaTeX equation

    + Integers in a given array are thus squared + executing the Operate(FuncInt32, Int32, Int32) method. + In addition, input validation is also checked. +

    C#
    using System;
    +using SampleClassLibrary.Advanced;
    +
    +namespace SampleClassLibrary.CodeExamples.Advanced
    +{
    +    public class IntegerArrayOperationExample
    +    {
    +        public void Main()
    +        {
    +            // Define an operator that squares its operand
    +            Func<int, int> square = (int operand) => operand * operand;
    +
    +            // Define an array of operands
    +            int[] operands = new int[3] { 2, 4, 8 };
    +
    +            // Operate on it
    +            int[] results = IntegerArrayOperation.Operate(square, operands);
    +
    +            // Show results
    +            for (int i = 0; i < results.Length; i++)
    +            {
    +                Console.WriteLine(
    +                    "The result of squaring {0} is {1}.",
    +                    operands[i],
    +                    results[i]);
    +            }
    +
    +            // Check that an operator cannot be null
    +            try
    +            {
    +                IntegerArrayOperation.Operate(null, new int[1]);
    +            }
    +            catch (Exception e)
    +            {
    +                Console.WriteLine();
    +                Console.WriteLine("Cannot apply a null function:");
    +                Console.WriteLine(e.Message);
    +            }
    +
    +            // Check that an array of operands cannot be null
    +            try
    +            {
    +                IntegerArrayOperation.Operate(square, null);
    +            }
    +            catch (Exception e)
    +            {
    +                Console.WriteLine();
    +                Console.WriteLine("Cannot apply a function to a null array:");
    +                Console.WriteLine(e.Message);
    +            }
    +        }
    +    }
    +}
    +
    +// Executing method Main() produces the following output:
    +// 
    +// The result of squaring 2 is 4.
    +// The result of squaring 4 is 16.
    +// The result of squaring 8 is 64.
    +// 
    +// Cannot apply a null function:
    +// Value cannot be null.
    +// Parameter name: func
    +// 
    +// Cannot apply a function to a null array:
    +// Value cannot be null.
    +// Parameter name: operands

    See Also
    \ No newline at end of file diff --git a/docs/html/M_SampleClassLibrary_IntegerOperation_Operate.htm b/docs/html/M_SampleClassLibrary_IntegerOperation_Operate.htm new file mode 100644 index 0000000..3480370 --- /dev/null +++ b/docs/html/M_SampleClassLibrary_IntegerOperation_Operate.htm @@ -0,0 +1,57 @@ +IntegerOperation.Operate Method

    IntegerOperationOperate Method

    + Applies the specified function to the given operand. +

    + Namespace: +  SampleClassLibrary
    + Assembly: +  SampleClassLibrary (in SampleClassLibrary.dll) Version: 1.0.0
    Syntax
    C#
    public static int Operate(
    +	Func<int, int> func,
    +	int operand
    +)

    Parameters

    func
    Type: SystemFuncInt32, Int32
    The function.
    operand
    Type: SystemInt32
    The operand.

    Return Value

    Type: Int32
    The result of the operation.
    Exceptions
    ExceptionCondition
    ArgumentNullExceptionfunc is null.
    Examples

    + In the following example, the applied function, say + LaTeX equation is defined as +

    LaTeX equation

    + An integer is thus squared + executing the Operate(FuncInt32, Int32, Int32) method. + In addition, input validation is also checked. +

    C#
    using System;
    +namespace SampleClassLibrary.CodeExamples
    +{
    +    public class IntegerOperationExample
    +    {
    +        public void Main()
    +        {
    +            // Define an operator that squares its operand
    +            Func<int, int> square = (int operand) => operand * operand;
    +
    +            // Define an operand
    +            int integer = 2;
    +
    +            // Operate on it
    +            Console.WriteLine("Squaring {0}...", integer);
    +            int result = IntegerOperation.Operate(square, integer);
    +            Console.WriteLine("...the result is {0}.", result);
    +
    +            // Check that an operator cannot be null
    +            try
    +            {
    +                IntegerOperation.Operate(null, 0);
    +            }
    +            catch (Exception e)
    +            {
    +                Console.WriteLine();
    +                Console.WriteLine("Cannot apply a null function:");
    +                Console.WriteLine(e.Message);
    +            }
    +        }
    +    }
    +}
    +
    +// Executing method Main() produces the following output:
    +// 
    +// Squaring 2...
    +// ...the result is 4.
    +// 
    +// Cannot apply a null function:
    +// Value cannot be null.
    +// Parameter name: func

    See Also
    \ No newline at end of file diff --git a/docs/html/Methods_T_Novacta_Shfb_LatexTools_DviPngProcessor.htm b/docs/html/Methods_T_Novacta_Shfb_LatexTools_DviPngProcessor.htm new file mode 100644 index 0000000..8d9d467 --- /dev/null +++ b/docs/html/Methods_T_Novacta_Shfb_LatexTools_DviPngProcessor.htm @@ -0,0 +1,10 @@ +DviPngProcessor Methods

    DviPngProcessor Methods

    The DviPngProcessor type exposes the following members.

    Methods
    +   + NameDescription
    Public methodArguments
    + Returns the process arguments for the specified file. +
    (Overrides FileProcessorArguments(String, String).)
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodRun(String)
    + Runs the processor on the specified file. +
    (Inherited from FileProcessor.)
    Public methodRun(String, String)
    + Runs the processor on the specified file applying + command-line arguments specific to that file. +
    (Inherited from FileProcessor.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/Methods_T_Novacta_Shfb_LatexTools_DviSvgmProcessor.htm b/docs/html/Methods_T_Novacta_Shfb_LatexTools_DviSvgmProcessor.htm new file mode 100644 index 0000000..f3b0c0f --- /dev/null +++ b/docs/html/Methods_T_Novacta_Shfb_LatexTools_DviSvgmProcessor.htm @@ -0,0 +1,10 @@ +DviSvgmProcessor Methods

    DviSvgmProcessor Methods

    The DviSvgmProcessor type exposes the following members.

    Methods
    +   + NameDescription
    Public methodArguments
    + Returns the process arguments for the specified file. +
    (Overrides FileProcessorArguments(String, String).)
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodRun(String)
    + Runs the processor on the specified file. +
    (Inherited from FileProcessor.)
    Public methodRun(String, String)
    + Runs the processor on the specified file applying + command-line arguments specific to that file. +
    (Inherited from FileProcessor.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/Methods_T_Novacta_Shfb_LatexTools_FileProcessor.htm b/docs/html/Methods_T_Novacta_Shfb_LatexTools_FileProcessor.htm new file mode 100644 index 0000000..4b855c5 --- /dev/null +++ b/docs/html/Methods_T_Novacta_Shfb_LatexTools_FileProcessor.htm @@ -0,0 +1,10 @@ +FileProcessor Methods

    FileProcessor Methods

    The FileProcessor type exposes the following members.

    Methods
    +   + NameDescription
    Public methodArguments
    + Returns the process arguments for the specified file. +
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodRun(String)
    + Runs the processor on the specified file. +
    Public methodRun(String, String)
    + Runs the processor on the specified file applying + command-line arguments specific to that file. +
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/Methods_T_Novacta_Shfb_LatexTools_LatexComponent.htm b/docs/html/Methods_T_Novacta_Shfb_LatexTools_LatexComponent.htm new file mode 100644 index 0000000..b096327 --- /dev/null +++ b/docs/html/Methods_T_Novacta_Shfb_LatexTools_LatexComponent.htm @@ -0,0 +1,21 @@ +LatexComponent Methods

    LatexComponent Methods

    The LatexComponent type exposes the following members.

    Methods
    +   + NameDescription
    Public methodApply
    + Performs the component tasks. +
    (Overrides BuildComponentCore.Apply(XmlDocument, String).)
    Public methodDispose
    + This implements the Dispose() interface to properly dispose of the build component. +
    (Inherited from BuildComponentCore.)
    Protected methodDispose(Boolean)
    + This can be overridden by derived classes to add their own disposal code if necessary. +
    (Inherited from BuildComponentCore.)
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    + This handles garbage collection to ensure proper disposal of the build component if not done + explicitly with Dispose. +
    (Inherited from BuildComponentCore.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodInitialize
    + Initializes the build component. +
    (Overrides BuildComponentCore.Initialize(XPathNavigator).)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Protected methodOnComponentEvent
    + This can be used to raise the ComponentEvent + event with the specified event arguments. +
    (Inherited from BuildComponentCore.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Public methodWriteMessage(MessageLevel, String, Object)
    + This can be used to report a message +
    (Inherited from BuildComponentCore.)
    Public methodWriteMessage(String, MessageLevel, String, Object)
    + This can be used to report a message for a specific topic ID +
    (Inherited from BuildComponentCore.)
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/Methods_T_Novacta_Shfb_LatexTools_LatexComponent_Factory.htm b/docs/html/Methods_T_Novacta_Shfb_LatexTools_LatexComponent_Factory.htm new file mode 100644 index 0000000..95c4003 --- /dev/null +++ b/docs/html/Methods_T_Novacta_Shfb_LatexTools_LatexComponent_Factory.htm @@ -0,0 +1,5 @@ +Factory Methods

    Factory Methods

    The LatexComponentFactory type exposes the following members.

    Methods
    +   + NameDescription
    Public methodCreate
    + This is implemented to provide a build component factory +
    (Overrides BuildComponentFactory.Create.)
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/Methods_T_Novacta_Shfb_LatexTools_LatexPlugIn.htm b/docs/html/Methods_T_Novacta_Shfb_LatexTools_LatexPlugIn.htm new file mode 100644 index 0000000..4748c5c --- /dev/null +++ b/docs/html/Methods_T_Novacta_Shfb_LatexTools_LatexPlugIn.htm @@ -0,0 +1,13 @@ +LatexPlugIn Methods

    LatexPlugIn Methods

    The LatexPlugIn type exposes the following members.

    Methods
    +   + NameDescription
    Public methodDispose
    + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. +
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodExecute
    + Executes the plug-in during the build process. +
    Protected methodFinalize
    + Allows this instance to try to free resources and perform other + cleanup operations before it is reclaimed by garbage collection. +
    (Overrides ObjectFinalize.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodInitialize
    + Initializes the plug-in at the start of the build process. +
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/Methods_T_Novacta_Shfb_LatexTools_LatexProcessor.htm b/docs/html/Methods_T_Novacta_Shfb_LatexTools_LatexProcessor.htm new file mode 100644 index 0000000..e39942d --- /dev/null +++ b/docs/html/Methods_T_Novacta_Shfb_LatexTools_LatexProcessor.htm @@ -0,0 +1,10 @@ +LatexProcessor Methods

    LatexProcessor Methods

    The LatexProcessor type exposes the following members.

    Methods
    +   + NameDescription
    Public methodArguments
    + Returns the process arguments for the specified file. +
    (Overrides FileProcessorArguments(String, String).)
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodRun(String)
    + Runs the processor on the specified file. +
    (Inherited from FileProcessor.)
    Public methodRun(String, String)
    + Runs the processor on the specified file applying + command-line arguments specific to that file. +
    (Inherited from FileProcessor.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/Methods_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.htm b/docs/html/Methods_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.htm new file mode 100644 index 0000000..33d5da8 --- /dev/null +++ b/docs/html/Methods_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.htm @@ -0,0 +1,9 @@ +VS2010WithLatex Methods

    VS2010WithLatex Methods

    The VS2010WithLatex type exposes the following members.

    Methods
    +   + NameDescription
    Public methodCheckForErrors
    + This is used to check the presentation style for errors +
    (Inherited from PresentationStyleSettings.)
    Public methodCopyHelpContent
    + This is used to copy the presentation style help file content to the given destination folder +
    (Inherited from PresentationStyleSettings.)
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodResolvePath
    + This is used to resolve a presentation style path +
    (Inherited from PresentationStyleSettings.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/Methods_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.htm b/docs/html/Methods_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.htm new file mode 100644 index 0000000..abee9e7 --- /dev/null +++ b/docs/html/Methods_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.htm @@ -0,0 +1,9 @@ +VS2013WithLatex Methods

    VS2013WithLatex Methods

    The VS2013WithLatex type exposes the following members.

    Methods
    +   + NameDescription
    Public methodCheckForErrors
    + This is used to check the presentation style for errors +
    (Inherited from PresentationStyleSettings.)
    Public methodCopyHelpContent
    + This is used to copy the presentation style help file content to the given destination folder +
    (Inherited from PresentationStyleSettings.)
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodResolvePath
    + This is used to resolve a presentation style path +
    (Inherited from PresentationStyleSettings.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/Methods_T_SampleClassLibrary_Advanced_IntegerArrayOperation.htm b/docs/html/Methods_T_SampleClassLibrary_Advanced_IntegerArrayOperation.htm new file mode 100644 index 0000000..78de266 --- /dev/null +++ b/docs/html/Methods_T_SampleClassLibrary_Advanced_IntegerArrayOperation.htm @@ -0,0 +1,5 @@ +IntegerArrayOperation Methods

    IntegerArrayOperation Methods

    The IntegerArrayOperation type exposes the following members.

    Methods
    +   + NameDescription
    Public methodStatic memberCode exampleOperate
    + Applies the specified function to the given array of operands. +
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/Methods_T_SampleClassLibrary_IntegerOperation.htm b/docs/html/Methods_T_SampleClassLibrary_IntegerOperation.htm new file mode 100644 index 0000000..509da5c --- /dev/null +++ b/docs/html/Methods_T_SampleClassLibrary_IntegerOperation.htm @@ -0,0 +1,5 @@ +IntegerOperation Methods

    IntegerOperation Methods

    The IntegerOperation type exposes the following members.

    Methods
    +   + NameDescription
    Public methodStatic memberCode exampleOperate
    + Applies the specified function to the given operand. +
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/N_Novacta_Shfb_LatexTools.htm b/docs/html/N_Novacta_Shfb_LatexTools.htm new file mode 100644 index 0000000..774ad26 --- /dev/null +++ b/docs/html/N_Novacta_Shfb_LatexTools.htm @@ -0,0 +1,19 @@ +Novacta.Shfb.LatexTools Namespace

    Novacta.Shfb.LatexTools Namespace

    Provides types able to represent LaTeX content in files generated by the Sandcastle Help File Builder.
    Classes
    +   + ClassDescription
    Public classDviPngProcessor
    + Represents a DviPng process. +
    Public classDviSvgmProcessor
    + Represents a DviSvgm process. +
    Public classFileProcessor
    + Represents a process that supports file elaborations. +
    Public classLatexComponent
    + Provides support for LaTeX formatted formulas in + reference XML comments and conceptual content topics. +
    Public classLatexComponentFactory
    + Provides a factory method to create LatexComponent instances. +
    Public classLatexPlugIn
    + Provides support in MS Help Viewer files for LaTeX content + represented via the SVG image format. +
    Public classLatexProcessor
    + Represents a LaTeX process. +
    \ No newline at end of file diff --git a/docs/html/N_Novacta_Shfb_LatexTools_PresentationStyles.htm b/docs/html/N_Novacta_Shfb_LatexTools_PresentationStyles.htm new file mode 100644 index 0000000..3db74ef --- /dev/null +++ b/docs/html/N_Novacta_Shfb_LatexTools_PresentationStyles.htm @@ -0,0 +1,9 @@ +Novacta.Shfb.LatexTools.PresentationStyles Namespace

    Novacta.Shfb.LatexTools.PresentationStyles Namespace

    Provides presentation styles able to manage LaTeX content in files generated by the Sandcastle Help File Builder.
    Classes
    +   + ClassDescription
    Public classVS2010WithLatex
    + Represents a VS2010-based presentation style that supports + LaTeX formatted formulas in reference XML comments and conceptual content topics. +
    Public classVS2013WithLatex
    + Represents a VS2013-based presentation style that supports + LaTeX formatted formulas in reference XML comments and conceptual content topics. +
    \ No newline at end of file diff --git a/docs/html/N_SampleClassLibrary.htm b/docs/html/N_SampleClassLibrary.htm new file mode 100644 index 0000000..5f40c28 --- /dev/null +++ b/docs/html/N_SampleClassLibrary.htm @@ -0,0 +1,5 @@ +SampleClassLibrary Namespace

    SampleClassLibrary Namespace

    Provides support for operations on integers.
    Classes
    +   + ClassDescription
    Public classIntegerOperation
    + Provides a method to operate on integers. +
    \ No newline at end of file diff --git a/docs/html/N_SampleClassLibrary_Advanced.htm b/docs/html/N_SampleClassLibrary_Advanced.htm new file mode 100644 index 0000000..30907b9 --- /dev/null +++ b/docs/html/N_SampleClassLibrary_Advanced.htm @@ -0,0 +1,5 @@ +SampleClassLibrary.Advanced Namespace

    SampleClassLibrary.Advanced Namespace

    Provides support for operations on integer arrays.
    Classes
    +   + ClassDescription
    Public classIntegerArrayOperation
    + Provides a method to operate on arrays of integers. +
    \ No newline at end of file diff --git a/docs/html/Overload_Novacta_Shfb_LatexTools_FileProcessor_Run.htm b/docs/html/Overload_Novacta_Shfb_LatexTools_FileProcessor_Run.htm new file mode 100644 index 0000000..2e7bef5 --- /dev/null +++ b/docs/html/Overload_Novacta_Shfb_LatexTools_FileProcessor_Run.htm @@ -0,0 +1,8 @@ +FileProcessor.Run Method

    FileProcessorRun Method

    Overload List
    +   + NameDescription
    Public methodRun(String)
    + Runs the processor on the specified file. +
    Public methodRun(String, String)
    + Runs the processor on the specified file applying + command-line arguments specific to that file. +
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/P_Novacta_Shfb_LatexTools_DviPngProcessor_Executable.htm b/docs/html/P_Novacta_Shfb_LatexTools_DviPngProcessor_Executable.htm new file mode 100644 index 0000000..2fe6c16 --- /dev/null +++ b/docs/html/P_Novacta_Shfb_LatexTools_DviPngProcessor_Executable.htm @@ -0,0 +1,9 @@ +DviPngProcessor.Executable Property

    DviPngProcessorExecutable Property

    + Gets the path of the processor. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public override string Executable { get; }

    Property Value

    Type: String
    + The path of the processor. +
    See Also
    \ No newline at end of file diff --git a/docs/html/P_Novacta_Shfb_LatexTools_DviPngProcessor_WorkingDirectory.htm b/docs/html/P_Novacta_Shfb_LatexTools_DviPngProcessor_WorkingDirectory.htm new file mode 100644 index 0000000..66c97f8 --- /dev/null +++ b/docs/html/P_Novacta_Shfb_LatexTools_DviPngProcessor_WorkingDirectory.htm @@ -0,0 +1,9 @@ +DviPngProcessor.WorkingDirectory Property

    DviPngProcessorWorkingDirectory Property

    + Gets the working directory of the processor. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public override string WorkingDirectory { get; }

    Property Value

    Type: String
    + The working directory. +
    See Also
    \ No newline at end of file diff --git a/docs/html/P_Novacta_Shfb_LatexTools_DviSvgmProcessor_Executable.htm b/docs/html/P_Novacta_Shfb_LatexTools_DviSvgmProcessor_Executable.htm new file mode 100644 index 0000000..fe24bf3 --- /dev/null +++ b/docs/html/P_Novacta_Shfb_LatexTools_DviSvgmProcessor_Executable.htm @@ -0,0 +1,9 @@ +DviSvgmProcessor.Executable Property

    DviSvgmProcessorExecutable Property

    + Gets the path of the processor. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public override string Executable { get; }

    Property Value

    Type: String
    + The path of the processor. +
    See Also
    \ No newline at end of file diff --git a/docs/html/P_Novacta_Shfb_LatexTools_DviSvgmProcessor_WorkingDirectory.htm b/docs/html/P_Novacta_Shfb_LatexTools_DviSvgmProcessor_WorkingDirectory.htm new file mode 100644 index 0000000..bb20afb --- /dev/null +++ b/docs/html/P_Novacta_Shfb_LatexTools_DviSvgmProcessor_WorkingDirectory.htm @@ -0,0 +1,9 @@ +DviSvgmProcessor.WorkingDirectory Property

    DviSvgmProcessorWorkingDirectory Property

    + Gets the working directory of the processor. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public override string WorkingDirectory { get; }

    Property Value

    Type: String
    + The working directory. +
    See Also
    \ No newline at end of file diff --git a/docs/html/P_Novacta_Shfb_LatexTools_FileProcessor_Executable.htm b/docs/html/P_Novacta_Shfb_LatexTools_FileProcessor_Executable.htm new file mode 100644 index 0000000..053e577 --- /dev/null +++ b/docs/html/P_Novacta_Shfb_LatexTools_FileProcessor_Executable.htm @@ -0,0 +1,9 @@ +FileProcessor.Executable Property

    FileProcessorExecutable Property

    + Gets the path of the processor. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public abstract string Executable { get; }

    Property Value

    Type: String
    + The path of the processor. +
    See Also
    \ No newline at end of file diff --git a/docs/html/P_Novacta_Shfb_LatexTools_FileProcessor_WorkingDirectory.htm b/docs/html/P_Novacta_Shfb_LatexTools_FileProcessor_WorkingDirectory.htm new file mode 100644 index 0000000..38e0eac --- /dev/null +++ b/docs/html/P_Novacta_Shfb_LatexTools_FileProcessor_WorkingDirectory.htm @@ -0,0 +1,9 @@ +FileProcessor.WorkingDirectory Property

    FileProcessorWorkingDirectory Property

    + Gets the working directory of the processor. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public abstract string WorkingDirectory { get; }

    Property Value

    Type: String
    + The working directory. +
    See Also
    \ No newline at end of file diff --git a/docs/html/P_Novacta_Shfb_LatexTools_LatexComponent_Factory_DefaultConfiguration.htm b/docs/html/P_Novacta_Shfb_LatexTools_LatexComponent_Factory_DefaultConfiguration.htm new file mode 100644 index 0000000..2c02076 --- /dev/null +++ b/docs/html/P_Novacta_Shfb_LatexTools_LatexComponent_Factory_DefaultConfiguration.htm @@ -0,0 +1,7 @@ +LatexComponent.Factory.DefaultConfiguration Property

    LatexComponentFactoryDefaultConfiguration Property

    + This read-only property can be overridden to define a default configuration for the build component +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public override string DefaultConfiguration { get; }

    Property Value

    Type: String
    It returns an empty string by default
    See Also
    \ No newline at end of file diff --git a/docs/html/P_Novacta_Shfb_LatexTools_LatexPlugIn_ExecutionPoints.htm b/docs/html/P_Novacta_Shfb_LatexTools_LatexPlugIn_ExecutionPoints.htm new file mode 100644 index 0000000..a8c2f42 --- /dev/null +++ b/docs/html/P_Novacta_Shfb_LatexTools_LatexPlugIn_ExecutionPoints.htm @@ -0,0 +1,8 @@ +LatexPlugIn.ExecutionPoints Property

    LatexPlugInExecutionPoints Property

    + Returns a collection of execution points that define + when the plug-in should be invoked during the build process. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public IEnumerable<ExecutionPoint> ExecutionPoints { get; }

    Property Value

    Type: IEnumerableExecutionPoint

    Implements

    IPlugIn.ExecutionPoints
    See Also
    \ No newline at end of file diff --git a/docs/html/P_Novacta_Shfb_LatexTools_LatexProcessor_Executable.htm b/docs/html/P_Novacta_Shfb_LatexTools_LatexProcessor_Executable.htm new file mode 100644 index 0000000..9a0ee98 --- /dev/null +++ b/docs/html/P_Novacta_Shfb_LatexTools_LatexProcessor_Executable.htm @@ -0,0 +1,9 @@ +LatexProcessor.Executable Property

    LatexProcessorExecutable Property

    + Gets the path of the processor. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public override string Executable { get; }

    Property Value

    Type: String
    + The path of the processor. +
    See Also
    \ No newline at end of file diff --git a/docs/html/P_Novacta_Shfb_LatexTools_LatexProcessor_WorkingDirectory.htm b/docs/html/P_Novacta_Shfb_LatexTools_LatexProcessor_WorkingDirectory.htm new file mode 100644 index 0000000..86906c4 --- /dev/null +++ b/docs/html/P_Novacta_Shfb_LatexTools_LatexProcessor_WorkingDirectory.htm @@ -0,0 +1,9 @@ +LatexProcessor.WorkingDirectory Property

    LatexProcessorWorkingDirectory Property

    + Gets the working directory of the processor. +

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public override string WorkingDirectory { get; }

    Property Value

    Type: String
    + The working directory. +
    See Also
    \ No newline at end of file diff --git a/docs/html/P_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex_Location.htm b/docs/html/P_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex_Location.htm new file mode 100644 index 0000000..d385fb7 --- /dev/null +++ b/docs/html/P_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex_Location.htm @@ -0,0 +1,7 @@ +VS2010WithLatex.Location Property

    VS2010WithLatexLocation Property

    + This is overridden in derived classes to provide the location of the presentation style files +

    + Namespace: +  Novacta.Shfb.LatexTools.PresentationStyles
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public override string Location { get; }

    Property Value

    Type: String
    Typically, this will return the path of the executing assembly
    See Also
    \ No newline at end of file diff --git a/docs/html/P_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex_Location.htm b/docs/html/P_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex_Location.htm new file mode 100644 index 0000000..a8cbbbc --- /dev/null +++ b/docs/html/P_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex_Location.htm @@ -0,0 +1,7 @@ +VS2013WithLatex.Location Property

    VS2013WithLatexLocation Property

    + This is overridden in derived classes to provide the location of the presentation style files +

    + Namespace: +  Novacta.Shfb.LatexTools.PresentationStyles
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public override string Location { get; }

    Property Value

    Type: String
    Typically, this will return the path of the executing assembly
    See Also
    \ No newline at end of file diff --git a/docs/html/PageNotFound.htm b/docs/html/PageNotFound.htm new file mode 100644 index 0000000..7d0ff3d --- /dev/null +++ b/docs/html/PageNotFound.htm @@ -0,0 +1,31 @@ + + + + + + + + + Page Not Found + + + + + + + + + + +
    +

    We're sorry, the page you requested cannot be found.

    +

    The URL might be misspelled or the page you are looking for is no longer available. If you entered +the web address, check that it doesn't contain a typo. You can use the search box at the top of the page to +try and locate the page.

    +
    + + + diff --git a/docs/html/Properties_T_Novacta_Shfb_LatexTools_DviPngProcessor.htm b/docs/html/Properties_T_Novacta_Shfb_LatexTools_DviPngProcessor.htm new file mode 100644 index 0000000..0f530ff --- /dev/null +++ b/docs/html/Properties_T_Novacta_Shfb_LatexTools_DviPngProcessor.htm @@ -0,0 +1,7 @@ +DviPngProcessor Properties \ No newline at end of file diff --git a/docs/html/Properties_T_Novacta_Shfb_LatexTools_DviSvgmProcessor.htm b/docs/html/Properties_T_Novacta_Shfb_LatexTools_DviSvgmProcessor.htm new file mode 100644 index 0000000..349f4da --- /dev/null +++ b/docs/html/Properties_T_Novacta_Shfb_LatexTools_DviSvgmProcessor.htm @@ -0,0 +1,7 @@ +DviSvgmProcessor Properties \ No newline at end of file diff --git a/docs/html/Properties_T_Novacta_Shfb_LatexTools_FileProcessor.htm b/docs/html/Properties_T_Novacta_Shfb_LatexTools_FileProcessor.htm new file mode 100644 index 0000000..b49562b --- /dev/null +++ b/docs/html/Properties_T_Novacta_Shfb_LatexTools_FileProcessor.htm @@ -0,0 +1,7 @@ +FileProcessor Properties

    FileProcessor Properties

    The FileProcessor type exposes the following members.

    Properties
    +   + NameDescription
    Public propertyExecutable
    + Gets the path of the processor. +
    Public propertyWorkingDirectory
    + Gets the working directory of the processor. +
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/Properties_T_Novacta_Shfb_LatexTools_LatexComponent.htm b/docs/html/Properties_T_Novacta_Shfb_LatexTools_LatexComponent.htm new file mode 100644 index 0000000..527273e --- /dev/null +++ b/docs/html/Properties_T_Novacta_Shfb_LatexTools_LatexComponent.htm @@ -0,0 +1,7 @@ +LatexComponent Properties

    LatexComponent Properties

    The LatexComponent type exposes the following members.

    Properties
    +   + NameDescription
    Public propertyBuildAssembler
    + This read-only property returns a reference to the build assembler instance using the component +
    (Inherited from BuildComponentCore.)
    Public propertyGroupId
    + This is used to set an optional group ID for use with component events +
    (Inherited from BuildComponentCore.)
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/Properties_T_Novacta_Shfb_LatexTools_LatexComponent_Factory.htm b/docs/html/Properties_T_Novacta_Shfb_LatexTools_LatexComponent_Factory.htm new file mode 100644 index 0000000..f5d91fd --- /dev/null +++ b/docs/html/Properties_T_Novacta_Shfb_LatexTools_LatexComponent_Factory.htm @@ -0,0 +1,12 @@ +Factory Properties

    Factory Properties

    The LatexComponentFactory type exposes the following members.

    Properties
    +   + NameDescription
    Public propertyConceptualBuildPlacement
    + This is used to get or set a placement action for conceptual content builds +
    (Inherited from BuildComponentFactory.)
    Public propertyDefaultConfiguration
    + This read-only property can be overridden to define a default configuration for the build component +
    (Overrides BuildComponentFactory.DefaultConfiguration.)
    Public propertyDependencies
    + This read-only property can be overridden to provide a list of build components on which this + component depends. +
    (Inherited from BuildComponentFactory.)
    Public propertyReferenceBuildPlacement
    + This is used to get or set a placement action for reference content builds +
    (Inherited from BuildComponentFactory.)
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/Properties_T_Novacta_Shfb_LatexTools_LatexPlugIn.htm b/docs/html/Properties_T_Novacta_Shfb_LatexTools_LatexPlugIn.htm new file mode 100644 index 0000000..f13b7a8 --- /dev/null +++ b/docs/html/Properties_T_Novacta_Shfb_LatexTools_LatexPlugIn.htm @@ -0,0 +1,6 @@ +LatexPlugIn Properties

    LatexPlugIn Properties

    The LatexPlugIn type exposes the following members.

    Properties
    +   + NameDescription
    Public propertyExecutionPoints
    + Returns a collection of execution points that define + when the plug-in should be invoked during the build process. +
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/Properties_T_Novacta_Shfb_LatexTools_LatexProcessor.htm b/docs/html/Properties_T_Novacta_Shfb_LatexTools_LatexProcessor.htm new file mode 100644 index 0000000..ba6bf66 --- /dev/null +++ b/docs/html/Properties_T_Novacta_Shfb_LatexTools_LatexProcessor.htm @@ -0,0 +1,7 @@ +LatexProcessor Properties \ No newline at end of file diff --git a/docs/html/Properties_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.htm b/docs/html/Properties_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.htm new file mode 100644 index 0000000..8d4d635 --- /dev/null +++ b/docs/html/Properties_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.htm @@ -0,0 +1,31 @@ +VS2010WithLatex Properties

    VS2010WithLatex Properties

    The VS2010WithLatex type exposes the following members.

    Properties
    +   + NameDescription
    Public propertyApiTableOfContentsGenerator
    + This is used to get or set the table of content generator for API content +
    (Inherited from PresentationStyleSettings.)
    Public propertyBasePath
    + This is used to get or set the presentation style base path used to resolve relative paths within the + presentation style. +
    (Inherited from PresentationStyleSettings.)
    Public propertyBuildAssemblerConfiguration
    + This is used to get or set the BuildAssembler configuration filename +
    (Inherited from PresentationStyleSettings.)
    Public propertyContentFiles
    + This read-only property returns the list of help content file locations +
    (Inherited from PresentationStyleSettings.)
    Public propertyDocumentModelApplicator
    + This is used to get or set the document model applicator +
    (Inherited from PresentationStyleSettings.)
    Public propertyLocation
    + This is overridden in derived classes to provide the location of the presentation style files +
    (Overrides PresentationStyleSettings.Location.)
    Public propertyPlugInDependencies
    + This read-only property returns any plug-in dependencies required by the presentation style +
    (Inherited from PresentationStyleSettings.)
    Public propertyResourceItemsPath
    + This is used to get or set the path in which BuildAssembler resource item files are stored +
    (Inherited from PresentationStyleSettings.)
    Public propertySupportedFormats
    + This is used to get or set the help file formats supported by the presentation style +
    (Inherited from PresentationStyleSettings.)
    Public propertySupportsCodeSnippetGrouping
    + This is used to get or set whether or not code snippet grouping is supported by the presentation + style. +
    (Inherited from PresentationStyleSettings.)
    Public propertySupportsNamespaceGrouping
    + This is used to get or set whether or not namespace grouping is supported by the presentation style +
    (Inherited from PresentationStyleSettings.)
    Public propertyToolResourceItemsPath
    + This is used to get or set the path in which help file builder resource item files are stored +
    (Inherited from PresentationStyleSettings.)
    Public propertyTransformComponentArguments
    + This read-only property returns the transform component arguments if any +
    (Inherited from PresentationStyleSettings.)
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/Properties_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.htm b/docs/html/Properties_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.htm new file mode 100644 index 0000000..c785cc2 --- /dev/null +++ b/docs/html/Properties_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.htm @@ -0,0 +1,31 @@ +VS2013WithLatex Properties

    VS2013WithLatex Properties

    The VS2013WithLatex type exposes the following members.

    Properties
    +   + NameDescription
    Public propertyApiTableOfContentsGenerator
    + This is used to get or set the table of content generator for API content +
    (Inherited from PresentationStyleSettings.)
    Public propertyBasePath
    + This is used to get or set the presentation style base path used to resolve relative paths within the + presentation style. +
    (Inherited from PresentationStyleSettings.)
    Public propertyBuildAssemblerConfiguration
    + This is used to get or set the BuildAssembler configuration filename +
    (Inherited from PresentationStyleSettings.)
    Public propertyContentFiles
    + This read-only property returns the list of help content file locations +
    (Inherited from PresentationStyleSettings.)
    Public propertyDocumentModelApplicator
    + This is used to get or set the document model applicator +
    (Inherited from PresentationStyleSettings.)
    Public propertyLocation
    + This is overridden in derived classes to provide the location of the presentation style files +
    (Overrides PresentationStyleSettings.Location.)
    Public propertyPlugInDependencies
    + This read-only property returns any plug-in dependencies required by the presentation style +
    (Inherited from PresentationStyleSettings.)
    Public propertyResourceItemsPath
    + This is used to get or set the path in which BuildAssembler resource item files are stored +
    (Inherited from PresentationStyleSettings.)
    Public propertySupportedFormats
    + This is used to get or set the help file formats supported by the presentation style +
    (Inherited from PresentationStyleSettings.)
    Public propertySupportsCodeSnippetGrouping
    + This is used to get or set whether or not code snippet grouping is supported by the presentation + style. +
    (Inherited from PresentationStyleSettings.)
    Public propertySupportsNamespaceGrouping
    + This is used to get or set whether or not namespace grouping is supported by the presentation style +
    (Inherited from PresentationStyleSettings.)
    Public propertyToolResourceItemsPath
    + This is used to get or set the path in which help file builder resource item files are stored +
    (Inherited from PresentationStyleSettings.)
    Public propertyTransformComponentArguments
    + This read-only property returns the transform component arguments if any +
    (Inherited from PresentationStyleSettings.)
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/T_Novacta_Shfb_LatexTools_DviPngProcessor.htm b/docs/html/T_Novacta_Shfb_LatexTools_DviPngProcessor.htm new file mode 100644 index 0000000..7309b4f --- /dev/null +++ b/docs/html/T_Novacta_Shfb_LatexTools_DviPngProcessor.htm @@ -0,0 +1,28 @@ +DviPngProcessor Class

    DviPngProcessor Class

    + Represents a DviPng process. +
    Inheritance Hierarchy

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public class DviPngProcessor : FileProcessor

    The DviPngProcessor type exposes the following members.

    Constructors
    +   + NameDescription
    Public methodDviPngProcessor
    + Initializes a new instance of the DviPngProcessor class. +
    Top
    Properties
    Methods
    +   + NameDescription
    Public methodArguments
    + Returns the process arguments for the specified file. +
    (Overrides FileProcessorArguments(String, String).)
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodRun(String)
    + Runs the processor on the specified file. +
    (Inherited from FileProcessor.)
    Public methodRun(String, String)
    + Runs the processor on the specified file applying + command-line arguments specific to that file. +
    (Inherited from FileProcessor.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    Remarks
    DviPngProcessor instances convert DVI files + into PNG files. +
    See Also
    \ No newline at end of file diff --git a/docs/html/T_Novacta_Shfb_LatexTools_DviSvgmProcessor.htm b/docs/html/T_Novacta_Shfb_LatexTools_DviSvgmProcessor.htm new file mode 100644 index 0000000..1e76094 --- /dev/null +++ b/docs/html/T_Novacta_Shfb_LatexTools_DviSvgmProcessor.htm @@ -0,0 +1,28 @@ +DviSvgmProcessor Class

    DviSvgmProcessor Class

    + Represents a DviSvgm process. +
    Inheritance Hierarchy

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public class DviSvgmProcessor : FileProcessor

    The DviSvgmProcessor type exposes the following members.

    Constructors
    +   + NameDescription
    Public methodDviSvgmProcessor
    + Initializes a new instance of the DviSvgmProcessor class. +
    Top
    Properties
    Methods
    +   + NameDescription
    Public methodArguments
    + Returns the process arguments for the specified file. +
    (Overrides FileProcessorArguments(String, String).)
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodRun(String)
    + Runs the processor on the specified file. +
    (Inherited from FileProcessor.)
    Public methodRun(String, String)
    + Runs the processor on the specified file applying + command-line arguments specific to that file. +
    (Inherited from FileProcessor.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    Remarks
    DviSvgmProcessor instances convert DVI files + into SVG files. +
    See Also
    \ No newline at end of file diff --git a/docs/html/T_Novacta_Shfb_LatexTools_FileProcessor.htm b/docs/html/T_Novacta_Shfb_LatexTools_FileProcessor.htm new file mode 100644 index 0000000..b269188 --- /dev/null +++ b/docs/html/T_Novacta_Shfb_LatexTools_FileProcessor.htm @@ -0,0 +1,24 @@ +FileProcessor Class

    FileProcessor Class

    + Represents a process that supports file elaborations. +
    Inheritance Hierarchy

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public abstract class FileProcessor

    The FileProcessor type exposes the following members.

    Constructors
    +   + NameDescription
    Protected methodFileProcessor
    Initializes a new instance of the FileProcessor class
    Top
    Properties
    +   + NameDescription
    Public propertyExecutable
    + Gets the path of the processor. +
    Public propertyWorkingDirectory
    + Gets the working directory of the processor. +
    Top
    Methods
    +   + NameDescription
    Public methodArguments
    + Returns the process arguments for the specified file. +
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodRun(String)
    + Runs the processor on the specified file. +
    Public methodRun(String, String)
    + Runs the processor on the specified file applying + command-line arguments specific to that file. +
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/T_Novacta_Shfb_LatexTools_LatexComponent.htm b/docs/html/T_Novacta_Shfb_LatexTools_LatexComponent.htm new file mode 100644 index 0000000..51658a5 --- /dev/null +++ b/docs/html/T_Novacta_Shfb_LatexTools_LatexComponent.htm @@ -0,0 +1,39 @@ +LatexComponent Class

    LatexComponent Class

    + Provides support for LaTeX formatted formulas in + reference XML comments and conceptual content topics. +
    Inheritance Hierarchy
    SystemObject
      BuildComponentCore
        Novacta.Shfb.LatexToolsLatexComponent

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public class LatexComponent : BuildComponentCore

    The LatexComponent type exposes the following members.

    Constructors
    +   + NameDescription
    Protected methodLatexComponent
    + Initializes a new instance of the LatexComponent class + with the specified build assembler. +
    Top
    Properties
    +   + NameDescription
    Public propertyBuildAssembler
    + This read-only property returns a reference to the build assembler instance using the component +
    (Inherited from BuildComponentCore.)
    Public propertyGroupId
    + This is used to set an optional group ID for use with component events +
    (Inherited from BuildComponentCore.)
    Top
    Methods
    +   + NameDescription
    Public methodApply
    + Performs the component tasks. +
    (Overrides BuildComponentCore.Apply(XmlDocument, String).)
    Public methodDispose
    + This implements the Dispose() interface to properly dispose of the build component. +
    (Inherited from BuildComponentCore.)
    Protected methodDispose(Boolean)
    + This can be overridden by derived classes to add their own disposal code if necessary. +
    (Inherited from BuildComponentCore.)
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    + This handles garbage collection to ensure proper disposal of the build component if not done + explicitly with Dispose. +
    (Inherited from BuildComponentCore.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodInitialize
    + Initializes the build component. +
    (Overrides BuildComponentCore.Initialize(XPathNavigator).)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Protected methodOnComponentEvent
    + This can be used to raise the ComponentEvent + event with the specified event arguments. +
    (Inherited from BuildComponentCore.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Public methodWriteMessage(MessageLevel, String, Object)
    + This can be used to report a message +
    (Inherited from BuildComponentCore.)
    Public methodWriteMessage(String, MessageLevel, String, Object)
    + This can be used to report a message for a specific topic ID +
    (Inherited from BuildComponentCore.)
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/T_Novacta_Shfb_LatexTools_LatexComponent_Factory.htm b/docs/html/T_Novacta_Shfb_LatexTools_LatexComponent_Factory.htm new file mode 100644 index 0000000..9bf52d2 --- /dev/null +++ b/docs/html/T_Novacta_Shfb_LatexTools_LatexComponent_Factory.htm @@ -0,0 +1,26 @@ +LatexComponent.Factory Class

    LatexComponentFactory Class

    + Provides a factory method to create LatexComponent instances. +
    Inheritance Hierarchy
    SystemObject
      BuildComponentFactory
        Novacta.Shfb.LatexToolsLatexComponentFactory

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public sealed class Factory : BuildComponentFactory

    The LatexComponentFactory type exposes the following members.

    Constructors
    +   + NameDescription
    Public methodLatexComponentFactory
    + Initializes a new instance of the LatexComponentFactory class. +
    Top
    Properties
    +   + NameDescription
    Public propertyConceptualBuildPlacement
    + This is used to get or set a placement action for conceptual content builds +
    (Inherited from BuildComponentFactory.)
    Public propertyDefaultConfiguration
    + This read-only property can be overridden to define a default configuration for the build component +
    (Overrides BuildComponentFactory.DefaultConfiguration.)
    Public propertyDependencies
    + This read-only property can be overridden to provide a list of build components on which this + component depends. +
    (Inherited from BuildComponentFactory.)
    Public propertyReferenceBuildPlacement
    + This is used to get or set a placement action for reference content builds +
    (Inherited from BuildComponentFactory.)
    Top
    Methods
    +   + NameDescription
    Public methodCreate
    + This is implemented to provide a build component factory +
    (Overrides BuildComponentFactory.Create.)
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/T_Novacta_Shfb_LatexTools_LatexPlugIn.htm b/docs/html/T_Novacta_Shfb_LatexTools_LatexPlugIn.htm new file mode 100644 index 0000000..5d6e08d --- /dev/null +++ b/docs/html/T_Novacta_Shfb_LatexTools_LatexPlugIn.htm @@ -0,0 +1,28 @@ +LatexPlugIn Class

    LatexPlugIn Class

    + Provides support in MS Help Viewer files for LaTeX content + represented via the SVG image format. +
    Inheritance Hierarchy
    SystemObject
      Novacta.Shfb.LatexToolsLatexPlugIn

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public sealed class LatexPlugIn : IPlugIn, 
    +	IDisposable

    The LatexPlugIn type exposes the following members.

    Constructors
    +   + NameDescription
    Public methodLatexPlugIn
    Initializes a new instance of the LatexPlugIn class
    Top
    Properties
    +   + NameDescription
    Public propertyExecutionPoints
    + Returns a collection of execution points that define + when the plug-in should be invoked during the build process. +
    Top
    Methods
    +   + NameDescription
    Public methodDispose
    + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. +
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodExecute
    + Executes the plug-in during the build process. +
    Protected methodFinalize
    + Allows this instance to try to free resources and perform other + cleanup operations before it is reclaimed by garbage collection. +
    (Overrides ObjectFinalize.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodInitialize
    + Initializes the plug-in at the start of the build process. +
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/T_Novacta_Shfb_LatexTools_LatexProcessor.htm b/docs/html/T_Novacta_Shfb_LatexTools_LatexProcessor.htm new file mode 100644 index 0000000..5f1632b --- /dev/null +++ b/docs/html/T_Novacta_Shfb_LatexTools_LatexProcessor.htm @@ -0,0 +1,28 @@ +LatexProcessor Class

    LatexProcessor Class

    + Represents a LaTeX process. +
    Inheritance Hierarchy

    + Namespace: +  Novacta.Shfb.LatexTools
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public class LatexProcessor : FileProcessor

    The LatexProcessor type exposes the following members.

    Constructors
    +   + NameDescription
    Public methodLatexProcessor
    + Initializes a new instance of the LatexProcessor class. +
    Top
    Properties
    Methods
    +   + NameDescription
    Public methodArguments
    + Returns the process arguments for the specified file. +
    (Overrides FileProcessorArguments(String, String).)
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodRun(String)
    + Runs the processor on the specified file. +
    (Inherited from FileProcessor.)
    Public methodRun(String, String)
    + Runs the processor on the specified file applying + command-line arguments specific to that file. +
    (Inherited from FileProcessor.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    Remarks
    LatexProcessor instances convert TEX files + into DVI files. +
    See Also
    \ No newline at end of file diff --git a/docs/html/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.htm b/docs/html/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.htm new file mode 100644 index 0000000..8fd47b0 --- /dev/null +++ b/docs/html/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.htm @@ -0,0 +1,50 @@ +VS2010WithLatex Class

    VS2010WithLatex Class

    + Represents a VS2010-based presentation style that supports + LaTeX formatted formulas in reference XML comments and conceptual content topics. +
    Inheritance Hierarchy
    SystemObject
      PresentationStyleSettings
        Novacta.Shfb.LatexTools.PresentationStylesVS2010WithLatex

    + Namespace: +  Novacta.Shfb.LatexTools.PresentationStyles
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public sealed class VS2010WithLatex : PresentationStyleSettings

    The VS2010WithLatex type exposes the following members.

    Constructors
    +   + NameDescription
    Public methodVS2010WithLatex
    + Initializes a new instance of the VS2010WithLatex class. +
    Top
    Properties
    +   + NameDescription
    Public propertyApiTableOfContentsGenerator
    + This is used to get or set the table of content generator for API content +
    (Inherited from PresentationStyleSettings.)
    Public propertyBasePath
    + This is used to get or set the presentation style base path used to resolve relative paths within the + presentation style. +
    (Inherited from PresentationStyleSettings.)
    Public propertyBuildAssemblerConfiguration
    + This is used to get or set the BuildAssembler configuration filename +
    (Inherited from PresentationStyleSettings.)
    Public propertyContentFiles
    + This read-only property returns the list of help content file locations +
    (Inherited from PresentationStyleSettings.)
    Public propertyDocumentModelApplicator
    + This is used to get or set the document model applicator +
    (Inherited from PresentationStyleSettings.)
    Public propertyLocation
    + This is overridden in derived classes to provide the location of the presentation style files +
    (Overrides PresentationStyleSettings.Location.)
    Public propertyPlugInDependencies
    + This read-only property returns any plug-in dependencies required by the presentation style +
    (Inherited from PresentationStyleSettings.)
    Public propertyResourceItemsPath
    + This is used to get or set the path in which BuildAssembler resource item files are stored +
    (Inherited from PresentationStyleSettings.)
    Public propertySupportedFormats
    + This is used to get or set the help file formats supported by the presentation style +
    (Inherited from PresentationStyleSettings.)
    Public propertySupportsCodeSnippetGrouping
    + This is used to get or set whether or not code snippet grouping is supported by the presentation + style. +
    (Inherited from PresentationStyleSettings.)
    Public propertySupportsNamespaceGrouping
    + This is used to get or set whether or not namespace grouping is supported by the presentation style +
    (Inherited from PresentationStyleSettings.)
    Public propertyToolResourceItemsPath
    + This is used to get or set the path in which help file builder resource item files are stored +
    (Inherited from PresentationStyleSettings.)
    Public propertyTransformComponentArguments
    + This read-only property returns the transform component arguments if any +
    (Inherited from PresentationStyleSettings.)
    Top
    Methods
    +   + NameDescription
    Public methodCheckForErrors
    + This is used to check the presentation style for errors +
    (Inherited from PresentationStyleSettings.)
    Public methodCopyHelpContent
    + This is used to copy the presentation style help file content to the given destination folder +
    (Inherited from PresentationStyleSettings.)
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodResolvePath
    + This is used to resolve a presentation style path +
    (Inherited from PresentationStyleSettings.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.htm b/docs/html/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.htm new file mode 100644 index 0000000..bfba5e1 --- /dev/null +++ b/docs/html/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.htm @@ -0,0 +1,50 @@ +VS2013WithLatex Class

    VS2013WithLatex Class

    + Represents a VS2013-based presentation style that supports + LaTeX formatted formulas in reference XML comments and conceptual content topics. +
    Inheritance Hierarchy
    SystemObject
      PresentationStyleSettings
        Novacta.Shfb.LatexTools.PresentationStylesVS2013WithLatex

    + Namespace: +  Novacta.Shfb.LatexTools.PresentationStyles
    + Assembly: +  Novacta.Shfb.LatexTools (in Novacta.Shfb.LatexTools.dll) Version: 1.0.0.0
    Syntax
    C#
    public sealed class VS2013WithLatex : PresentationStyleSettings

    The VS2013WithLatex type exposes the following members.

    Constructors
    +   + NameDescription
    Public methodVS2013WithLatex
    + Initializes a new instance of the VS2013WithLatex class. +
    Top
    Properties
    +   + NameDescription
    Public propertyApiTableOfContentsGenerator
    + This is used to get or set the table of content generator for API content +
    (Inherited from PresentationStyleSettings.)
    Public propertyBasePath
    + This is used to get or set the presentation style base path used to resolve relative paths within the + presentation style. +
    (Inherited from PresentationStyleSettings.)
    Public propertyBuildAssemblerConfiguration
    + This is used to get or set the BuildAssembler configuration filename +
    (Inherited from PresentationStyleSettings.)
    Public propertyContentFiles
    + This read-only property returns the list of help content file locations +
    (Inherited from PresentationStyleSettings.)
    Public propertyDocumentModelApplicator
    + This is used to get or set the document model applicator +
    (Inherited from PresentationStyleSettings.)
    Public propertyLocation
    + This is overridden in derived classes to provide the location of the presentation style files +
    (Overrides PresentationStyleSettings.Location.)
    Public propertyPlugInDependencies
    + This read-only property returns any plug-in dependencies required by the presentation style +
    (Inherited from PresentationStyleSettings.)
    Public propertyResourceItemsPath
    + This is used to get or set the path in which BuildAssembler resource item files are stored +
    (Inherited from PresentationStyleSettings.)
    Public propertySupportedFormats
    + This is used to get or set the help file formats supported by the presentation style +
    (Inherited from PresentationStyleSettings.)
    Public propertySupportsCodeSnippetGrouping
    + This is used to get or set whether or not code snippet grouping is supported by the presentation + style. +
    (Inherited from PresentationStyleSettings.)
    Public propertySupportsNamespaceGrouping
    + This is used to get or set whether or not namespace grouping is supported by the presentation style +
    (Inherited from PresentationStyleSettings.)
    Public propertyToolResourceItemsPath
    + This is used to get or set the path in which help file builder resource item files are stored +
    (Inherited from PresentationStyleSettings.)
    Public propertyTransformComponentArguments
    + This read-only property returns the transform component arguments if any +
    (Inherited from PresentationStyleSettings.)
    Top
    Methods
    +   + NameDescription
    Public methodCheckForErrors
    + This is used to check the presentation style for errors +
    (Inherited from PresentationStyleSettings.)
    Public methodCopyHelpContent
    + This is used to copy the presentation style help file content to the given destination folder +
    (Inherited from PresentationStyleSettings.)
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodResolvePath
    + This is used to resolve a presentation style path +
    (Inherited from PresentationStyleSettings.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/T_SampleClassLibrary_Advanced_IntegerArrayOperation.htm b/docs/html/T_SampleClassLibrary_Advanced_IntegerArrayOperation.htm new file mode 100644 index 0000000..e042ffd --- /dev/null +++ b/docs/html/T_SampleClassLibrary_Advanced_IntegerArrayOperation.htm @@ -0,0 +1,11 @@ +IntegerArrayOperation Class

    IntegerArrayOperation Class

    + Provides a method to operate on arrays of integers. +
    Inheritance Hierarchy
    SystemObject
      SampleClassLibrary.AdvancedIntegerArrayOperation

    + Namespace: +  SampleClassLibrary.Advanced
    + Assembly: +  SampleClassLibrary (in SampleClassLibrary.dll) Version: 1.0.0
    Syntax
    C#
    public static class IntegerArrayOperation

    The IntegerArrayOperation type exposes the following members.

    Methods
    +   + NameDescription
    Public methodStatic memberCode exampleOperate
    + Applies the specified function to the given array of operands. +
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/T_SampleClassLibrary_IntegerOperation.htm b/docs/html/T_SampleClassLibrary_IntegerOperation.htm new file mode 100644 index 0000000..b566e82 --- /dev/null +++ b/docs/html/T_SampleClassLibrary_IntegerOperation.htm @@ -0,0 +1,11 @@ +IntegerOperation Class

    IntegerOperation Class

    + Provides a method to operate on integers. +
    Inheritance Hierarchy
    SystemObject
      SampleClassLibraryIntegerOperation

    + Namespace: +  SampleClassLibrary
    + Assembly: +  SampleClassLibrary (in SampleClassLibrary.dll) Version: 1.0.0
    Syntax
    C#
    public static class IntegerOperation

    The IntegerOperation type exposes the following members.

    Methods
    +   + NameDescription
    Public methodStatic memberCode exampleOperate
    + Applies the specified function to the given operand. +
    Top
    See Also
    \ No newline at end of file diff --git a/docs/html/b10d4d75-3729-4247-a58a-b9e5b6e4bb4d.htm b/docs/html/b10d4d75-3729-4247-a58a-b9e5b6e4bb4d.htm new file mode 100644 index 0000000..85e4abc --- /dev/null +++ b/docs/html/b10d4d75-3729-4247-a58a-b9e5b6e4bb4d.htm @@ -0,0 +1,53 @@ +Operating on integers

    Operating on integers

    + Class IntegerOperation provides method + Operate + to manage operations on integer values. +

    + In the following example, an integer is squared + executing the Operate method. + This is equivalent to define the applied function, + say LaTeX equation + as LaTeX equation + In addition, input validation is also checked. +

    C#
    using System;
    +namespace SampleClassLibrary.CodeExamples
    +{
    +    public class IntegerOperationExample  
    +    {
    +        public void Main() 
    +        {
    +            // Define an operator that squares its operand
    +            Func<int, int> square = (int operand) => operand * operand;
    +
    +            // Define an operand
    +            int integer = 2;
    +
    +            // Operate on it
    +            Console.WriteLine("Squaring {0}...", integer);
    +            int result = IntegerOperation.Operate(square, integer);
    +            Console.WriteLine("...the result is {0}.", result);
    +
    +            // Check that an operator cannot be null
    +            try
    +            {
    +                IntegerOperation.Operate(null, 0);
    +            }
    +            catch (Exception e)
    +            {
    +                Console.WriteLine();
    +                Console.WriteLine("Cannot apply a null function:");
    +                Console.WriteLine(e.Message);
    +            }
    +        }
    +    }
    +}
    +
    +// Executing method Main() produces the following output:
    +// 
    +// Squaring 2...
    +// ...the result is 4.
    +// 
    +// Cannot apply a null function:
    +// Value cannot be null.
    +// Parameter name: func
    \ No newline at end of file diff --git a/docs/html/cf22a47c-7bfd-4e16-a103-b99e83335270.htm b/docs/html/cf22a47c-7bfd-4e16-a103-b99e83335270.htm new file mode 100644 index 0000000..f27bc25 --- /dev/null +++ b/docs/html/cf22a47c-7bfd-4e16-a103-b99e83335270.htm @@ -0,0 +1,4 @@ +Version 1.0.0

    Version 1.0.0

    + Version 1.0.0 was released on November 15 2021. +

    Changes in This Release
    • Initial release of the assembly.

    See Also

    Other Resources

    \ No newline at end of file diff --git a/docs/html/fe868fbe-1bfd-47f7-bf24-e1fd586864c6.htm b/docs/html/fe868fbe-1bfd-47f7-bf24-e1fd586864c6.htm new file mode 100644 index 0000000..850c377 --- /dev/null +++ b/docs/html/fe868fbe-1bfd-47f7-bf24-e1fd586864c6.htm @@ -0,0 +1,24 @@ +Welcome

    Welcome

    Novacta.Shfb.LatexTools is a .NET library + that provides types to manage LaTeX equations in reference and conceptual content files + generated by the + Sandcastle Help File Builder. +

    + The project supports SHFB, version 2021.10.23.0 or later. +

    + The library is licensed under + the + MIT license. +

    + Documentation +

    + The current documentation includes the following topics. +

    See Also

    Other Resources

    \ No newline at end of file diff --git a/docs/icons/AlertCaution.png b/docs/icons/AlertCaution.png new file mode 100644 index 0000000000000000000000000000000000000000..78f246f047efee82e1ee0b64f1adbef606253054 GIT binary patch literal 618 zcmV-w0+s!VP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-;7LS5RCwBylfP~gK^Vk;-}-FFIChME=h(5G2(T6; zpah97qN1X89i>STp`=JblN3Bb-XLY%Q1AcdkQrp!HXSPCG~edkf_v zbNLd`4I;g&my7af(tY z!^x4-&e|Q|sk}S%YrxB;<)U85f{Q}17Mvr0|04k1_t(Mm5D^gJ?7QL1(b)&!p$F_H zQ=ZPJBkW)V#(=Z@IwE#7fKVZ7{EzbK1jh-bjj_8Pu)0*s;YK}N6oDJ3Bf{6$rO6{A zf)fBiL|Ck3`TVK7>H(*(-W>D)7;>$iJe67F{IB>i05~0`Lczgc$^ZZW07*qoM6N<$ Ef-W!&ivR!s literal 0 HcmV?d00001 diff --git a/docs/icons/AlertNote.png b/docs/icons/AlertNote.png new file mode 100644 index 0000000000000000000000000000000000000000..dc76333741e7eec739bce61fe0bbf7e48ef5c8ee GIT binary patch literal 1054 zcmZ{iYfMvj7{>o}5EMa4Ad$FRr5Adkvw%8UvJ4igB?Dy8NOcIvwb0hWIAy>D3M>o< zGHyb_238cYRG3u8z`4!4b5fYF81&OJ1PW-er>E!EChYKWAC~;y_sR1l&xbd8&!r?E z4e;CN2LK32kjAG{8n`_>-l8@~uqTZY@4~pGH~_}K+vPd!LwS0xG&Ko;Di#2`1^|dH zO4k6;3ISNp20*L_V6Ubl>%kEKXn`q-GRfA~)`W?FW0*fa#Q)(kZ`8;)5AaO=ykP@x zsE>C^&o%aN2f8?h4(`P^?)VVTLoRs8c@IJH)I&b)ZswScRQRWdpqTRzvu*x4B1RcS-cl`TDRyJ(t98ljv`x z>sJ!}g>c;>Tt5@8o8&gr1TsY+lTEek{!T85OcKZh;k-dOEx2=>a9$^zV>mpD!`B+B z*uAYB95&e4Z+ z7TI4@GVApto%P|i=L+X)1!60Au2N{7t59hXv%ZoIuR>;{r0~>x11-@DQ)yO9YFA^V zZ7~a8QNzm=Dor7?M$3Yim5$}&xqIn~Q~NsWc->#KT6BWD6VjK@PCAzI;H7+ZKC`Nn zRjFZ@Ygk$}3sSPml+02EQ=QMy6fo5V%rgZHRW3u7$E2R&rmbY1`XetWH8~B$t}GU8 zo19ON#)BrGccqlsSt31A2EeYM?ePMAh7c80_2p!Es%cgUf;h~|Se!+o3J#Aeb-R>C+t;xx=AB@F%efZ^`V+SEo{4hcSDMDh7CVS71kJy|JoSw`x~N=*6E`ncjW9v){SLPH0A|+~=cCH+d?+BJpR6L%~ zf0BMJ9E}aWDS)PeHB8D=Mh`|AO~BIhj-eBuJ9u$3Drf{} zF>4e-6o9|k-P;^zp(G}o+k;ec1O#g<5k!p<3mXf2!IaktVku~48GAv{RuEBy5X2vl z#t`C}C57MRV)tMtBW^pOj9bC84h9&!WM3@%+kg+#{JoaBE&hFgzeSF?RlT} z9&C3kv^j^PLoUr+;3}V4+Moga8-Q)sZ8czJWypgkuQIzg&*$XwMPRdBFScOivh=v; z!-HXNd-tayjs;t{iuDD+DIy0DF(86SZnh{T7y*>~2S5S5exw8-D&5Hr&L;1&b=SH} z$=1Y&L%h;Q0Pa6Ke#HT}J~t0Q?m tQ)sP!{{^91t5K;`{%`Qbw-vBLDh*rjvI{K}%vsHm@h_?tw;Z7`jJPwSdcxnw$~gG!RFk%*O*|I1~?_r=Vw zW31k*ZJTPZXD-TrHg274%78fS{q4kPEz6ow%IwOa&Zb~yd6;xJgr$h)xL?S8H^*){ zp<^_vpM8wGik;1zgtUU`!F9`^RlDZ8o2#KvOh%~ItUx<8m&TTvYdD#5KgoSI$$&Y` zo>9tvHrAF=$caVbrC^oCleOlxnP@f1x`BYNevGeAzwg4P)T&`vMTm%qrD-ymZaeFe zLb8BL$&X25Vq(gVN10|b$9Xr%dpF$l+yDRn000000000000000A^8LW004UcEC2ui z01yBW000N6fO~>_1}SLPB)mW!_w<;6q)BF&{is;nBp+15yFz aYzYIwMwU7PNbLy_pn!w|0x}K?1OPh{BoK)J literal 0 HcmV?d00001 diff --git a/docs/icons/CodeExample.png b/docs/icons/CodeExample.png new file mode 100644 index 0000000000000000000000000000000000000000..a3b9fba4cc5f29460d711dddb32b79b85783af9a GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!AMUR#}EtuMf8pRk0XW?`S;ryG~}Z?XkE$(i7NV%yAs7l(t? nuW2~*F(>VD=(TZ|HfE5{S-0gp>+@4UOBg&|{an^LB{Ts5mnuH4 literal 0 HcmV?d00001 diff --git a/docs/icons/Help.png b/docs/icons/Help.png new file mode 100644 index 0000000000000000000000000000000000000000..945e89fb96271c85b901f1e656e9920c788c48e6 GIT binary patch literal 4942 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 M07*qoM6N<$f`j^SBme*a literal 0 HcmV?d00001 diff --git a/docs/icons/Search.png b/docs/icons/Search.png new file mode 100644 index 0000000000000000000000000000000000000000..42165b6d64c2ad706179b7eaa0485caa089e6ed9 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^!ayvawSc zV~Bl)>eG>!R=iK_%P!ZR!uvNw-nA5}SoCV%;XLf~kk5Lzl-FVdQ&MBb@0IsfxDF6Tf literal 0 HcmV?d00001 diff --git a/docs/icons/SectionCollapsed.png b/docs/icons/SectionCollapsed.png new file mode 100644 index 0000000000000000000000000000000000000000..8ded1ebc6b03328520aac9416ea15f07e63809a8 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xamUKs7M+SzC{oH>NS%G}c0*}aI z1_mK8X6#Yg$qp2hDshb{3C>R|DNig)We7;j%q!9Ja}7}_GuAWJGc|_p9mFVf> z7-HeScG5-81_K@!>nOKVY?6k`bMLh$RNeCW@W8S5!vYcZ1~H{GJn!n{R?im{6g+Vz zSEosFd$((h;`T1rJI?QP_2g6db}rxH@?`sl(yP}VuTfHJdZ?$QbZh?|a|1rj<3Z`n T`6XRI%NRUe{an^LB{Ts5&hJQu literal 0 HcmV?d00001 diff --git a/docs/icons/SectionExpanded.png b/docs/icons/SectionExpanded.png new file mode 100644 index 0000000000000000000000000000000000000000..b693921cc92c2b00c06b842c8d098ea63afc1cfc GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xamUKs7M+SzC{oH>NS%G}c0*}aI z1_mK8X6#Yg$qp2hDshb{3C>R|DNig)We7;j%q!9Ja}7}_GuAWJGc|_p9747Nb z7-Hc+xBDRP0RtW;<0khn|GalRO}y^q>HN!rlhIu1k@%L71xuN9)9?JPQ?iR~71fmO zjGc5ea*~T$?$N0%zt%JTnB?&Pl+X$N6$xqUli92599x4kcB&s^{ZR0-?|xgoAkZ2H MPgg&ebxsLQ08eg56951J literal 0 HcmV?d00001 diff --git a/docs/icons/TocClose.gif b/docs/icons/TocClose.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6d7b5edcc237dc7d59b4a42910a4abab459c94e GIT binary patch literal 893 zcmZ?wbhEHba}ave*XOV_wV2T|Nk?Lg3%Bd;vt{|az7|9FmPxysB_48 t1Sl}Dva;%BI4C4Ca`Fg?$QUR#H8gQ3@l*tSXkcXLWOnfIFj8Q!1_0$!Io|*P literal 0 HcmV?d00001 diff --git a/docs/icons/TocExpanded.gif b/docs/icons/TocExpanded.gif new file mode 100644 index 0000000000000000000000000000000000000000..f774d9bb6589737768a8bf788046a8bbe53ca902 GIT binary patch literal 837 zcmZ?wbhEHb7O#s`Kb79LTx z0D+J54|j4a#f5BWU_8vgZ&{@x;lOZgBD1%Uz|TO2Mkd+leI^Z`=6lUB4c(-YS(JWi df}!fKEgT`qC%VM7g+j9?zO-NdpNWaV8UQoLL&5+6 literal 0 HcmV?d00001 diff --git a/docs/icons/favicon.ico b/docs/icons/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..2b9963f814281f0b1b7bb661be8d579191b59a42 GIT binary patch literal 25094 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 literal 0 HcmV?d00001 diff --git a/docs/icons/privclass.gif b/docs/icons/privclass.gif new file mode 100644 index 0000000000000000000000000000000000000000..0939694ce08ad44508f6f017b68e46f0f22377b9 GIT binary patch literal 621 zcmZ?wbhEHb6krfwc;?UW|NsB|hUt&r{rL9oM)d3(_aDFd`{wV%RU+Tt-(Iu*bdPSY zqjyAO5)Xs%%*W4OT}r)t^1|KQ1$X{_`1|40mlNl1p1OGN*VKPj>%-QMrvoZ0aqv=U>zv((uk1Z`&AIsGhXbbm$u+t4({AM4 zoUwe*+pV&@k6t-)=GK>oZB<oaqPkBNogHUHno4%^Ngbh!J5dZ96zXj&rOBmSr#rWBn`?Qta4AyNBlN99gXZF;U z(BWY`VYPQZo4>HAqB^H51EW8i_+6gJ+{k9ar8DD%q6<$7gRGgrgar((tRfl{0+c)& nCbWOC3iz+epk2~OYT literal 0 HcmV?d00001 diff --git a/docs/icons/privdelegate.gif b/docs/icons/privdelegate.gif new file mode 100644 index 0000000000000000000000000000000000000000..d3aa8a65ef5277c6682f106de956da036c50d363 GIT binary patch literal 1045 zcmZ?wbhEHb6krfw_&$x{|NsBD3-0`y@q4k|5=ZZdhfm);e)ek3_S5^0UpsN`=JQu? zFQs0-|M=CZi}!XMxOD0IqaNMfjl0hJCs*%1c5Tz{a|>10-$^W=rQx9>k+>ALFmyU(xQe4H?EgI8Snr_bMJEZ?*H@RcuL ze=OZ_+&{Ty;o2jswjSAiIO7^wyn6fTZ3ixeXEp6UdL_BEH>IrC+CTH&qnA?_ zZr-r_?BoSIFQ;Fbx_Ik^d0S4LzjJZVqo>#39XfGw&#H^BC%mcZTCnHn)n99Wox5`H z=da%fPF&x-_rl%7FP}Vr9h%+{U)V8w*_Mra&Odl`_2jZ^p&5-&p1+&CaMzAQm*=cF zU=x^q`R1Lk-+rv!ekLNjxp&UC=}Y#m-gbJC-Qv>LIg{q^j4SB0@XI)R`PRnW=VJ5Q zXDr?K;^v1fd(Y(7PdmEh)~oK}Z+;!hSv z28L-2Iv@i;d4hrC6N4_N%!&qId44W7EtMCGCW#wQIi?e0vCxHsp-kl9Op6K4Vs;D+ zcRp^uaCVY-@DqoX8Ynj67>A_%qWsZWPnuD}Kw%&~mCC`=#izx;#2uhqQ1RGQZ~`_sezFVAOg+I?={@oQh6&3J#O_0`3qcQ@)kJ)ZdG+03e*WmVnF z^Bd>vIB@CF#g+GVc;49Hc?*VhX^eEL$_I;S?t z;q-yc?{Bw0JskD*+0M2c_oqi=CRPT;=C|KGzkX&z#JAUn!n2y*T&c`&nEqh9%hwnC zj-0t!6=(DDL0?K)@6G+0dyidvbv}Rpw$;g{y)%~Yxxd46$H7ahx1WA_Dm}e?LT>%E z=ORU|^GzS5cL1XHZiY5LXoA)t{s+AtlYi9Tz=Gm|uiP)WbllqpPP+ z)n1a1MVG-Qb@J5dGyP4i^w=yDcg>x@Fn~iQhRG>ed)KlRqDdT#Ok55L&0)4WTUh+8 zU7DCIG@4uk%^kgCje~tTIqkw(n`EO*4C6yN8JXA^6cbM@GzwzkiQs5z?rCOXl94EQ h;J~8BE~;=s>7Yl8atNQ8$3hiOG3k^KQ#n}}tN|oJ0crpM literal 0 HcmV?d00001 diff --git a/docs/icons/privevent.gif b/docs/icons/privevent.gif new file mode 100644 index 0000000000000000000000000000000000000000..30db46df766c1b49bf86b168eaae03052ce8f292 GIT binary patch literal 580 zcmZ?wbhEHb6krfwcoxC%u)XR2<5$m5ME<&1wr2ZjNAHM}7w(?Ac<;oyoByBGKYsS= z!>2EQo@`jK`p~A`=l*@Vx#Pg4eaEjod-~|o^+*5z|L>^sdbOcGw|?5!19>l>J$(7} z{;?esvXVR|%-eGJOka3b)BFnAZ|^Vv{PMV`DW&#T9hkzICOvb-pxf=`s=6a*ZoWIz zncpzIeag~^VDI;PCrob+ez~A=_t7iqfi@{+eH(Y3%?r|f{`lU39rK<(ymj|z)7mD5 zrw^`IbuB!xslq?GCb_hC@3CvEx1X-eaXWu-;f{ls(#t3KCsj|)mk0WVVIY9wPZmZ7 zh6n~7kmaB_VPId_5Yg1!(%ROnB&Vz4>1!6;9>K)JX=TD-E7GpT#LsNOAR{z!GP4+i z=;C(8xe^TKMzh+PI5{=#92lIWnz-2oTv$x)gOr&WT)msw8CiG(d?KWetLrp#Tk1El zSi2t&_h{jAlx1VncGhE1P;F&n{J)Pg~o YNt8WsjZ2WhW2dPS@^dsgL^v3%0lNU+2mk;8 literal 0 HcmV?d00001 diff --git a/docs/icons/privextension.gif b/docs/icons/privextension.gif new file mode 100644 index 0000000000000000000000000000000000000000..51dd267f0f7fa11a657ef51a69cb9159ced8775f GIT binary patch literal 608 zcmZ?wbhEHb6krfwc$Uj>|M9Ey9p}}Y>Kwfz)@(n0{n3wKGk%}Cc< z_}MGFi~}D&eOa*j(7xl>E?s|g`Sz<#yU*=7aOue|7!l#yEE=pbuCOO>kH3nI&$V# zjc)DB39o7_8sE)*uj)OkMz7}o|NlqM+G+UdKH=Bu-=(c{a_gsQ z1uU2rG~KoM((a>IdQJQC8>WYKecrh1?6QF6Z*RPfE9eZ(Xq;m+*QfS@Z~c=GS3ax^ zTJ>w@@5E{UcO1MFKjq)+iEn)CAJ^&CP4Jue`SIu17hjhcRQy`^J9g6Fcl+M0-hSFY zsoJCbCeRHGWC6vWEQ|~cxePiW-Jm#OVBg!2+mtK9sNLMr*(%AH(%Bisn3JRM%%x*_Q%!)u8UTgK6xaX& literal 0 HcmV?d00001 diff --git a/docs/icons/privfield.gif b/docs/icons/privfield.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbf70f7a3fc3875ee62d9a4dacf3a088e60f2eff GIT binary patch literal 574 zcmZ?wbhEHb6krfwcoxXOU_A5w<5$tMZ>-sV+R-~==Gp&`pS{|2ck;sB zs9D$d9ly5Yz@<&Q&uu;O@WZDsC9Cc&SbgZy^+%N(9`8MN?Z}y%6XtD6FP{*e)in3~ zzufw1b5DMnaOB&iXFs-|e^#^Q<&J}w)?fS6ec;Rd3;%W>y&~tgvS#!1OV55@eerwW z>8D3;f7FcHFk|_i)!R>>ef+a_)6>Nl|83lLHm;y^;^B`~T?=Do-)Ne+#58$p#rnq@ z;p=xFzH;Qut;^4U{r>&u-rHZLt#eY!di|5Cv#KYq*?aHM%@6qv)B6s6UU=bOMceF@ zvc9J6ue$cWTYU13e{xOrrl-$8{{H{}Kf|B_ia%Kx85jZ?bU-cw#R&uZ?1sRm=9bpB zHaUZU_EvpM9})YWCR<-wR(BDN9!-B`R#p!gogQ@)DOMGBHHIERZ+1g=D~7d!0-U@? z%mRW;3Q87Rw{bEu3yGSVF)U@oS6M zA3Ad8=A4!LcOSW$UOu6=Z^@K}JJxPL8J*X*|M-=-g3j&xFKyU)V)>?{I}TpXZ~<8FFA!5q?GmgC)b2$HO1z)FWq>|KdHLBV_s-R-W7qZ^xtdtqH)rL+s;-4+F5gKh>zlEBk85Oca%u1E75ir{-(B0g{Nd9# zy|Xv%K71v)w13l{a|_oV*|_WMw*9Ab>!+2r&Z+KNvj6DiBWG>_y~!{@K=CIFBLhP? zgAT}kP@FKZFKY;IYHn$5Yvu6MkYR3b=1}JKwsGk75|9;ZQRHQ1XO;2{7vK;Tv@llE zQ8i=dV%PEww-YrK_mH=CRq&t38YmJjCMfRI!tAads%9?~&cq`ez{u3h9AYkVE}Vyf zQNq@-@4U1N7Z;=E)pj;hOKxsmXSP0WhVKk~l5TxI3@i+?J`E2w7#dhugj6aV4hyoe bg&D1>Sm4~I%pAO=LgC{f*1gV+3=Gx);f>!6 literal 0 HcmV?d00001 diff --git a/docs/icons/privmethod.gif b/docs/icons/privmethod.gif new file mode 100644 index 0000000000000000000000000000000000000000..71f882264291eb056bc55dce1c73f9b7cae1aa4a GIT binary patch literal 603 zcmZ?wbhEHb6krfwc$UHN|NsB{k6)edIDhH-BS-IuHQP_0ICpc??sJcyy*hRA-iJ?L ze$DuO^1|H}0V}UwUGr|~``!6_zJFLf1uPs=8=+o^_@AkcWyykJKdg;o5 zRcp4cO)Tnsaq-2=r>kFIe7)n~r6Xr+a6D*XPzhEogdr`Gor$?uTbJUCqDx;p&H8)4r=Su0A{SY{rsxbq4hpvo3Yb zTvysUr$(=)P^IYQgjc<@*Zx}f``z64DP_I$ZRY>}{pZ*0-%~B7olZY9f7R|9-P$kD zzFf+_TyN0u`SIt=H*SBp^5M;;Hxv9OR%uuJC)eygd}Z&kYjFjgZ*RQ)wfgsm#~*U* zr=^tj{hIlEj?LUh>mU7^|NHgCHwTZbSrxH*!n`dPb1zkO%w4_xbbkF5V7M_*11SDv zVPs&)V9)^>28t5~_8kowP0cN0Opz^}&217)zFjT;OyUj+rW!4Rd|Flv25}MG+;&V} z3=@(B_+7bU)B_m=<@ge%%`?eE&*(~qUwlq@F(Tx>i;Nlc!XZ6ca;`P?Fa5nK| z;ACVKW%g*2m2wwy3o_2xq2V9{v&NLh ymNqX2CINOIi^Cfn7?@djBrFazCbqIDYBX3REMswIvEH(0gHSS;U|S;tgEasMh7D{0 literal 0 HcmV?d00001 diff --git a/docs/icons/privproperty.gif b/docs/icons/privproperty.gif new file mode 100644 index 0000000000000000000000000000000000000000..b1e8074654b3fc0601b0302f1be7b39f5bf5eb7b GIT binary patch literal 1054 zcmZ?wbhEHb6krfw_&$T-|NsAs)*t!*_xJtBuWIMsU$g!6|JQkr-VrCx-Te0d|C%NJ z|KDc#`iGpnaQD>3dpizXdi?CwzT?+6?LK$##HE5n?}9|H1*;ETy8h_kiHi+|F+YC) zd+_viY3rPnvfkYKX@^c;e);mzk;$UQ>Y{gVUU{=ZaB^$$wHr64wgkWb^84*^@73E+ zf4QE%Zbro0!wx@w{k?ZEv8rpKe^T|Gy&(BuL?`9o2b8GLhYo9Mg{CZU6pIo!!;H4vHZhpI+=@Sqfn$b98`JViS z>9P6kH|{<=asK9nd0XypGDaQ4Lh`rPOfGiB|kYwkSxG`b>k*`oNO7)Rg0u+B-# z18g0q&0TV2$JD1!?uTbJ)z&xlObBqCXS85iLwZ6`cTr$+Y44wZ{}xYgc=YVeuU$%d zicHs5>iJt4eERnH>E*U%2iKiDb?DLAsx@mjMEZuOl=c1m{r~U3e{*)seD~}B)7PJ$ zz59LO_{HV>mT0EQ{QLiZegvM@3* z%wW&~X$9p829DnhhMY%Cj-2iAu6$vlInmK)kpr_~;3LCh4M#P#Q*QiBR9>`Hk~>1; z#zz(RF58Sgfryzdj{U;ie_|$HYU1RyEas3fT)cpz)v;7;1EaHA3%^t7xQ zt(lQk$EC6HC36DtS^a6kC&EH94>aBumn&dwYH7?jjd&y?(eQwQiA89WOHal@#wi@3Dl0lR)+n&> P$sO`(a%OdMV6X-N?RS8o literal 0 HcmV?d00001 diff --git a/docs/icons/privstructure.gif b/docs/icons/privstructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..ed6d1ef68f8736e5c05137be2af0ff7714ddb85b GIT binary patch literal 630 zcmZ?wbhEHb6krfwc$UZT|NsB{k6(RzcjN2h?jGIVhpR-szrX#Y;OUy}ryac`8k2Z_ z@BIDv-H#LJZvJ}l`*!M`Qy1@@ym0sat*<9$h(CVz>ir&_-|zqIIB@CG^+(RdC-)t{ zwqW%k2IHCEUeEn_%=zsWiC@ouZ`ytC_q#uzZe4l1S>nT|FQu(>er^Bt?bY0GYrb7d zy*#gi@9oUD{z=t$my4#9^~M!+KB#{9Vd2N!hp%khb@t2cQqTF1cOShHo8O*N)>pXg zHH@xPxjsT^kdVHrL_XzU(fST zu9>&-#=*NkLo*uhoIn5Zxbw$14}LsZ{^>%@yZhUJzFe1EKP^0~>Dz{HpKp~Oxc4o+ ze8Q^qrg}0wC#Qc1@2^f+LqyxpDEQ|~cc?>!rt)MtzV87gu*Tlfa%EZvr*_GGAsv#WQ z(cRoC%WNv#-qY2a!kl66Ka)XhQXUiQw9FtmQ57yG_N7gFp3D(BYvs9=`MKGZIy{&| zas!=qE3_;~z{nwOo0cu4rD^0GYsjLS9HY&}k>n#O z<^9_#Rm)yEerz82^S71ck}Y`NGQz`RA_YP5iejl$gyCd w0t=&*O2!2Rm&vL;0yA$hJnU(cRXnwYAz4e1RXB9Zfenj}c%OG^WMHrc0AYACZvX%Q literal 0 HcmV?d00001 diff --git a/docs/icons/protclass.gif b/docs/icons/protclass.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f9294292a9b5f94a281de7657b5555d06bb4a96 GIT binary patch literal 600 zcmZ?wbhEHb6krfwc;>?J|NsBT?|$SrO#k-o#@{!8qi5gvaUU(s18H{JnJp2FehrhQA?)+N&>)iqU6Enm=U(5M5fY;zXP32Fyxl50uY&Kx0h7BEa_ z?`}`~_jQeF^42G}kG*|#swZ3i{XYG#uh+de5exJS!%zc?KUo+V7+e^1Kn@4R2?P7q z2A3um22KuUhUTv3Rt|a5j-IYweO2iRO$>saEp2LIin69W%r1i5vwPJSD61@SVc{0$ zW?}BrkT%y`zfo9Rh>wBUOiR|0hv}r@z5^@__Ply>21}VX=$>`4;I(99Gf{H6wt-Kg ziPy=-fn9;?QL_XqqYJM!8#}wmyT^>I0@{ov6%2_E_j}6!DimmZXz1u?W)nFfFy+ks jL+qbB9IhJYjEY8z0)sUGw};FY literal 0 HcmV?d00001 diff --git a/docs/icons/protdelegate.gif b/docs/icons/protdelegate.gif new file mode 100644 index 0000000000000000000000000000000000000000..b209f2d816d78188dbcd93907917d7a0ef34eaa9 GIT binary patch literal 1041 zcmZ?wbhEHb6krfw_&$N*|NsBD3+~+A6ZPXp#$vlAiyQQQ&G>zJNB#3xZ!e`@es@5B z!P>(;y1i#F-}-;v$UnLI#LD>oJSE4_{Mix^8B4gbm`4|&u-s;K7H|8YyZs6doR3x z_j&TdT|a;QzPRU+cYNjj^Xpc+uA07N@6j!{KD@sF_1lk==kIRVefIw2S1Y%i+_-M) z-ecE}pSyD{_tJ!U8y49u{fPP+3%f) zFMoJ(?Q;5+wL8vCUa)iavMt*WUINA!!ziF$2q^w!VPs&Kz@P&%5|k$xINmWRa>{fl zaL=>hVAE3JU}|3=V-}|qvSL}Us7ElH;!KMVf^0?;7;-c>3bamE^yxBiI-JPZ%5C1D zlgXgT(lA?dhsMfcr2~9UzGi0{Ltdygs2goj;e4RvFx{n0&S6)vf3EF6*!Fv!K9+hCZoKv#l4gfF7O*r}nJDO8B1BdLL*QL>%yjiiD@LlaY-SSZH> z@l#x!T?!Tw1r}#TG8VDV9AMK_f%j88HWS`1}G*;p8?0XW=!tN;K2 literal 0 HcmV?d00001 diff --git a/docs/icons/protenumeration.gif b/docs/icons/protenumeration.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc96bb635982abc9d306f219ebdd71d29f95757c GIT binary patch literal 583 zcmZ?wbhEHb6krfwcoxO*cwfNXJyAbyWGrsbORt)`XI}KX1Nx8l`hR;p|JB8!{ye2m zk0*Y4Hsj0lneXqkzPnNX_FB!CXEVRQJ^%Vr>BoDW-`_5)>RI;bVSiQk^1Q~`_jY(b zy0~)tH18W596!9ie`%$~|MNy?78$<2Sp4<%g8arg54O9UKCt=oqt(k=EpDFOI=>_C z^~1B@UY)qPKlAC~sLu~q&1{HRGO_gO(U`_G=gmtdytz{O{&s73q0h$$edSS>Z8`2O znXX@-?fm*?)7KaKUYv;i_jS$9BQxKh=+*iB+9Zb^Gs7O8ZGCe4*rPpu?{7E1 zJe@hOGymnO^yk+$KR=Q3;`Xc`Z%*Ie;n|Zd|Lygmm*=Xh;%pvX-v0XbmZyg!|NsBb zKwqHvlZBCiA&NlUeGH<Cw3dOhd6|LdLB1d>tfmE9rf=H=>LCGe_~~Pf1c9Y zN2i`Wee~h={r~5U{yf?6e(!{TpKh+3o^ba}-}A@!UM^@{)@m^|U;ggVrVlT!J-L1C z-R)^#-)ySPar^!2$G7*FzkmPs?oj7~Znt-@?)5aqoY+)xdVOiOzvlA`ookyEUYv-% zee250RdruquX}!d^YrH6Z=YVqxf{HEdVl$pglFeFPwkt3Y{!I%VDAH)`d=)qdHV2H zN0rz4gA0FtdAw$N*6YVto?c$vlP%wqq4enP)mIzppFX($@9UaRXQte{ac+Kv?2pg) zvXVT$9>{z7?BR!Flm7qz&oIb<;!hSv1_ply9gw>~al*hpvBAHoxuvzO*;ZJ?L_*ch zrrn>JpF`1-!Cax;i&>CWhryd?;$&7A2J6M`@^gI{l(Z*K;^1%>5M?klYT{;7<8%+3`kU9um%8i0?sP{ literal 0 HcmV?d00001 diff --git a/docs/icons/protextension.gif b/docs/icons/protextension.gif new file mode 100644 index 0000000000000000000000000000000000000000..dcd07f5e1a673de3120e3f82e6f8c24f8bcd723b GIT binary patch literal 589 zcmZ?wbhEHb6krfwc$Ua;zT^Cl8yR=^L@jR6yZ-3MV_iN9!Lg_h0dD?)!JI?*07!^J4C$ zcekf`l;3>)@T_a`r57h+f6e|~XHfs-_OS_m6My~sRi$11?bFL;trl$?{)cpY`0(P| z)%>dtImdfV`@X)}RHIk(Y{v7RZ21pYKGf;e?J3w>yyX9{b-&}M{F`Gl_uamCv6KFK zRNVBffAV_bo3O6WH&)F1@c6^Dpy{RRr6o)MKVI`#)q9p!z=9gx+OMzI`P4l;y}s19 z{_#|cX}?zgUKX%?zRmo*GwwY*^UOSc!>^gYUtfHkIPL$3s~`S-UE@>x;Pd0ppB{Yv z^6X2WTmSa1mX$%Pe$D@VG3(O*|Nj|i1{8m?FfuSCGU$M80L2Ld`>KY-rbJ!_hvtsX zRu_iI&Q2o+OEX)BsQzXKQC|)Y5r*g)iGDm>3LL=(%8SILmd1-a>Mx2*&^8H(u`pKg zv~q6dWA);!TW$=&E7f#Oe`l$Rxz<6f%QVnvsc#lR2=N-PEp0 zi(iQGm23xlsCTmx6C<+(o1{U3LTkHh1k2B0^Nc1&4w;G#3JX3QZsO>Wahl*1IH9w< MpF`rM1P6mP0LI|@H~;_u literal 0 HcmV?d00001 diff --git a/docs/icons/protfield.gif b/docs/icons/protfield.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ae6833e0821dae813c941500d1e12a88c7c334f GIT binary patch literal 570 zcmZ?wbhEHb6krfwc;>;tU_A5x|NlR3WZc~owYWhqdiIT(XaB!DpnrKs{iYkgqh?)y zetq+ocMndijNf|XVSk>|hu8NjH$0wu^3#VG*J`%B{P^up-=WVH>mS!{dTN@y_21Vu zPp@u~^IO@q_ubdm>$(qo`S$7MlMla}w>;W@{@MRqDVk9m-o3illPzDl;mP8Q{~o;i zGvUa$|L2XqzS%VQ*xT1%{w%!k@5PDO)9XtQ-TW~B!oPR7r#(B<)Vk%-vrm7Tw!eDv z@z2rQA15CExbO7SHGA)Ags-pO^mOj|e=)OftiSf>^~1AIZXa9LYH{h=PoSq5h5}Ih z$->CM;K85+ax5rL7}%#bcr-P)crdnhG&3qnh_-h&F=~m+3hMWFFj{G7vxy11Pq1*1 zXJa!EQk|e@39u6a3Zboxf5ogJLn-A(TF}ZO&v9g|F zu=S9ZlTv5aVNvF~wvVrg!<31cnVrSMnCoe?Fs};JTbCwl2D?^QW+sjq4K62+*_N}g T@^*Y=aB^}~kW%AeVXy`OyDG~U literal 0 HcmV?d00001 diff --git a/docs/icons/protinterface.gif b/docs/icons/protinterface.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1b96d2c6a0b681cb6d65d30f8e212a3c2d29081 GIT binary patch literal 562 zcmZ?wbhEHb6krfwc;?OU<3`5aJyDAr^e*qHzj623`;VWm+%v`?v$?aqRzOH$9d)n96>o)Bhta8)1|Mi^~NxQF@vOm zFpg~@_}FOOyjstQ&;S4bA^8LW000jFEC2ui01*HX000DJ@X1NvaHVQ_1K!j%1YSl7 z!f_N1>3$&4x&a`esrtx(3nZYOW9aw+9|nSwFt7k*i6}5BU@#N{&QsbXpcV~;Vlpr` lA6`ZyJSHd3NCJW(HUuSx#?^k8=*4}04GVmI1%!PO06U9(O_u-w literal 0 HcmV?d00001 diff --git a/docs/icons/protoperator.gif b/docs/icons/protoperator.gif new file mode 100644 index 0000000000000000000000000000000000000000..2cb75ab8b05d4b8d65401c5270ae31836ce04f9b GIT binary patch literal 547 zcmZ?wbhEHb6krfwc*el+|Ns9VH!|+-iCWyCcX>zsy94@eC70hmI`!t=#}BXX|37bZ zVrBfD`%n7wl)S3$oi{TqY?_(4!sFfTX;-}6{(W6jyEikvaza4Ui(`_)xl^8eeY5H7 z>vatWa<`xT8M)A|CtH5zwojcaUd`L~!Z)!hWtF#W`d-U~El+MAtK5~6TR*k)SVdBC zw@-X!Y1^C+FRn#4U3bhm@$S{V*!+%NTUVJzuYUdTY-s1F=hrt!_y0V-zBFO#f8&T{ znd<^isVOXLwRmwNHax4@J*u>DOEkmK1d2adzz){|k)SwXU~gz(Xlib0ZRXKz>tYb# zXp!h<5NolW$Y9jRz~5wLVJ6PU*6zq4JZ*U!JBuZ^v8;k5n}MpDi8aG2DMm&+^NB3d zBJxaJ%=?8HnV49am6~OmbQ$!xxfsuwwrDhKGpI8$G8;B)i8`ssF*r0mIHRcFY}2g# S#-5k6Rj^5?<@@qR25SJ^#+_vV literal 0 HcmV?d00001 diff --git a/docs/icons/protproperty.gif b/docs/icons/protproperty.gif new file mode 100644 index 0000000000000000000000000000000000000000..55473d16e1321bc3e4cbcb5a165f51a55f9f07a0 GIT binary patch literal 1039 zcmZ?wbhEHb6krfw_}<0v|Ns9*>yP~Z`}@a@jJtcH7B}eC&b@zmNB#fTdA|N3?+)m% zS;^7aopc;aF~qSuL)@dr;_n%Q4680UFSixNI0mLUEZ?`} z#fjKI|NeP<``x{HCBWA4%k}hc51ZeA`ThNF*3aMnPp>b1vqEsyu3Ha3{O_ETIk~lX z-HeEP2NTm1f({(NxOUx|ohP4OIC1FT*EMe*ukg1r@C^+6_UWZhKrk1(z|V(8pU#J+ zhWY<`z2U@6*`93qx38c7dQ^1w#Qx{kHwUkAytY!$e!8Z#0Qaw5N-tkNdUUob(l^}4 zKd3%8`p({vmeRPNkL%z3{BNu-dg$ck?WaC|z7%m}$JFA|njgRZww`HSJiX!D?aX6m zj_D~fEtuBu_OQdJSDO-IVqZTz`|9S@2e(daUDkNw{LN3_{{H>2Wa z5)tO9PzZ2J_GH&-Ss@Y8nantYm#1ru=I3P>cwO3fRJb-d9AnnClQ?kWF^jXjXc*6g z$c9Ia99*{BJ_t@;!YeGKpvG|G(^D1(UXfKXou3^abO}bWaxgF~Xq_k0z;|QC1jh&b z3|Wj1J{Gi}W3*sq`!jP<22TS6qn83-LBoj&>MSxM0V#~@8yqsyc&rT485o(k)WY3j zk_{(t@v*f`TYRGLDcgp_PZFFH92y0f&hPLzaGOJjGe+eKpX|mT4oo^q4hDIDIzBZr IGBQ{L0HyC{fdBvi literal 0 HcmV?d00001 diff --git a/docs/icons/protstructure.gif b/docs/icons/protstructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..af356a1db0b8e8821d2f6c94734b98354875e85d GIT binary patch literal 619 zcmZ?wbhEHb6krfwc$UoY|Ns9VH!{AxyYcwl4+i6ziyQQMbbBAJ67ih>_({Rj@9%G4 z-ckScarf_?zZ;Wy?(T{D{rb=STVGGi5Px?-|90w~Z?ETmJm&o8{h#-HbUxj>Qn>Bo z+bt6Pc}gc%#yc0E{D0o)*}2x=@BaLH{`>3eb$8C6fAjR(+szV3uHFA~tK`G$`;jYO zo_X;3?aa5^raC;Re)xImr+;79EUgtdc=Pp#7uW7C7yW!b?c;Ih&lh4oUyOO$@%+V! z*k!F2ukX$Le5>Ty%{}+ZA3SM!viAD_d&T$O-JUkjbbj>g8^7Kkt=jqK$EF|OUd?^` z=+xFD_rBaN{d6Jb)r41q|f1D*d+M+lPf8BUilmaDT_QSMz?o*$)gT1{wgxpDc_F49N^SAhSVn!oYr_ zA-Rcxi=By~sk1A&h22vqqNBUHRg}j^sJ*AFH<8EI!fYmk_@rbe_GucvViIb6Oq@%b zOoDl0%-2fuNs91tDs~tKxdkSf?v~`_<@FFb$fV01Et|lnaym3tUq?jAi`#~g(b~>c z&_66L(o&C&TiGCrU!K)bPSC~A!JbWt+nLFx!eAkT2=5Ob4nqdU13i55Od>XgPq~?x zm?e~$0vx!9%B@<;gKug_44ZM@5qqv}A&K6gC{1vdDqK8UQ3G B8EpUn literal 0 HcmV?d00001 diff --git a/docs/icons/pubclass.gif b/docs/icons/pubclass.gif new file mode 100644 index 0000000000000000000000000000000000000000..1a968ab633207f47ec5e3130ec676f0d43598bb0 GIT binary patch literal 368 zcmZ?wbhEHb6krfwxN5}k|NsAQ?`}lTzVZ0okG0#6JX|I6_s!pL?{8g7z5Mo8Mbf(8r2 zp(R0XIx!l@Rf3{yHW~z|JTT0ir6tMRSy-d6W0S){R=L^}M$Ar41`Kl)d3;!=d+P}E z3NrF(N$K-&bt%+03NkRT^J(+3Gq4n@_Qg(`W;COaS31~v-h5AKCe0;2o(q_n1avjl otTWmmAj8DX?Cr$DwQ<*;tzL4nyP1!AF&G}%w~yhJrz3+k0J6oL{{R30 literal 0 HcmV?d00001 diff --git a/docs/icons/pubdelegate.gif b/docs/icons/pubdelegate.gif new file mode 100644 index 0000000000000000000000000000000000000000..0a43eb261adccddee2206769150a9e2d964ed136 GIT binary patch literal 1041 zcmeH`{WFsR0LLG0>%7DvcU^bR#jQK%xKkV}(m0l0*4uHXy30!^gj%}Nd&*TyI9D<@ zvNh&y4`a+Q^=w|YC(LZ@1(C@%8_USsGcV;o=nv@o`{$R>=e{RT;ju>(oB$_ajSB4S z?2Hp9kP-_cv{GkSkR{361hPEe{IHnYgYvO@Za)p|{=Kq({`%wgZh2`S#V}j1RIsSn zG6dOdruCn`mi0N5A?Rh5*9uh`YLGWTss0+9mJ@aLUVa%@B$>cnO6Lh=jK;n?4p`kJ z(i_ZMTifYRixe5MrRCKb-9m56SjfdRc<6idjpwCR4Tg6{G6U4i&QHx4wEAB^W{d(@ zB^hF^tga&b4!;L5-Z7-T}_>mGjR`LrsAj0w1HTP=p6nY#WHr%q^+gG;Pa{2b1CXc-3NLHr%U>g(W;)*VhPC+v6*Ex zP-FXG@p~?n*#fqLNE2dST9qe{EH14un??M(;rA8oGL@#YXLNgeyP6|jUE82A8x~B< zYwL(sQ*W_s7JgzEGx!hQR!Byshxr;~;r!UGaRIEPgFWJ*i7Oee*qwt-{2`-h`HM&~ ztk68lrOhf$H?j(2lC!yx%rI}Jh0yC-d%kzi6_j&pBkOoVxk|~ZZGnvoOI2)95uMZB z$I8s1C?>T0-ch}Jk(f>XsWXoM&_`ar`!^`?fB$U2V*_Oc093$dm)QLTU}FM;Y~7-u zZ!RvVJ>D3S82*SOKk|uQ$4DFjJjJUNE5%{l03dpr?X=G|;1!ZWM5S82cE}uf5XFY^ zQ9x=zr60x%=XpFVoTrMO)1vk~^FfQ9X$3hR4uJ=NMeS?HzyRy)X^(@D9XcY=$|_zs zSmNS;LFEkHcP@3L@-V5Gxqf>ev^C`97msuIrMf~1QhX%SKhcEJKTffKNw}%Nk%$Qq zd7kJadkcv;8xp}&xLFhSR`TXVl3grTdMLMuVDApotZUHj_$OW=i!UNB787i>XOA5w W!S3M>-YMZwV($I|X%HF(1pfiQ@~q|n literal 0 HcmV?d00001 diff --git a/docs/icons/pubenumeration.gif b/docs/icons/pubenumeration.gif new file mode 100644 index 0000000000000000000000000000000000000000..46888adef937f09868b1aff485010ad847625183 GIT binary patch literal 339 zcmV-Z0j&N(Pbf!&&RmbLYrp^5KtqjHc?* za^l2s<;7g>)_nBlnc}@q=gfSDY)AL)rrf+_?%03v-ihkZZ{W8?^yiuK(X`h>z|#7Zt2TuZ-Jcm?a$@ITH?{E>B?vC+=aBHilvcv^yZk%qA_}lr+8dCZh@Qc z+k=5-L-F8_pNL-BziE|zWSN9&dR{ztS~=^`gneQ_?9_R@tdifjNurK)@7sl*iE#h_ z{{R30A^8LW002G!EC2ui01yBW000JXK%a0(EE!iiKn z4i!jX__&S%6r$8nkQg@~(+QQv5-foTK=WC#T3itp2L%roH9i4gVq_mXCIcrPD;kPw lY;FuaM>a1!czOUcM>;JygoYO~M-8eVBIr#a7&Z+tGuQt>#pOO#}?0x>=!f)>{|M-0G_pcwfZ(ZrA@_Mnf=Gpnq zmrw66=yp4>bIF?NS=s)YSxFvu&-Bf&kUg=fq9;S?<*K@;53avl(D?lEy|qmWUk~J+ z+Bg61(Wa*lZ~gr8_}GpKpUzCF%yD~nsPq4m`d=5zo}Y+(*xvO2|9=J?K=CIFBLjmu zgAPa@MKlJCh@8yFl7ixFRNZ06KZzOwPN+z zv<(MOw%xcR)*I23_It(+G5s19o*Z-S8h+h27B({_t~PU7W=)Mr<}8BjGt3=_Q{DAPKYq>lt?WK&MZn5;OW*I#-&3bo_v!Yh%ePmOK&_XZeGp5`ugJQ8r@p0fCbZnrk_qf<6Hlv&#nK%)epr> z{uingwQcx+G3(OH39sU({EMCR*Qf5`lT%MVJpS`{L6a^97CgNFGw z^IuPVb20bQulc`y>mR?{_b#mKvrp{<89)!|G(D#{&3~PuhqXFt$#GZ zZ{k#oX?JJbD^)N3^x(63{D%Mk|1%64p!k!8k%1wQK?md_P@FKZw=@Jc1#&W&G0fUL<3?)XqgsXpxwn5}&UoFGrw} zp=^gSE5D_rwY18jKnW>z4j)miKxbWpepgm2Kjl-+3OeG=EZUBDAGz5-V`O9zlv8v% Z#l^^Np~1s+_cM3E&u2`ke^{9qtN|Sl$x;9S literal 0 HcmV?d00001 diff --git a/docs/icons/pubfield.gif b/docs/icons/pubfield.gif new file mode 100644 index 0000000000000000000000000000000000000000..5aed17576f4493ccfdb12f7a8a55fa2cbd74041c GIT binary patch literal 311 zcmZ?wbhEHb6krfwxT?dzU_3K=_Klfm|8KhSJ8IVTsr#N)Zg{-)$iwF!e=of7Z{p#P z_ul^M+WW3)`>Uh3Kh|z~su8|^-|45`C41!jR$hMoYyGu9l^dR1diL|uvmbqjKJU8z z@&Et-hi-nj`r>!@fiGtt|J;A$y=n5+`4|4pJ^5+Ek#CDH{;OF3xMuV7x#$1I%)U{x z<>i{a_kda$$OVc&Sr{1@bbt^DKz?Fi3vrlM;GrYc@1gXp(Sy%ktu684k_eBco`+3u zGHjR}lT;k%iD)!t7%(bu_c~@WFz)DYZCE9=iP_9ulaaBGLC`~irKODBPllz(&xwyg Nd(!k7GhG}RtO2HXg;M|k literal 0 HcmV?d00001 diff --git a/docs/icons/pubinterface.gif b/docs/icons/pubinterface.gif new file mode 100644 index 0000000000000000000000000000000000000000..c38a4c46a9a7603bc498664c294c7c06a713e555 GIT binary patch literal 314 zcmZ?wbhEHb6krfwxN5|3ZVUQpY+eD{&7vsdijaq#l?{g*cFIk#xtz9|cLB$xCr-*j~8#$(6M z-8^&oPXD~kdyZV)fBed}{il;l`>VT_0BvC)4k-R)VPs%1V$cC82lE)~P;Pd*c`+O~Z`kDLHZ`GDkm))4&({9xIoBQn2?6teCjWv##q^{)3yhlKQmSzza_!jd?!NB&pZmx!AK(QVR|IF|6^@a~=O^W*cU zPpJB?`{m-RrckHo(dc?Bd*+zuoTskl%;w{)5%GwFo3C0s(vtkd@g)-Cw0$= z&;S4bA^8LW002J#EC2ui01yBR000JNz@KnPMEF$1LIW=%7c@T_3Mdpi3m6Y) bKQTH02`MrHm_Hv1IXxz!LKYr1LO}pKPRg(M literal 0 HcmV?d00001 diff --git a/docs/icons/puboperator.gif b/docs/icons/puboperator.gif new file mode 100644 index 0000000000000000000000000000000000000000..0ebe10a7ec532625741cc8668b1126f2553cdc9c GIT binary patch literal 310 zcmZ?wbhEHb6krfwxXQrr|Nnols(WwVeRM0i9NPIQy8maw)c<$xKM81hkzP3=w|;8n zu9VpPj#Fw1>9hZrw#_+jW|+Ayuy9Ls{=)w$tGs;^tFCyvC9d#rk1DlH*wSzy_n4$` zQgL@-(@dZEO5=!S;aSa*3+-&v_nJnpcFZ}^d90##ZzcovfZ|UUuwgnN667ZawqS>b z0uLQ7ey+tr7X$^&y&alvbTCQyF}P%C2naMD{LsJ{u_oi`k&A!ZJQtmLF?n6|?Szd1 l$~7_D1)D@O#GT~o%bXk;tN}%7Un2kj literal 0 HcmV?d00001 diff --git a/docs/icons/pubproperty.gif b/docs/icons/pubproperty.gif new file mode 100644 index 0000000000000000000000000000000000000000..dfad7b43006984b0d27846a9c6d23d9bfb94ec95 GIT binary patch literal 609 zcmV-n0-pUxNk%w1VGsZi0OoxFqOZjN|NsB}`$kSweVyO`>u#*1kM{rn|Ltf^PgLme z{K3f4!N}5ZVMGba^OtU*~#SN;C}nU8wy>*wOldhGfC z-?B2qlNCRgDag;+-oar{IxyDd|Io<7(&G5ItfO0aS?~1wb9H=)lBYqQGU~fAU|e1H z+i8`AQ-Et%&dS31i;r~82J1CqnCh$bzU0~3xIK4DP|np>HmqGY1XMO=I;CB?f-vmTl3Ob zwWfhgP*e8dgO;77(Bl94x+41PunGqd`1<`&JwatwPwmG`u9#ST!Em?A@zv`8`r>l@ z{{E(-U;O_6j$#x`PEp?J`mC+6`TPHJTtULg)AG+&+`UxY+0;u*PN0^6jF3?6!$9=c zXSvDci*ixKxRuk{FMI-(}u{I9ZgYI|Ii=*|Nj6000000A^8LW004aeEC2ui z01yBW000NRfPI34goTAAb!|{YZy0w+I6hs3BUVlYm|${jbV@vg87~N21rtDPTUBBe z1g$p)F)j!pEl+VPKX57pIdcY54;nTISsZ#DWI7%MUIuv&DGeYNd=ys^S|&mZ0eD3+ z0Wb|qMl4f;J4oCD0s#SGXK8j#1B5jJ>;V@;Gztny^#-X40001lf(S(f6vP0ZfH7E3 vFfl`d%ECSk3!*_-aK^Am}xe((G}uY&L6G3OIA#BZnGdAnKS{;jW_hkyQl{pal#iQn)3e7+F# zey`4-_kX^eH{!7h~?6KmX}M%-b)&zODK8`Bv%2V=k|!ynfp8 ze4gq2kH?)qEd2O(=Gz~eetcf~>GQ3U$dxanR=jvn{qR!i&%1CPg|qcFzfuSnN3rm2{>v z$jq9|;iMv{Ai~7RyQIn8jYC~(l?0QVFh8$khXseZl!o*UIbME#ec^qK0!o6?Ym`q| zI~(W;%X?Z1IIiJi6E#)S)zmU!Z92#Fkc&rD+sxLL^>!2AJ2B1=tS+qLCcFj<667bb vva>O?uq!GFSrunAz6B literal 0 HcmV?d00001 diff --git a/docs/icons/slMobile.gif b/docs/icons/slMobile.gif new file mode 100644 index 0000000000000000000000000000000000000000..5edc31f94c61a7a50c3285ef00dcbe86e8690974 GIT binary patch literal 909 zcmZ?wbhEHb6krfw_|Cw<&~QMZ;eZ1WEjW;{;6MWq9XPP;)QA7SKm7myA1FTxMnhm2 zhky>qZ=k%uz){2?%pv2kVSxi92Q!O8!-mAe%}h)j784dUxU@4Vuq~MJz`>+3{L1~0m@lAUkDoRe1;9$K%)+a)R?z+epkVS_+3 literal 0 HcmV?d00001 diff --git a/docs/icons/static.gif b/docs/icons/static.gif new file mode 100644 index 0000000000000000000000000000000000000000..33723a92be0a7b2b9fc8057fb6f9a2a3ee729a7e GIT binary patch literal 879 zcmZ?wbhEHb;QNUQFEiC% z7n}SzyY0{GNB_QlU>F6XAuzl`K=CIFBLf3JgAT}Bpgh6A;lm)$!85^uv7wn=Tt*;+ zVd3FsMix6Afdzk*vw)JdXGPApH;j#U@kM7;k+&W>y z^wuAltPk$pT~`~kchkxZQyRXfGPHEeZ0eYOFP8aU0_X7)rxq_>)-z%8ruFMDoj-H> z^qK2dF6~Uw+p%NUy!ne7dzQ|dzj*Jy{qIs)>l%8FB+6~*F05{x+}7UT(%Sp$*RQVL z1$(z`+`VV-`swY5cWvHL=&-5K`^3RLyVou`apL5QScdH>+WX>V>l%9-nkN1E^JnSO z73=bxUcUi?x988Dd;aX{#Okt|hW@>K_pi-%S+;WB%NNhr<-4qD%f55_c6Z-`|Ns9p z&=Dy9WMO1rh-T0M*$Ijh2KJ_gNS5f9*0wel8;SOwRxe)eu-;y0H~Yyw>~``!!FopR zvOZc2t?JC;`aM?e!YwYI){K*##LWDIqD=f|C@AVGi)hb?W)k3Z3_TL97O1MibA-#o zAjFl8V}^y0xu&Uc#AHKeR_|zOK7O4ZTP2On(E)-oa_vl_QkK50k`CbvjSLLd0ER== A(*OVf literal 0 HcmV?d00001 diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..340c1aa --- /dev/null +++ b/docs/index.html @@ -0,0 +1,14 @@ + + + + + + + Novacta.Shfb.LatexTools Documentation - Redirect + + +

    If you are not redirected automatically, follow this link to the default topic.

    + + diff --git a/docs/media/LatexComponent.png b/docs/media/LatexComponent.png new file mode 100644 index 0000000000000000000000000000000000000000..04acf390efd8bb79ec2899285dc0d4986b432eee GIT binary patch literal 108004 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 XWvo#=EP-u=0EZ8i(0 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 SGB-c}-b77FQ?X9LBK#kOM0@lA literal 0 HcmV?d00001 diff --git a/docs/media/LatexComponentConfig.png b/docs/media/LatexComponentConfig.png new file mode 100644 index 0000000000000000000000000000000000000000..0adc04f832a5851fed8eecb7c7e26c295ca64630 GIT binary patch literal 26371 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 L{an^LB{Ts5JRVcd literal 0 HcmV?d00001 diff --git a/docs/media/LatexStyleSelection.png b/docs/media/LatexStyleSelection.png new file mode 100644 index 0000000000000000000000000000000000000000..283490054ae2cd180f9bc43e09d176cdc1dab9bf GIT binary patch literal 110682 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/clatex_1.svg b/docs/media/clatex_1.svg new file mode 100644 index 0000000..1abccb6 --- /dev/null +++ b/docs/media/clatex_1.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/clatex_10.svg b/docs/media/clatex_10.svg new file mode 100644 index 0000000..99e3080 --- /dev/null +++ b/docs/media/clatex_10.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/clatex_11.svg b/docs/media/clatex_11.svg new file mode 100644 index 0000000..69adf3d --- /dev/null +++ b/docs/media/clatex_11.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/clatex_2.svg b/docs/media/clatex_2.svg new file mode 100644 index 0000000..21b88b7 --- /dev/null +++ b/docs/media/clatex_2.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/clatex_3.svg b/docs/media/clatex_3.svg new file mode 100644 index 0000000..4c91600 --- /dev/null +++ b/docs/media/clatex_3.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/clatex_4.svg b/docs/media/clatex_4.svg new file mode 100644 index 0000000..79ad209 --- /dev/null +++ b/docs/media/clatex_4.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/clatex_5.svg b/docs/media/clatex_5.svg new file mode 100644 index 0000000..32dc777 --- /dev/null +++ b/docs/media/clatex_5.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/clatex_6.svg b/docs/media/clatex_6.svg new file mode 100644 index 0000000..01884ee --- /dev/null +++ b/docs/media/clatex_6.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/clatex_7.svg b/docs/media/clatex_7.svg new file mode 100644 index 0000000..8d357b5 --- /dev/null +++ b/docs/media/clatex_7.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/clatex_8.svg b/docs/media/clatex_8.svg new file mode 100644 index 0000000..11ec454 --- /dev/null +++ b/docs/media/clatex_8.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/clatex_9.svg b/docs/media/clatex_9.svg new file mode 100644 index 0000000..7edf128 --- /dev/null +++ b/docs/media/clatex_9.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/latex_12.svg b/docs/media/latex_12.svg new file mode 100644 index 0000000..b727032 --- /dev/null +++ b/docs/media/latex_12.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/latex_13.svg b/docs/media/latex_13.svg new file mode 100644 index 0000000..354db1b --- /dev/null +++ b/docs/media/latex_13.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/latex_14.svg b/docs/media/latex_14.svg new file mode 100644 index 0000000..99e3080 --- /dev/null +++ b/docs/media/latex_14.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/latex_15.svg b/docs/media/latex_15.svg new file mode 100644 index 0000000..2ff252d --- /dev/null +++ b/docs/media/latex_15.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/latex_16.svg b/docs/media/latex_16.svg new file mode 100644 index 0000000..e30383c --- /dev/null +++ b/docs/media/latex_16.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/latex_17.svg b/docs/media/latex_17.svg new file mode 100644 index 0000000..bc9443f --- /dev/null +++ b/docs/media/latex_17.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/latex_18.svg b/docs/media/latex_18.svg new file mode 100644 index 0000000..b727032 --- /dev/null +++ b/docs/media/latex_18.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/latex_19.svg b/docs/media/latex_19.svg new file mode 100644 index 0000000..17b9bae --- /dev/null +++ b/docs/media/latex_19.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/latex_20.svg b/docs/media/latex_20.svg new file mode 100644 index 0000000..99e3080 --- /dev/null +++ b/docs/media/latex_20.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/latex_21.svg b/docs/media/latex_21.svg new file mode 100644 index 0000000..e26b904 --- /dev/null +++ b/docs/media/latex_21.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/latex_22.svg b/docs/media/latex_22.svg new file mode 100644 index 0000000..88df003 --- /dev/null +++ b/docs/media/latex_22.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/latex_23.svg b/docs/media/latex_23.svg new file mode 100644 index 0000000..354db1b --- /dev/null +++ b/docs/media/latex_23.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/scripts/branding-Website.js b/docs/scripts/branding-Website.js new file mode 100644 index 0000000..8727883 --- /dev/null +++ b/docs/scripts/branding-Website.js @@ -0,0 +1,624 @@ +//=============================================================================================================== +// System : Sandcastle Help File Builder +// File : branding-Website.js +// Author : Eric Woodruff (Eric@EWoodruff.us) +// Updated : 03/04/2015 +// Note : Copyright 2014-2015, Eric Woodruff, All rights reserved +// Portions Copyright 2014 Sam Harwell, All rights reserved +// +// This file contains the methods necessary to implement the lightweight TOC and search functionality. +// +// This code is published under the Microsoft Public License (Ms-PL). A copy of the license should be +// distributed with the code and can be found at the project website: https://GitHub.com/EWSoftware/SHFB. This +// notice, the author's name, and all copyright notices must remain intact in all applications, documentation, +// and source files. +// +// Date Who Comments +// ============================================================================================================== +// 05/04/2014 EFW Created the code based on a combination of the lightweight TOC code from Sam Harwell and +// the existing search code from SHFB. +//=============================================================================================================== + +// Width of the TOC +var tocWidth; + +// Search method (0 = To be determined, 1 = ASPX, 2 = PHP, anything else = client-side script +var searchMethod = 0; + +// Table of contents script + +// Initialize the TOC by restoring its width from the cookie if present +function InitializeToc() +{ + tocWidth = parseInt(GetCookie("TocWidth", "280")); + ResizeToc(); + $(window).resize(SetNavHeight) +} + +function SetNavHeight() +{ + $leftNav = $("#leftNav") + $topicContent = $("#TopicContent") + leftNavPadding = $leftNav.outerHeight() - $leftNav.height() + contentPadding = $topicContent.outerHeight() - $topicContent.height() + // want outer height of left navigation div to match outer height of content + leftNavHeight = $topicContent.outerHeight() - leftNavPadding + $leftNav.css("min-height", leftNavHeight + "px") +} + +// Increase the TOC width +function OnIncreaseToc() +{ + if(tocWidth < 1) + tocWidth = 280; + else + tocWidth += 100; + + if(tocWidth > 680) + tocWidth = 0; + + ResizeToc(); + SetCookie("TocWidth", tocWidth); +} + +// Reset the TOC to its default width +function OnResetToc() +{ + tocWidth = 0; + + ResizeToc(); + SetCookie("TocWidth", tocWidth); +} + +// Resize the TOC width +function ResizeToc() +{ + var toc = document.getElementById("leftNav"); + + if(toc) + { + // Set TOC width + toc.style.width = tocWidth + "px"; + + var leftNavPadding = 10; + + document.getElementById("TopicContent").style.marginLeft = (tocWidth + leftNavPadding) + "px"; + + // Position images + document.getElementById("TocResize").style.left = (tocWidth + leftNavPadding) + "px"; + + // Hide/show increase TOC width image + document.getElementById("ResizeImageIncrease").style.display = (tocWidth >= 680) ? "none" : ""; + + // Hide/show reset TOC width image + document.getElementById("ResizeImageReset").style.display = (tocWidth < 680) ? "none" : ""; + } + + SetNavHeight() +} + +// Toggle a TOC entry between its collapsed and expanded state +function Toggle(item) +{ + var isExpanded = $(item).hasClass("tocExpanded"); + + $(item).toggleClass("tocExpanded tocCollapsed"); + + if(isExpanded) + { + Collapse($(item).parent()); + } + else + { + var childrenLoaded = $(item).parent().attr("data-childrenloaded"); + + if(childrenLoaded) + { + Expand($(item).parent()); + } + else + { + var tocid = $(item).next().attr("tocid"); + + $.ajax({ + url: "../toc/" + tocid + ".xml", + async: true, + dataType: "xml", + success: function(data) + { + BuildChildren($(item).parent(), data); + } + }); + } + } +} + +// HTML encode a value for use on the page +function HtmlEncode(value) +{ + // Create an in-memory div, set it's inner text (which jQuery automatically encodes) then grab the encoded + // contents back out. The div never exists on the page. + return $('

    ').text(value).html(); +} + +// Build the child entries of a TOC entry +function BuildChildren(tocDiv, data) +{ + var childLevel = +tocDiv.attr("data-toclevel") + 1; + var childTocLevel = childLevel >= 10 ? 10 : childLevel; + var elements = data.getElementsByTagName("HelpTOCNode"); + + var isRoot = true; + + if(data.getElementsByTagName("HelpTOC").length == 0) + { + // The first node is the root node of this group, don't show it again + isRoot = false; + } + + for(var i = elements.length - 1; i > 0 || (isRoot && i == 0); i--) + { + var childHRef, childId = elements[i].getAttribute("Url"); + + if(childId != null && childId.length > 5) + { + // The Url attribute has the form "html/{childId}.htm" + childHRef = "../" + childId; + childId = childId.substring(childId.lastIndexOf("/") + 1, childId.lastIndexOf(".")); + } + else + { + // The Id attribute is in raw form. There is no URL (empty container node). In this case, we'll + // just ignore it and go nowhere. It's a rare case that isn't worth trying to get the first child. + // Instead, we'll just expand the node (see below). + childHRef = "#"; + childId = elements[i].getAttribute("Id"); + } + + var existingItem = null; + + tocDiv.nextAll().each(function() + { + if(!existingItem && $(this).children().last("a").attr("tocid") == childId) + { + existingItem = $(this); + } + }); + + if(existingItem != null) + { + // First move the children of the existing item + var existingChildLevel = +existingItem.attr("data-toclevel"); + var doneMoving = false; + var inserter = tocDiv; + + existingItem.nextAll().each(function() + { + if(!doneMoving && +$(this).attr("data-toclevel") > existingChildLevel) + { + inserter.after($(this)); + inserter = $(this); + $(this).attr("data-toclevel", +$(this).attr("data-toclevel") + childLevel - existingChildLevel); + + if($(this).hasClass("current")) + $(this).attr("class", "toclevel" + (+$(this).attr("data-toclevel") + " current")); + else + $(this).attr("class", "toclevel" + (+$(this).attr("data-toclevel"))); + } + else + { + doneMoving = true; + } + }); + + // Now move the existing item itself + tocDiv.after(existingItem); + existingItem.attr("data-toclevel", childLevel); + existingItem.attr("class", "toclevel" + childLevel); + } + else + { + var hasChildren = elements[i].getAttribute("HasChildren"); + var childTitle = HtmlEncode(elements[i].getAttribute("Title")); + var expander = ""; + + if(hasChildren) + expander = ""; + + var text = "
    " + + expander + "" + + childTitle + "
    "; + + tocDiv.after(text); + } + } + + tocDiv.attr("data-childrenloaded", true); +} + +// Collapse a TOC entry +function Collapse(tocDiv) +{ + // Hide all the TOC elements after item, until we reach one with a data-toclevel less than or equal to the + // current item's value. + var tocLevel = +tocDiv.attr("data-toclevel"); + var done = false; + + tocDiv.nextAll().each(function() + { + if(!done && +$(this).attr("data-toclevel") > tocLevel) + { + $(this).hide(); + } + else + { + done = true; + } + }); +} + +// Expand a TOC entry +function Expand(tocDiv) +{ + // Show all the TOC elements after item, until we reach one with a data-toclevel less than or equal to the + // current item's value + var tocLevel = +tocDiv.attr("data-toclevel"); + var done = false; + + tocDiv.nextAll().each(function() + { + if(done) + { + return; + } + + var childTocLevel = +$(this).attr("data-toclevel"); + + if(childTocLevel == tocLevel + 1) + { + $(this).show(); + + if($(this).children("a").first().hasClass("tocExpanded")) + { + Expand($(this)); + } + } + else if(childTocLevel > tocLevel + 1) + { + // Ignore this node, handled by recursive calls + } + else + { + done = true; + } + }); +} + +// This is called to prepare for dragging the sizer div +function OnMouseDown(event) +{ + document.addEventListener("mousemove", OnMouseMove, true); + document.addEventListener("mouseup", OnMouseUp, true); + event.preventDefault(); +} + +// Resize the TOC as the sizer is dragged +function OnMouseMove(event) +{ + tocWidth = (event.clientX > 700) ? 700 : (event.clientX < 100) ? 100 : event.clientX; + + ResizeToc(); +} + +// Finish the drag operation when the mouse button is released +function OnMouseUp(event) +{ + document.removeEventListener("mousemove", OnMouseMove, true); + document.removeEventListener("mouseup", OnMouseUp, true); + + SetCookie("TocWidth", tocWidth); +} + +// Search functions + +// Transfer to the search page from a topic +function TransferToSearchPage() +{ + var searchText = document.getElementById("SearchTextBox").value.trim(); + + if(searchText.length != 0) + document.location.replace(encodeURI("../search.html?SearchText=" + searchText)); +} + +// Initiate a search when the search page loads +function OnSearchPageLoad() +{ + var queryString = decodeURI(document.location.search); + + if(queryString != "") + { + var idx, options = queryString.split(/[\?\=\&]/); + + for(idx = 0; idx < options.length; idx++) + if(options[idx] == "SearchText" && idx + 1 < options.length) + { + document.getElementById("txtSearchText").value = options[idx + 1]; + PerformSearch(); + break; + } + } +} + +// Perform a search using the best available method +function PerformSearch() +{ + var searchText = document.getElementById("txtSearchText").value; + var sortByTitle = document.getElementById("chkSortByTitle").checked; + var searchResults = document.getElementById("searchResults"); + + if(searchText.length == 0) + { + searchResults.innerHTML = "Nothing found"; + return; + } + + searchResults.innerHTML = "Searching..."; + + // Determine the search method if not done already. The ASPX and PHP searches are more efficient as they + // run asynchronously server-side. If they can't be used, it defaults to the client-side script below which + // will work but has to download the index files. For large help sites, this can be inefficient. + if(searchMethod == 0) + searchMethod = DetermineSearchMethod(); + + if(searchMethod == 1) + { + $.ajax({ + type: "GET", + url: encodeURI("SearchHelp.aspx?Keywords=" + searchText + "&SortByTitle=" + sortByTitle), + success: function(html) + { + searchResults.innerHTML = html; + } + }); + + return; + } + + if(searchMethod == 2) + { + $.ajax({ + type: "GET", + url: encodeURI("SearchHelp.php?Keywords=" + searchText + "&SortByTitle=" + sortByTitle), + success: function(html) + { + searchResults.innerHTML = html; + } + }); + + return; + } + + // Parse the keywords + var keywords = ParseKeywords(searchText); + + // Get the list of files. We'll be getting multiple files so we need to do this synchronously. + var fileList = []; + + $.ajax({ + type: "GET", + url: "fti/FTI_Files.json", + dataType: "json", + async: false, + success: function(data) + { + $.each(data, function(key, val) + { + fileList[key] = val; + }); + } + }); + + var letters = []; + var wordDictionary = {}; + var wordNotFound = false; + + // Load the keyword files for each keyword starting letter + for(var idx = 0; idx < keywords.length && !wordNotFound; idx++) + { + var letter = keywords[idx].substring(0, 1); + + if($.inArray(letter, letters) == -1) + { + letters.push(letter); + + $.ajax({ + type: "GET", + url: "fti/FTI_" + letter.charCodeAt(0) + ".json", + dataType: "json", + async: false, + success: function(data) + { + var wordCount = 0; + + $.each(data, function(key, val) + { + wordDictionary[key] = val; + wordCount++; + }); + + if(wordCount == 0) + wordNotFound = true; + } + }); + } + } + + if(wordNotFound) + searchResults.innerHTML = "Nothing found"; + else + searchResults.innerHTML = SearchForKeywords(keywords, fileList, wordDictionary, sortByTitle); +} + +// Determine the search method by seeing if the ASPX or PHP search pages are present and working +function DetermineSearchMethod() +{ + var method = 3; + + try + { + $.ajax({ + type: "GET", + url: "SearchHelp.aspx", + async: false, + success: function(html) + { + if(html.substring(0, 8) == "") + method = 1; + } + }); + + if(method == 3) + $.ajax({ + type: "GET", + url: "SearchHelp.php", + async: false, + success: function(html) + { + if(html.substring(0, 8) == "") + method = 2; + } + }); + } + catch(e) + { + } + + return method; +} + +// Split the search text up into keywords +function ParseKeywords(keywords) +{ + var keywordList = []; + var checkWord; + var words = keywords.split(/[\s!@#$%^&*()\-=+\[\]{}\\|<>;:'",.<>/?`~]+/); + + for(var idx = 0; idx < words.length; idx++) + { + checkWord = words[idx].toLowerCase(); + + if(checkWord.length > 2) + { + var charCode = checkWord.charCodeAt(0); + + if((charCode < 48 || charCode > 57) && $.inArray(checkWord, keywordList) == -1) + keywordList.push(checkWord); + } + } + + return keywordList; +} + +// Search for keywords and generate a block of HTML containing the results +function SearchForKeywords(keywords, fileInfo, wordDictionary, sortByTitle) +{ + var matches = [], matchingFileIndices = [], rankings = []; + var isFirst = true; + + for(var idx = 0; idx < keywords.length; idx++) + { + var word = keywords[idx]; + var occurrences = wordDictionary[word]; + + // All keywords must be found + if(occurrences == null) + return "Nothing found"; + + matches[word] = occurrences; + var occurrenceIndices = []; + + // Get a list of the file indices for this match. These are 64-bit numbers but JavaScript only does + // bit shifts on 32-bit values so we divide by 2^16 to get the same effect as ">> 16" and use floor() + // to truncate the result. + for(var ind in occurrences) + occurrenceIndices.push(Math.floor(occurrences[ind] / Math.pow(2, 16))); + + if(isFirst) + { + isFirst = false; + + for(var matchInd in occurrenceIndices) + matchingFileIndices.push(occurrenceIndices[matchInd]); + } + else + { + // After the first match, remove files that do not appear for all found keywords + for(var checkIdx = 0; checkIdx < matchingFileIndices.length; checkIdx++) + if($.inArray(matchingFileIndices[checkIdx], occurrenceIndices) == -1) + { + matchingFileIndices.splice(checkIdx, 1); + checkIdx--; + } + } + } + + if(matchingFileIndices.length == 0) + return "Nothing found"; + + // Rank the files based on the number of times the words occurs + for(var fileIdx = 0; fileIdx < matchingFileIndices.length; fileIdx++) + { + // Split out the title, filename, and word count + var matchingIdx = matchingFileIndices[fileIdx]; + var fileIndex = fileInfo[matchingIdx].split(/\0/); + + var title = fileIndex[0]; + var filename = fileIndex[1]; + var wordCount = parseInt(fileIndex[2]); + var matchCount = 0; + + for(var idx = 0; idx < keywords.length; idx++) + { + occurrences = matches[keywords[idx]]; + + for(var ind in occurrences) + { + var entry = occurrences[ind]; + + // These are 64-bit numbers but JavaScript only does bit shifts on 32-bit values so we divide + // by 2^16 to get the same effect as ">> 16" and use floor() to truncate the result. + if(Math.floor(entry / Math.pow(2, 16)) == matchingIdx) + matchCount += (entry & 0xFFFF); + } + } + + rankings.push({ Filename: filename, PageTitle: title, Rank: matchCount * 1000 / wordCount }); + + if(rankings.length > 99) + break; + } + + rankings.sort(function(x, y) + { + if(!sortByTitle) + return y.Rank - x.Rank; + + return x.PageTitle.localeCompare(y.PageTitle); + }); + + // Format and return the results + var content = "
      "; + + for(var r in rankings) + content += "
    1. " + + rankings[r].PageTitle + "
    2. "; + + content += "
    "; + + if(rankings.length < matchingFileIndices.length) + content += "

    Omitted " + (matchingFileIndices.length - rankings.length) + " more results

    "; + + return content; +} diff --git a/docs/scripts/branding.js b/docs/scripts/branding.js new file mode 100644 index 0000000..2acdea5 --- /dev/null +++ b/docs/scripts/branding.js @@ -0,0 +1,562 @@ +//=============================================================================================================== +// System : Sandcastle Help File Builder +// File : branding.js +// Author : Eric Woodruff (Eric@EWoodruff.us) +// Updated : 10/08/2015 +// Note : Copyright 2014-2015, Eric Woodruff, All rights reserved +// Portions Copyright 2010-2014 Microsoft, All rights reserved +// +// This file contains the methods necessary to implement the language filtering, collapsible section, and +// copy to clipboard options. +// +// This code is published under the Microsoft Public License (Ms-PL). A copy of the license should be +// distributed with the code and can be found at the project website: https://GitHub.com/EWSoftware/SHFB. This +// notice, the author's name, and all copyright notices must remain intact in all applications, documentation, +// and source files. +// +// Date Who Comments +// ============================================================================================================== +// 05/04/2014 EFW Created the code based on the MS Help Viewer script +//=============================================================================================================== + +// The IDs of all code snippet sets on the same page are stored so that we can keep them in synch when a tab is +// selected. +var allTabSetIds = new Array(); + +// The IDs of language-specific text (LST) spans are used as dictionary keys so that we can get access to the +// spans and update them when the user changes to a different language tab. The values of the dictionary +// objects are pipe separated language-specific attributes (lang1=value|lang2=value|lang3=value). The language +// ID can be specific (cs, vb, cpp, etc.) or may be a neutral entry (nu) which specifies text common to multiple +// languages. If a language is not present and there is no neutral entry, the span is hidden for all languages +// to which it does not apply. +var allLSTSetIds = new Object(); + +// Help 1 persistence support. This code must appear inline. +var isHelp1; + +var curLoc = document.location + "."; + +if(curLoc.indexOf("mk:@MSITStore") == 0) +{ + isHelp1 = true; + curLoc = "ms-its:" + curLoc.substring(14, curLoc.length - 1); + document.location.replace(curLoc); +} +else + if(curLoc.indexOf("ms-its:") == 0) + isHelp1 = true; + else + isHelp1 = false; + +// The OnLoad method +function OnLoad(defaultLanguage) +{ + var defLang; + + if(typeof (defaultLanguage) == "undefined" || defaultLanguage == null || defaultLanguage == "") + defLang = "vb"; + else + defLang = defaultLanguage; + + // In MS Help Viewer, the transform the topic is ran through can move the footer. Move it back where it + // belongs if necessary. + try + { + var footer = document.getElementById("pageFooter") + + if(footer) + { + var footerParent = document.body; + + if(footer.parentElement != footerParent) + { + footer.parentElement.removeChild(footer); + footerParent.appendChild(footer); + } + } + } + catch(e) + { + } + + var language = GetCookie("CodeSnippetContainerLanguage", defLang); + + // If LST exists on the page, set the LST to show the user selected programming language + UpdateLST(language); + + // If code snippet groups exist, set the current language for them + if(allTabSetIds.length > 0) + { + var i = 0; + + while(i < allTabSetIds.length) + { + var tabCount = 1; + + // The tab count may vary so find the last one in this set + while(document.getElementById(allTabSetIds[i] + "_tab" + tabCount) != null) + tabCount++; + + tabCount--; + + // If not grouped, skip it + if(tabCount > 1) + SetCurrentLanguage(allTabSetIds[i], language, tabCount); + + i++; + } + } + + InitializeToc(); +} + +// This is just a place holder. The website script implements this function to initialize it's in-page TOC pane +function InitializeToc() +{ +} + +// This function executes in the OnLoad event and ChangeTab action on code snippets. The function parameter +// is the user chosen programming language. This function iterates through the "allLSTSetIds" dictionary object +// to update the node value of the LST span tag per the user's chosen programming language. +function UpdateLST(language) +{ + for(var lstMember in allLSTSetIds) + { + var devLangSpan = document.getElementById(lstMember); + + if(devLangSpan != null) + { + // There may be a carriage return before the LST span in the content so the replace function below + // is used to trim the whitespace at the end of the previous node of the current LST node. + if(devLangSpan.previousSibling != null && devLangSpan.previousSibling.nodeValue != null) + devLangSpan.previousSibling.nodeValue = devLangSpan.previousSibling.nodeValue.replace(/\s+$/, ""); + + var langs = allLSTSetIds[lstMember].split("|"); + var k = 0; + var keyValue; + + while(k < langs.length) + { + keyValue = langs[k].split("="); + + if(keyValue[0] == language) + { + devLangSpan.innerHTML = keyValue[1]; + + // Help 1 and MS Help Viewer workaround. Add a space if the following text element starts + // with a space to prevent things running together. + if(devLangSpan.parentNode != null && devLangSpan.parentNode.nextSibling != null) + { + if(devLangSpan.parentNode.nextSibling.nodeValue != null && + !devLangSpan.parentNode.nextSibling.nodeValue.substring(0, 1).match(/[.,);:!/?]/) && + (isHelp1 || devLangSpan.innerHTML == '>' || devLangSpan.innerHTML == ')')) + { + devLangSpan.innerHTML = keyValue[1] + " "; + } + } + break; + } + + k++; + } + + // If not found, default to the neutral language. If there is no neutral language entry, clear the + // content to hide it. + if(k >= langs.length) + { + if(language != "nu") + { + k = 0; + + while(k < langs.length) + { + keyValue = langs[k].split("="); + + if(keyValue[0] == "nu") + { + devLangSpan.innerHTML = keyValue[1]; + + // Help 1 and MS Help Viewer workaround. Add a space if the following text element + // starts with a space to prevent things running together. + if(devLangSpan.parentNode != null && devLangSpan.parentNode.nextSibling != null) + { + if(devLangSpan.parentNode.nextSibling.nodeValue != null && + !devLangSpan.parentNode.nextSibling.nodeValue.substring(0, 1).match(/[.,);:!/?]/) && + (isHelp1 || devLangSpan.innerHTML == '>' || devLangSpan.innerHTML == ')')) + { + devLangSpan.innerHTML = keyValue[1] + " "; + } + } + break; + } + + k++; + } + } + + if(k >= langs.length) + devLangSpan.innerHTML = ""; + } + } + } +} + +// Get the specified cookie. If not found, return the specified default value. +function GetCookie(cookieName, defaultValue) +{ + if(isHelp1) + { + try + { + var globals = Help1Globals; + + var value = globals.Load(cookieName); + + if(value == null) + value = defaultValue; + + return value; + } + catch(e) + { + return defaultValue; + } + } + + var cookie = document.cookie.split("; "); + + for(var i = 0; i < cookie.length; i++) + { + var crumb = cookie[i].split("="); + + if(cookieName == crumb[0]) + return unescape(crumb[1]) + } + + return defaultValue; +} + +// Set the specified cookie to the specified value +function SetCookie(name, value) +{ + if(isHelp1) + { + try + { + var globals = Help1Globals; + + globals.Save(name, value); + } + catch(e) + { + } + + return; + } + + var today = new Date(); + + today.setTime(today.getTime()); + + // Set the expiration time to be 60 days from now (in milliseconds) + var expires_date = new Date(today.getTime() + (60 * 1000 * 60 * 60 * 24)); + + document.cookie = name + "=" + escape(value) + ";expires=" + expires_date.toGMTString() + ";path=/"; +} + +// Add a language-specific text ID +function AddLanguageSpecificTextSet(lstId) +{ + var keyValue = lstId.split("?") + + allLSTSetIds[keyValue[0]] = keyValue[1]; +} + +var clipboardHandler; + +// Add a language tab set ID +function AddLanguageTabSet(tabSetId) +{ + allTabSetIds.push(tabSetId); + + // Create the clipboard handler on first use + if(clipboardHandler == null && typeof (Clipboard) == "function") + { + clipboardHandler = new Clipboard('.copyCodeSnippet', + { + text: function (trigger) + { + // Get the code to copy to the clipboard from the active tab of the given tab set + var i = 1, tabSetId = trigger.id; + var pos = tabSetId.indexOf('_'); + + if(pos == -1) + return ""; + + tabSetId = tabSetId.substring(0, pos); + + do + { + contentId = tabSetId + "_code_Div" + i; + tabTemp = document.getElementById(contentId); + + if(tabTemp != null && tabTemp.style.display != "none") + break; + + i++; + + } while(tabTemp != null); + + if(tabTemp == null) + return ""; + + return document.getElementById(contentId).innerText; + } + }); + } +} + +// Switch the active tab for all of other code snippets +function ChangeTab(tabSetId, language, snippetIdx, snippetCount) +{ + SetCookie("CodeSnippetContainerLanguage", language); + + SetActiveTab(tabSetId, snippetIdx, snippetCount); + + // If LST exists on the page, set the LST to show the user selected programming language + UpdateLST(language); + + var i = 0; + + while(i < allTabSetIds.length) + { + // We just care about other snippets + if(allTabSetIds[i] != tabSetId) + { + // Other tab sets may not have the same number of tabs + var tabCount = 1; + + while(document.getElementById(allTabSetIds[i] + "_tab" + tabCount) != null) + tabCount++; + + tabCount--; + + // If not grouped, skip it + if(tabCount > 1) + SetCurrentLanguage(allTabSetIds[i], language, tabCount); + } + + i++; + } +} + +// Sets the current language in the specified tab set +function SetCurrentLanguage(tabSetId, language, tabCount) +{ + var tabIndex = 1; + + while(tabIndex <= tabCount) + { + var tabTemp = document.getElementById(tabSetId + "_tab" + tabIndex); + + if(tabTemp != null && tabTemp.innerHTML.indexOf("'" + language + "'") != -1) + break; + + tabIndex++; + } + + if(tabIndex > tabCount) + { + // Select the first non-disabled tab + tabIndex = 1; + + if(document.getElementById(tabSetId + "_tab1").className == "codeSnippetContainerTabPhantom") + { + tabIndex++; + + while(tabIndex <= tabCount) + { + var tab = document.getElementById(tabSetId + "_tab" + tabIndex); + + if(tab.className != "codeSnippetContainerTabPhantom") + { + tab.className = "codeSnippetContainerTabActive"; + document.getElementById(tabSetId + "_code_Div" + j).style.display = "block"; + break; + } + + tabIndex++; + } + } + } + + SetActiveTab(tabSetId, tabIndex, tabCount); +} + +// Set the active tab within a tab set +function SetActiveTab(tabSetId, tabIndex, tabCount) +{ + var i = 1; + + while(i <= tabCount) + { + var tabTemp = document.getElementById(tabSetId + "_tab" + i); + + if (tabTemp != null) + { + if(tabTemp.className == "codeSnippetContainerTabActive") + tabTemp.className = "codeSnippetContainerTab"; + else + if(tabTemp.className == "codeSnippetContainerTabPhantom") + tabTemp.style.display = "none"; + + var codeTemp = document.getElementById(tabSetId + "_code_Div" + i); + + if(codeTemp.style.display != "none") + codeTemp.style.display = "none"; + } + + i++; + } + + // Phantom tabs are shown or hidden as needed + if(document.getElementById(tabSetId + "_tab" + tabIndex).className != "codeSnippetContainerTabPhantom") + document.getElementById(tabSetId + "_tab" + tabIndex).className = "codeSnippetContainerTabActive"; + else + document.getElementById(tabSetId + "_tab" + tabIndex).style.display = "block"; + + document.getElementById(tabSetId + "_code_Div" + tabIndex).style.display = "block"; +} + +// Copy the code from the active tab of the given tab set to the clipboard +function CopyToClipboard(tabSetId) +{ + var tabTemp, contentId; + var i = 1; + + if(typeof (Clipboard) == "function") + return; + + do + { + contentId = tabSetId + "_code_Div" + i; + tabTemp = document.getElementById(contentId); + + if(tabTemp != null && tabTemp.style.display != "none") + break; + + i++; + + } while(tabTemp != null); + + if(tabTemp == null) + return; + + if(window.clipboardData) + { + try + { + window.clipboardData.setData("Text", document.getElementById(contentId).innerText); + } + catch(e) + { + alert("Permission denied. Enable copying to the clipboard."); + } + } + else if(window.netscape) + { + try + { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + + var clip = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance( + Components.interfaces.nsIClipboard); + + if(!clip) + return; + + var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance( + Components.interfaces.nsITransferable); + + if(!trans) + return; + + trans.addDataFlavor("text/unicode"); + + var str = new Object(); + var len = new Object(); + var str = Components.classes["@mozilla.org/supports-string;1"].createInstance( + Components.interfaces.nsISupportsString); + + var copytext = document.getElementById(contentId).textContent; + + str.data = copytext; + trans.setTransferData("text/unicode", str, copytext.length * 2); + + var clipid = Components.interfaces.nsIClipboard; + + clip.setData(trans, null, clipid.kGlobalClipboard); + } + catch(e) + { + alert("Permission denied. Enter \"about:config\" in the address bar and double-click the \"signed.applets.codebase_principal_support\" setting to enable copying to the clipboard."); + } + } +} + +// Expand or collapse a section +function SectionExpandCollapse(togglePrefix) +{ + var image = document.getElementById(togglePrefix + "Toggle"); + var section = document.getElementById(togglePrefix + "Section"); + + if(image != null && section != null) + if(section.style.display == "") + { + image.src = image.src.replace("SectionExpanded.png", "SectionCollapsed.png"); + section.style.display = "none"; + } + else + { + image.src = image.src.replace("SectionCollapsed.png", "SectionExpanded.png"); + section.style.display = ""; + } +} + +// Expand or collapse a section when it has the focus and Enter is hit +function SectionExpandCollapse_CheckKey(togglePrefix, eventArgs) +{ + if(eventArgs.keyCode == 13) + SectionExpandCollapse(togglePrefix); +} + +// Help 1 persistence object. This requires a hidden input element on the page with a class of "userDataStyle" +// defined in the style sheet that implements the user data binary behavior: +// +var Help1Globals = +{ + UserDataCache: function() + { + var userData = document.getElementById("userDataCache"); + + return userData; + }, + + Load: function(key) + { + var userData = this.UserDataCache(); + + userData.load("userDataSettings"); + + var value = userData.getAttribute(key); + + return value; + }, + + Save: function(key, value) + { + var userData = this.UserDataCache(); + userData.setAttribute(key, value); + userData.save("userDataSettings"); + } +}; diff --git a/docs/scripts/clipboard.min.js b/docs/scripts/clipboard.min.js new file mode 100644 index 0000000..580433f --- /dev/null +++ b/docs/scripts/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v1.5.12 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Clipboard=t()}}(function(){var t,e,n;return function t(e,n,o){function i(a,c){if(!n[a]){if(!e[a]){var s="function"==typeof require&&require;if(!c&&s)return s(a,!0);if(r)return r(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var u=n[a]={exports:{}};e[a][0].call(u.exports,function(t){var n=e[a][1][t];return i(n?n:t)},u,u.exports,t,e,n,o)}return n[a].exports}for(var r="function"==typeof require&&require,a=0;ao;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],i=[];if(o&&e)for(var r=0,a=o.length;a>r;r++)o[r].fn!==e&&o[r].fn._!==e&&i.push(o[r]);return i.length?n[t]=i:delete n[t],this}},e.exports=o},{}],8:[function(e,n,o){!function(i,r){if("function"==typeof t&&t.amd)t(["module","select"],r);else if("undefined"!=typeof o)r(n,e("select"));else{var a={exports:{}};r(a,i.select),i.clipboardAction=a.exports}}(this,function(t,e){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=n(e),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},a=function(){function t(t,e){for(var n=0;n+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 + + + Novacta.Shfb.LatexTools Documentation - Search + + + + + + + + +
    +
    +
    +
    + + +
    +
    +    + Sort by title +
    +
    +
    +
    +

    + Back

    +
    +
    + + diff --git a/docs/styles/branding-Help1.css b/docs/styles/branding-Help1.css new file mode 100644 index 0000000..8f7ba25 --- /dev/null +++ b/docs/styles/branding-Help1.css @@ -0,0 +1,40 @@ +/* Define the userData cache persistence mechanism for Help 1 files */ +.userDataStyle { + behavior: url(#default#userdata); +} + +/* Style adjustments for Help 1 */ +.pageBody { + padding-top: 0px 20px 0px 0px; +} + +table { + width: 95%; + padding-right: 20px; +} + +table.members { + width: 95%; + padding-right: 20px; +} + +th p { + padding-bottom: 0px; +} + +td p { + padding-bottom: 5px; +} + +.codeSnippetContainerTabs { + top: 1px; +} + +.codeSnippetToolBarText { + top: -13px; +} + +.codeSnippetContainerTabSingle { + padding: 2px 15px 0px 15px; + height: 22px; +} diff --git a/docs/styles/branding-HelpViewer.css b/docs/styles/branding-HelpViewer.css new file mode 100644 index 0000000..951621b --- /dev/null +++ b/docs/styles/branding-HelpViewer.css @@ -0,0 +1,48 @@ +/* Style adjustments for Help Viewer */ +.pageBody { + padding-top: 0px 20px 0px 0px; +} + +table { + width: 95%; + padding-right: 20px; +} + +table.members { + width: 95%; + padding-right: 20px; +} + +th p { + padding-bottom: 0px; +} + +td p { + padding-bottom: 5px; +} + +.codeSnippetContainerTabs { + top: 1px; +} + +.codeSnippetToolBarText { + top: -13px; +} + +.codeSnippetContainerTabSingle { + padding: 2px 15px 0px 15px; + height: 22px; +} + +.codeSnippetContainerTab a:visited { + color: #000000; +} + +.codeSnippetContainerTabActive a:visited { + color: #000000; +} + +span.keyword { + color: #0000ff; + font-weight: normal; +} diff --git a/docs/styles/branding-Website.css b/docs/styles/branding-Website.css new file mode 100644 index 0000000..d39e08c --- /dev/null +++ b/docs/styles/branding-Website.css @@ -0,0 +1,156 @@ +/* Style adjustments for websites */ +.pageBody { + padding: 0px 20px 0px 0px; +} +.topicContent { + margin-left: 280px; +} + +/* Lightweight TOC */ +.tocCollapsed { + background: url('../icons/TocCollapsed.gif') no-repeat scroll center; + width: 17px; + height: 20px; + overflow: hidden; +} +.tocExpanded { + background: url('../icons/TocExpanded.gif') no-repeat scroll center; + width: 17px; + height: 20px; + overflow: hidden; +} +.tocResize { + position: absolute; + top: 90px; + left: 300px; + width: 5px; + height: 20px; + padding-right: 5px; +} +.tocResize img { + border: none; + cursor: pointer; +} +div#leftNav { + float: left; + margin: 0px -1px 0 0; + width: 280px; + min-height: 10px; + position: relative; + border-right: 1px solid #b6b6b6; + padding-left: 10px; + padding-top: 15px; +} +div#tocNav { + font-family: 'Segoe UI' ,Verdana,Arial; + overflow-x: hidden; + line-height: normal; + margin: -20px 0 0 -4px; +} +div#tocNav > div { + overflow-x: hidden; + white-space: normal; + width: auto; + margin-bottom: 5px; +} +div#leftNav a, div#leftNav a:link, div#leftNav a:visited { + color: #1364c4; + text-decoration: none; +} +div#leftNav a:hover { + color: #3390b1; +} +div#tocNav > div > a, div#tocNav > div > a:link, div#tocNav > div > a:visited { + display: block; + margin-left: 18px; + overflow: hidden; +} +div#tocNav > div.current > a, div#tocNav > div.current > a:link, div#tocNav > div.current > a:visited { + color: #000; + font-weight: bold; + text-decoration: none; +} +div#tocNav > div > a.tocExpanded, div#tocNav > div > a.tocCollapsed { + float: left; + display: inline-block; + margin-left: 0; + vertical-align: top; +} +div#tocResizableEW { + cursor: e-resize; + width: 15px; + top: 0; + height: 100%; + position: absolute; + display: block; + font-size: 0.5px; + right: -7px; +} +.toclevel0:first-child { + margin-top: 16px; +} +div#tocNav > div.toclevel1 { + padding-left: 17px; +} +div#tocNav > div.toclevel2 { + padding-left: 34px; +} +div#tocNav > div.toclevel3 { + padding-left: 51px; +} +div#tocNav > div.toclevel4 { + padding-left: 68px; +} +div#tocNav > div.toclevel5 { + padding-left: 85px; +} +div#tocNav > div.toclevel6 { + padding-left: 102px; +} +div#tocNav > div.toclevel7 { + padding-left: 119px; +} +div#tocNav > div.toclevel8 { + padding-left: 136px; +} +div#tocNav > div.toclevel9 { + padding-left: 153px; +} +div#tocNav > div.toclevel10 { + padding-left: 170px; +} + +/* Search form */ +form#SearchForm { + float: right; + background-color: #eee; + width: 280px; +} +form#SearchForm input { + background-color: #eee; + border: 0; + height: 22px; + width: 230px; + color: #3b3b3b; + display: inline-block; + margin: 1px 0 0 0; + padding: 1px 4px 1px 10px; +} +form#SearchForm button { + background: url('../icons/Search.png') no-repeat scroll center; + background-color: #eee; + float: right; + border: 0; + margin: 3px 2px 0 0; + cursor: pointer; + color: #3b3b3b; + width: 19px; + height: 18px; + overflow: hidden; +} +.searchContainer { + width: 700px; + margin-top: 50px; + margin-left: auto; + margin-right: auto; +} diff --git a/docs/styles/branding-cs-CZ.css b/docs/styles/branding-cs-CZ.css new file mode 100644 index 0000000..f38de74 --- /dev/null +++ b/docs/styles/branding-cs-CZ.css @@ -0,0 +1,3 @@ +/* Start CS-CZ locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-de-DE.css b/docs/styles/branding-de-DE.css new file mode 100644 index 0000000..4cf80ba --- /dev/null +++ b/docs/styles/branding-de-DE.css @@ -0,0 +1,3 @@ +/* Start DE-DE locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-en-US.css b/docs/styles/branding-en-US.css new file mode 100644 index 0000000..248cbe5 --- /dev/null +++ b/docs/styles/branding-en-US.css @@ -0,0 +1,3 @@ +/* Start EN-US locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-es-ES.css b/docs/styles/branding-es-ES.css new file mode 100644 index 0000000..4a7ebbd --- /dev/null +++ b/docs/styles/branding-es-ES.css @@ -0,0 +1,3 @@ +/* Start ES-ES locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-fr-FR.css b/docs/styles/branding-fr-FR.css new file mode 100644 index 0000000..d924dec --- /dev/null +++ b/docs/styles/branding-fr-FR.css @@ -0,0 +1,3 @@ +/* Start FR-FR locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-it-IT.css b/docs/styles/branding-it-IT.css new file mode 100644 index 0000000..36c6b22 --- /dev/null +++ b/docs/styles/branding-it-IT.css @@ -0,0 +1,3 @@ +/* Start IT-IT locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-ja-JP.css b/docs/styles/branding-ja-JP.css new file mode 100644 index 0000000..403aa6d --- /dev/null +++ b/docs/styles/branding-ja-JP.css @@ -0,0 +1,18 @@ +/* Start JA-JP locale-specific CSS */ +body +{ + font-family: Segoe UI, Verdana, Arial, MS Pゴシック; +} +pre +{ + font-family: Consolas, Courier, monospace, MS ゴシック; +} +span.tt +{ + font-family: Consolas, Courier, monospace, MS ゴシック; +} +span.code +{ + font-family: Consolas, Courier, monospace, MS ゴシック; +} +/* End locale-specific CSS */ diff --git a/docs/styles/branding-ko-KR.css b/docs/styles/branding-ko-KR.css new file mode 100644 index 0000000..2b46e92 --- /dev/null +++ b/docs/styles/branding-ko-KR.css @@ -0,0 +1,19 @@ +/* Start KO-KR locale-specific CSS */ +body +{ + font-family: Malgun Gothic, Segoe UI, Verdana, Arial; + font-size: 0.75em; /*9pt*/ +} +pre +{ + font-family: Consolas, Courier, monospace, 돋움체; +} +span.tt +{ + font-family: Consolas, Courier, monospace, 돋움체; +} +span.code +{ + font-family: Consolas, Courier, monospace, 돋움체; +} +/* End locale-specific CSS */ diff --git a/docs/styles/branding-pl-PL.css b/docs/styles/branding-pl-PL.css new file mode 100644 index 0000000..19e9810 --- /dev/null +++ b/docs/styles/branding-pl-PL.css @@ -0,0 +1,3 @@ +/* Start PL-PL locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-pt-BR.css b/docs/styles/branding-pt-BR.css new file mode 100644 index 0000000..a0683b0 --- /dev/null +++ b/docs/styles/branding-pt-BR.css @@ -0,0 +1,3 @@ +/* Start PT-BR locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-ru-RU.css b/docs/styles/branding-ru-RU.css new file mode 100644 index 0000000..c31f83a --- /dev/null +++ b/docs/styles/branding-ru-RU.css @@ -0,0 +1,3 @@ +/* Start RU-RU locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-tr-TR.css b/docs/styles/branding-tr-TR.css new file mode 100644 index 0000000..81ca462 --- /dev/null +++ b/docs/styles/branding-tr-TR.css @@ -0,0 +1,3 @@ +/* Start TR-TR locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-zh-CN.css b/docs/styles/branding-zh-CN.css new file mode 100644 index 0000000..87e7090 --- /dev/null +++ b/docs/styles/branding-zh-CN.css @@ -0,0 +1,18 @@ +/* Start ZH-CN locale-specific CSS */ +body +{ + font-family: "Microsoft YaHei UI","Microsoft YaHei","SimSun","Segoe UI","Lucida Grande",Verdana,Arial,Helvetica,sans-serif +} +pre +{ + font-family: Consolas, Courier, monospace!important; +} +span.tt +{ + font-family: Consolas, Courier, monospace; +} +span.code +{ + font-family: Consolas, Courier, monospace; +} +/* End locale-specific CSS */ diff --git a/docs/styles/branding-zh-TW.css b/docs/styles/branding-zh-TW.css new file mode 100644 index 0000000..eab654f --- /dev/null +++ b/docs/styles/branding-zh-TW.css @@ -0,0 +1,18 @@ +/* Start ZH-TW locale-specific CSS */ +body +{ + font-family: MS JhengHei, MingLiU, Segoe UI, Verdana, Arial; +} +pre +{ + font-family: Consolas, Courier, monospace, 細明體; +} +span.tt +{ + font-family: Consolas, Courier, monospace, 細明體; +} +span.code +{ + font-family: Consolas, Courier, monospace, 細明體; +} +/* End locale-specific CSS */ diff --git a/docs/styles/branding.css b/docs/styles/branding.css new file mode 100644 index 0000000..6850320 --- /dev/null +++ b/docs/styles/branding.css @@ -0,0 +1,583 @@ +/* General styles */ +body { + font-family: 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif; + font-size: 15px; + padding: 0; + margin: 0; + margin-left: auto; + margin-right: auto; + color: #000; +} +h1 { + font-family: 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif; + font-size: 2.5em; + font-weight: normal; + margin-top: 0; + color: #000; +} +h2, h3 { + font-family: 'Segoe UI Semibold' , 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif; + font-weight: normal; + margin: 0; + padding-bottom: 5px; + padding-top: 5px; + color: #000; +} +h2 { + font-size: 1.769em; +} +h3 { + font-size: 1.231em; +} +h4, .subHeading { + font-family: 'Segoe UI Semibold' , 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif; + font-size: 1.077em; + font-weight: normal; + margin: 0; + color: #000; +} +.subHeading { + margin-top: 5px; +} +h5, h6 { + font-family: 'Segoe UI Semibold' , 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif; + font-size: 1em; + font-weight: normal; + line-height: 130%; + margin: 0; + color: #000; +} +a, a:link { + text-decoration: none; + color: #1364c4; +} +a:visited, a:active { + text-decoration: none; + color: #03697a; +} +a:hover { + text-decoration: none; + color: #3390b1; +} +a.button, a.button:active, a.button:hover { + float: right; + background-color: #0080c0; + color: white; + padding: 6px 12px; + font-size: 14px; + border: 1px solid transparent; + border-radius: 4px; + margin-left: 6px; +} +a.button:link, a.button:visited { + color: white; +} +img { + border: 0; +} +p { + margin-top: 0; + margin-bottom: 0; + padding-bottom: 15px; + line-height: 18px; +} +q { + font-style: italic; +} +blockquote { + margin-top: 0px; +} +table { + border-collapse: collapse; + padding: 0; + margin-bottom: 15px; + font-size: 15px; + width: 100%; +} +td, th { + border-bottom: 1px solid #dbdbdb; + margin: 10px; + padding-top: 10px; + padding-bottom: 10px; + padding-right: 8px; + padding-left: 8px; +} +th { + background-color: #ededed; + color: #636363; + text-align: left; + padding-top: 5px; + padding-bottom: 5px; +} +td { + color: #2a2a2a; + vertical-align: top; +} +table p:last-child { + padding-bottom: 0; +} +table.members { + width: 100%; +} +table.members td { + min-width: 72px; +} +table.members img { + padding-right: 5px; +} +div.alert img { + padding-right: 5px; +} +ol { + margin-top: 0px; + margin-bottom: 10px; +} +ol ol { + list-style-type: lower-alpha; +} +ol ol ol { + list-style-type: lower-roman; +} +ul { + margin-top: 0px; + margin-bottom: 10px; +} +.noBullet { + list-style-type: none; + padding-left: 20px; +} +ul ul { + list-style-type: circle; +} +ul ul ul { + list-style-type: square; +} +dt { + font-weight: 600; +} +pre { + font-family: Consolas, Courier, monospace; + overflow: hidden; +} +.pageHeader { + font-family: 'Segoe UI' , Tahoma, Helvetica, Sans-Serif; + background-color: #333333; + color: #d0d0d0; + padding: 5px 10px; + vertical-align: middle; + height: 25px; +} +.pageBody { + padding: 0px; +} +.topicContent { + padding: 10px 10px 15px 10px; + overflow: visible; + border-left: 1px solid #bbb; +} +.pageFooter { + clear: both; + border-top: solid 1px #bbb; + padding: 10px; +} +.feedbackLink { +} +.iconColumn { + width: 100px; +} +.seeAlsoStyle { +} +table.titleTable td { + padding-top: 0px; + border-width: 0px; +} +td.titleColumn { + margin-top: 0px; + padding-left: 0px; + vertical-align: middle; +} +td.logoColumn { + padding-left: 0px; + padding-right: 10px; + vertical-align: middle; + width: 1px; +} +td.logoColumnAbove { + padding: 0px 10px 0px 0px; + vertical-align: middle; +} +span.selflink { + color: #000066; +} +div.preliminary { + margin-top: 1em; + margin-bottom: 1em; + font-weight: bold; + color: #333333; +} +div.caption { + font-weight: bold; + font-size: 1em; /*12pt*/ + color: #003399; + padding-top: 5px; + padding-bottom: 5px; +} +.procedureSubHeading { + font-size: 1.1em; /*13.5pt*/ + font-weight: bold; +} +.summary { +} + +/* Collapsible region styles */ +.collapsibleAreaRegion { + margin-top: 15px; + margin-bottom: 15px; +} +.collapseToggle { + padding-right: 5px; +} +.collapsibleRegionTitle { + font-family: 'Segoe UI Semibold' , 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif !important; + font-style: normal !important; + font-size: 1.769em; + margin-top: 9px; + margin-bottom: 19px; + padding-top: 20px; + padding-bottom: 5px; + cursor: pointer; +} +.collapsibleSection { + padding: 0 0 0 20px; +} + +/* Syntax and code snippet styles */ +.codeSnippetContainer { + min-width: 260px; + margin-top: 10px; +} +.codeSnippetContainerTabs { + height: 23px; + vertical-align: middle; + position: relative; + z-index: 1; +} +.codeSnippetContainerTab { + padding: 0px 15px; + width: auto; + height: 22px; + color: #2a2a2a; + font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important; + font-size: 12px; + font-style: normal !important; + vertical-align: baseline; + float: left; +} +.codeSnippetContainerTabActive { + background: #f8f8f8; + padding: 0px 15px; + width: auto; + height: 22px; + color: #000000; + font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important; + font-size: 12px; + font-style: normal !important; + vertical-align: baseline; + border-top-color: #939393; + border-right-color: #939393; + border-left-color: #939393; + border-top-width: 1px; + border-right-width: 1px; + border-left-width: 1px; + border-top-style: solid; + border-right-style: solid; + border-left-style: solid; + float: left; +} +.codeSnippetContainerTabPhantom { + background: #f8f8f8; + padding: 0px 15px; + width: auto; + height: 22px; + color: #000000; + font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important; + font-size: 12px; + font-style: normal !important; + vertical-align: baseline; + border-top-color: #939393; + border-right-color: #939393; + border-left-color: #939393; + border-top-width: 1px; + border-right-width: 1px; + border-left-width: 1px; + border-top-style: solid; + border-right-style: solid; + border-left-style: solid; + float: left; + display: none; +} +.codeSnippetContainerTabSingle { + background: #f8f8f8; + padding: 2px 15px 0px 15px; + width: auto; + height: 20px; + color: #000000; + font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important; + font-size: 12px; + font-weight: bold; + font-style: normal !important; + vertical-align: baseline; + border-top-color: #939393; + border-right-color: #939393; + border-left-color: #939393; + border-top-width: 1px; + border-right-width: 1px; + border-left-width: 1px; + border-top-style: solid; + border-right-style: solid; + border-left-style: solid; + float: left; +} +.codeSnippetContainerTab a { + top: 2px; + color: #000000; + font-weight: bold; + text-decoration: none; + position: relative; +} +.codeSnippetContainerTab a:link { + color: #000000; +} +.codeSnippetContainerTab a:hover { + color: #136460; +} +.codeSnippetContainerTabActive a { + top: 2px; + color: #000000; + font-weight: bold; + text-decoration: none; + position: relative; + cursor: default; +} +.codeSnippetContainerTabActive a:link { + color: #000000; +} +.codeSnippetContainerTabActive a:hover { + color: #000000; +} +.codeSnippetContainerTabPhantom a { + top: 2px; + color: #000000; + font-weight: bold; + text-decoration: none; + position: relative; + cursor: default; +} +.codeSnippetContainerTabPhantom a:link { + color: #000000; +} +.codeSnippetContainerCodeContainer { + border: 1px solid #939393; + top: -1px; + margin-bottom: 12px; + position: relative; +} +.codeSnippetToolBar { + width: auto; + height: auto; +} +.codeSnippetToolBarText { + top: -8px; + width: auto; + height: 0px; + padding-right: 0px; + padding-left: 0px; + vertical-align: top; + float: right; + position: relative; +} +.codeSnippetToolBarText a { + color: #1364c4; + text-decoration: none; + padding-left: 8px; + padding-right: 8px; + font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important; + font-size: 10px; + font-style: normal !important; + text-decoration: none; + margin-right: 10px; + margin-left: 0px; + background-color: #ffffff; +} +.codeSnippetToolBarText a:link { + color: #1364c4; +} +.codeSnippetContainerCode { + margin: 0px; + padding: 10px; + width: auto; +} +.codeSnippetContainerCode div { + margin: 0px; + padding: 0px; +} +.codeSnippetContainerCode pre { + margin: 0px; + padding: 5px; + overflow: auto; + font-family: Consolas, Courier, monospace !important; + font-style: normal; + font-weight: normal; + -ms-word-wrap: normal; +} +.codeSnippetContainerCode .keyword { + color: #0000ff; + font-weight: normal; +} + +.copyCodeSnippet { +} + +/* Keyword and phrase styles */ +span.code, span.command { + font-family: Consolas, Courier, monospace; + color: #000066; + background-color: #f4f4f4; +} +span.ui { + font-weight: bold; +} +span.math { + font-style: italic; +} +span.input { + font-weight: bold; +} +span.term { + font-style: italic; +} +span.label { + font-weight: bold; +} +span.foreignPhrase, span.phrase { + font-style: italic; +} +span.placeholder { + font-style: italic; +} +span.typeparameter { + font-style: italic; +} +span.identifier { +} +span.keyword { + font-weight: bold; +} +span.parameter { + font-style: italic; +} +dt span.parameter { + font-weight: normal; +} +span.literal, span.literalValue { + color: #cc0000; +} +span.comment { + color: #006633; +} +span.introStyle { + color: #a9a9a9; +} +span.nolink { + font-weight: bold; +} + +/* Auto-outline styles */ +ul.autoOutline { +} +li.outlineSectionEntry { +} +div.outlineSectionEntrySummary { +} + +/* Media styles */ +div.mediaNear { + text-align: left; + margin-top: 1em; + margin-bottom: 1em; +} +div.mediaFar { + text-align: right; + margin-top: 1em; + margin-bottom: 1em; +} +div.mediaCenter { + text-align: center; + margin-top: 1em; + margin-bottom: 1em; +} +span.captionLead { + font-weight: bold; + margin-right: .5em; +} +span.media img { + vertical-align: top; +} + +/* Glossary styles */ +div.glossaryDiv { +} +div.glossaryLetterBar { +} +hr.glossaryRule { +} +h3.glossaryGroupHeading { + color: #808080; +} +div.glossaryGroup { +} +dl.glossaryGroupList { + margin: 0; + color: Black; +} +dt.glossaryEntry { + margin-left: 2em; +} +dd.glossaryEntry { + margin-left: 2em; + margin-bottom: 2em; +} +div.relatedEntry { + margin-bottom: 4px; +} + +/* Bibliography styles */ +div.bibliographStyle { + padding-top: 5px; +} +span.bibliographyNumber { +} +span.bibliographyAuthor { + font-weight: bold; +} +span.bibliographyTitle { + font-style: italic; +} +span.bibliographyPublisher { +} +sup.citation a:link a:visited a:active { + text-decoration: none; +} + +/* Placeholder for the Help 1 user data style class */ +.userDataStyle { +} + + + +.missing +{ + color: #dc143c; + font-size: 8.5pt; + font-weight: bold; +} diff --git a/docs/styles/highlight.css b/docs/styles/highlight.css new file mode 100644 index 0000000..2916c31 --- /dev/null +++ b/docs/styles/highlight.css @@ -0,0 +1,28 @@ +.highlight-inline { color: #000066; font-size: 9pt; font-family: Consolas, "Courier New", Courier, monospace; } +.highlight-pre { clear: both; width: 99.5%; background-color: #EFEFF7; padding: 0.4em; font-size: 9pt; font-family: Consolas, "Courier New", Courier, monospace; margin-top: 0px; margin-bottom: 1em; } +.highlight-comment { color: #006633; } +.highlight-literal { color: #CC0000; } +.highlight-number { color: #009966; } +.highlight-keyword { color: #0000FF; } +.highlight-preprocessor { color: #996666; } +.highlight-xml-tag { color: #AA4400 } +.highlight-xml-bracket { color: #0000FF } +.highlight-xml-bracket-inline { background: #FFFF66 } +.highlight-xml-comment { color: #006633 } +.highlight-xml-cdata { color: #AA0088 } +.highlight-xml-attribute-name { color: #0000FF } +.highlight-xml-attribute-equal { color: #000000 } +.highlight-xml-attribute-value {color: #CC0000 } +.highlight-title { font-weight: bold; margin-top: 1em; margin-bottom: 2px; border-bottom: gray 1px solid; padding-bottom: 3px; } +.highlight-copycode { float: right; padding-right: 10px; font-weight: normal; cursor: pointer; } +.highlight-copycode_h { float: right; padding-right: 10px; font-weight: normal; cursor: pointer; text-decoration: underline} +.highlight-lineno { font-size: 80%; color: black } +.highlight-lnborder { border-right-style: solid; border-right-width: 1px; border-color: gray; padding-right: 4px; margin-right: 4px; width: 4px;} +.highlight-spacer { padding-right: 20px; } +.highlight-spacerShort { padding-right: 5px; } +.highlight-collapsebox { cursor: pointer; color: black; text-align: center; border-style: solid; border-width: 1px; border-color: gray; margin-left: 2px; margin-right: 5px; } +.highlight-collapsed { border-style: solid; border-width: 1px; border-color: gray; margin: 2px; color: gray; } +.highlight-expanded { border-left-style: solid; border-left-width: 1px; border-color: gray; margin-left: 2px; margin-right: 10px; } +.highlight-endblock { border-left-style: solid; border-left-width: 1px; border-bottom-style: solid; border-bottom-width: 1px; border-color: gray; margin-left: 2px; margin-right: 10px; } +.highlight-pshell-cmdlet { color: #5A9EA5; font-weight: bold; } +.highlight-namespace { color: #008284; } diff --git a/docs/toc/7abd97df-f098-4afa-9f9c-2255d3e61a33.xml b/docs/toc/7abd97df-f098-4afa-9f9c-2255d3e61a33.xml new file mode 100644 index 0000000..13506f1 --- /dev/null +++ b/docs/toc/7abd97df-f098-4afa-9f9c-2255d3e61a33.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/G_Novacta_Shfb.xml b/docs/toc/G_Novacta_Shfb.xml new file mode 100644 index 0000000..8a56d89 --- /dev/null +++ b/docs/toc/G_Novacta_Shfb.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/G_SampleClassLibrary.xml b/docs/toc/G_SampleClassLibrary.xml new file mode 100644 index 0000000..889310b --- /dev/null +++ b/docs/toc/G_SampleClassLibrary.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/Methods_T_Novacta_Shfb_LatexTools_DviPngProcessor.xml b/docs/toc/Methods_T_Novacta_Shfb_LatexTools_DviPngProcessor.xml new file mode 100644 index 0000000..b12e25f --- /dev/null +++ b/docs/toc/Methods_T_Novacta_Shfb_LatexTools_DviPngProcessor.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/Methods_T_Novacta_Shfb_LatexTools_DviSvgmProcessor.xml b/docs/toc/Methods_T_Novacta_Shfb_LatexTools_DviSvgmProcessor.xml new file mode 100644 index 0000000..a9e313a --- /dev/null +++ b/docs/toc/Methods_T_Novacta_Shfb_LatexTools_DviSvgmProcessor.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/Methods_T_Novacta_Shfb_LatexTools_FileProcessor.xml b/docs/toc/Methods_T_Novacta_Shfb_LatexTools_FileProcessor.xml new file mode 100644 index 0000000..b06d245 --- /dev/null +++ b/docs/toc/Methods_T_Novacta_Shfb_LatexTools_FileProcessor.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/Methods_T_Novacta_Shfb_LatexTools_LatexComponent.xml b/docs/toc/Methods_T_Novacta_Shfb_LatexTools_LatexComponent.xml new file mode 100644 index 0000000..676a7e8 --- /dev/null +++ b/docs/toc/Methods_T_Novacta_Shfb_LatexTools_LatexComponent.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/Methods_T_Novacta_Shfb_LatexTools_LatexComponent_Factory.xml b/docs/toc/Methods_T_Novacta_Shfb_LatexTools_LatexComponent_Factory.xml new file mode 100644 index 0000000..e602a02 --- /dev/null +++ b/docs/toc/Methods_T_Novacta_Shfb_LatexTools_LatexComponent_Factory.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/Methods_T_Novacta_Shfb_LatexTools_LatexPlugIn.xml b/docs/toc/Methods_T_Novacta_Shfb_LatexTools_LatexPlugIn.xml new file mode 100644 index 0000000..870310f --- /dev/null +++ b/docs/toc/Methods_T_Novacta_Shfb_LatexTools_LatexPlugIn.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/Methods_T_Novacta_Shfb_LatexTools_LatexProcessor.xml b/docs/toc/Methods_T_Novacta_Shfb_LatexTools_LatexProcessor.xml new file mode 100644 index 0000000..53aae1f --- /dev/null +++ b/docs/toc/Methods_T_Novacta_Shfb_LatexTools_LatexProcessor.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/Methods_T_SampleClassLibrary_Advanced_IntegerArrayOperation.xml b/docs/toc/Methods_T_SampleClassLibrary_Advanced_IntegerArrayOperation.xml new file mode 100644 index 0000000..238c57e --- /dev/null +++ b/docs/toc/Methods_T_SampleClassLibrary_Advanced_IntegerArrayOperation.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/Methods_T_SampleClassLibrary_IntegerOperation.xml b/docs/toc/Methods_T_SampleClassLibrary_IntegerOperation.xml new file mode 100644 index 0000000..165361c --- /dev/null +++ b/docs/toc/Methods_T_SampleClassLibrary_IntegerOperation.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/N_Novacta_Shfb_LatexTools.xml b/docs/toc/N_Novacta_Shfb_LatexTools.xml new file mode 100644 index 0000000..9d4514d --- /dev/null +++ b/docs/toc/N_Novacta_Shfb_LatexTools.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/N_Novacta_Shfb_LatexTools_PresentationStyles.xml b/docs/toc/N_Novacta_Shfb_LatexTools_PresentationStyles.xml new file mode 100644 index 0000000..3e332fd --- /dev/null +++ b/docs/toc/N_Novacta_Shfb_LatexTools_PresentationStyles.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/N_SampleClassLibrary.xml b/docs/toc/N_SampleClassLibrary.xml new file mode 100644 index 0000000..c2e7dc0 --- /dev/null +++ b/docs/toc/N_SampleClassLibrary.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/N_SampleClassLibrary_Advanced.xml b/docs/toc/N_SampleClassLibrary_Advanced.xml new file mode 100644 index 0000000..a0fdb57 --- /dev/null +++ b/docs/toc/N_SampleClassLibrary_Advanced.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/Overload_Novacta_Shfb_LatexTools_FileProcessor_Run.xml b/docs/toc/Overload_Novacta_Shfb_LatexTools_FileProcessor_Run.xml new file mode 100644 index 0000000..16413c4 --- /dev/null +++ b/docs/toc/Overload_Novacta_Shfb_LatexTools_FileProcessor_Run.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/Properties_T_Novacta_Shfb_LatexTools_DviPngProcessor.xml b/docs/toc/Properties_T_Novacta_Shfb_LatexTools_DviPngProcessor.xml new file mode 100644 index 0000000..75045c4 --- /dev/null +++ b/docs/toc/Properties_T_Novacta_Shfb_LatexTools_DviPngProcessor.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/Properties_T_Novacta_Shfb_LatexTools_DviSvgmProcessor.xml b/docs/toc/Properties_T_Novacta_Shfb_LatexTools_DviSvgmProcessor.xml new file mode 100644 index 0000000..9ed0da1 --- /dev/null +++ b/docs/toc/Properties_T_Novacta_Shfb_LatexTools_DviSvgmProcessor.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/Properties_T_Novacta_Shfb_LatexTools_FileProcessor.xml b/docs/toc/Properties_T_Novacta_Shfb_LatexTools_FileProcessor.xml new file mode 100644 index 0000000..ef9e31c --- /dev/null +++ b/docs/toc/Properties_T_Novacta_Shfb_LatexTools_FileProcessor.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/Properties_T_Novacta_Shfb_LatexTools_LatexComponent_Factory.xml b/docs/toc/Properties_T_Novacta_Shfb_LatexTools_LatexComponent_Factory.xml new file mode 100644 index 0000000..a2a1f80 --- /dev/null +++ b/docs/toc/Properties_T_Novacta_Shfb_LatexTools_LatexComponent_Factory.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/Properties_T_Novacta_Shfb_LatexTools_LatexPlugIn.xml b/docs/toc/Properties_T_Novacta_Shfb_LatexTools_LatexPlugIn.xml new file mode 100644 index 0000000..1ea4656 --- /dev/null +++ b/docs/toc/Properties_T_Novacta_Shfb_LatexTools_LatexPlugIn.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/Properties_T_Novacta_Shfb_LatexTools_LatexProcessor.xml b/docs/toc/Properties_T_Novacta_Shfb_LatexTools_LatexProcessor.xml new file mode 100644 index 0000000..975577d --- /dev/null +++ b/docs/toc/Properties_T_Novacta_Shfb_LatexTools_LatexProcessor.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/Properties_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.xml b/docs/toc/Properties_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.xml new file mode 100644 index 0000000..892579e --- /dev/null +++ b/docs/toc/Properties_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/Properties_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.xml b/docs/toc/Properties_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.xml new file mode 100644 index 0000000..456f86d --- /dev/null +++ b/docs/toc/Properties_T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/T_Novacta_Shfb_LatexTools_DviPngProcessor.xml b/docs/toc/T_Novacta_Shfb_LatexTools_DviPngProcessor.xml new file mode 100644 index 0000000..8ebff57 --- /dev/null +++ b/docs/toc/T_Novacta_Shfb_LatexTools_DviPngProcessor.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/T_Novacta_Shfb_LatexTools_DviSvgmProcessor.xml b/docs/toc/T_Novacta_Shfb_LatexTools_DviSvgmProcessor.xml new file mode 100644 index 0000000..1248992 --- /dev/null +++ b/docs/toc/T_Novacta_Shfb_LatexTools_DviSvgmProcessor.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/T_Novacta_Shfb_LatexTools_FileProcessor.xml b/docs/toc/T_Novacta_Shfb_LatexTools_FileProcessor.xml new file mode 100644 index 0000000..1d6a662 --- /dev/null +++ b/docs/toc/T_Novacta_Shfb_LatexTools_FileProcessor.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/T_Novacta_Shfb_LatexTools_LatexComponent.xml b/docs/toc/T_Novacta_Shfb_LatexTools_LatexComponent.xml new file mode 100644 index 0000000..ef883e9 --- /dev/null +++ b/docs/toc/T_Novacta_Shfb_LatexTools_LatexComponent.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/T_Novacta_Shfb_LatexTools_LatexComponent_Factory.xml b/docs/toc/T_Novacta_Shfb_LatexTools_LatexComponent_Factory.xml new file mode 100644 index 0000000..4f5bfe7 --- /dev/null +++ b/docs/toc/T_Novacta_Shfb_LatexTools_LatexComponent_Factory.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/T_Novacta_Shfb_LatexTools_LatexPlugIn.xml b/docs/toc/T_Novacta_Shfb_LatexTools_LatexPlugIn.xml new file mode 100644 index 0000000..ffc16d2 --- /dev/null +++ b/docs/toc/T_Novacta_Shfb_LatexTools_LatexPlugIn.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/T_Novacta_Shfb_LatexTools_LatexProcessor.xml b/docs/toc/T_Novacta_Shfb_LatexTools_LatexProcessor.xml new file mode 100644 index 0000000..7bb712e --- /dev/null +++ b/docs/toc/T_Novacta_Shfb_LatexTools_LatexProcessor.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.xml b/docs/toc/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.xml new file mode 100644 index 0000000..75b8c27 --- /dev/null +++ b/docs/toc/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2010WithLatex.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.xml b/docs/toc/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.xml new file mode 100644 index 0000000..9727f33 --- /dev/null +++ b/docs/toc/T_Novacta_Shfb_LatexTools_PresentationStyles_VS2013WithLatex.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/T_SampleClassLibrary_Advanced_IntegerArrayOperation.xml b/docs/toc/T_SampleClassLibrary_Advanced_IntegerArrayOperation.xml new file mode 100644 index 0000000..13730b1 --- /dev/null +++ b/docs/toc/T_SampleClassLibrary_Advanced_IntegerArrayOperation.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/T_SampleClassLibrary_IntegerOperation.xml b/docs/toc/T_SampleClassLibrary_IntegerOperation.xml new file mode 100644 index 0000000..6a1ef51 --- /dev/null +++ b/docs/toc/T_SampleClassLibrary_IntegerOperation.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/roottoc.xml b/docs/toc/roottoc.xml new file mode 100644 index 0000000..925ef56 --- /dev/null +++ b/docs/toc/roottoc.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/samples/SampleClassLibrary.Documentation/Content/OperatingOnIntegerArrays.aml b/samples/SampleClassLibrary.Documentation/Content/OperatingOnIntegerArrays.aml new file mode 100644 index 0000000..7608afd --- /dev/null +++ b/samples/SampleClassLibrary.Documentation/Content/OperatingOnIntegerArrays.aml @@ -0,0 +1,35 @@ + + + + + + Class + T:SampleClassLibrary.Advanced.IntegerArrayOperation + provides method + + M:SampleClassLibrary.Advanced.IntegerArrayOperation.Operate(System.Func{System.Int32,System.Int32},System.Int32[]) + + to manage operations on integer values. + + + In the following example, an integer is squared + executing the + M:SampleClassLibrary.Advanced.IntegerArrayOperation.Operate(System.Func{System.Int32,System.Int32},System.Int32[]) + method. + This is equivalent to define the applied function, + say f:\mathbb{N}\rightarrow \mathbb{N}, + as \forall n \in \mathbb{N}: n \mapsto f\left(n\right)=n^2. + In addition, input validation is also checked. + + + + + + + + + diff --git a/samples/SampleClassLibrary.Documentation/Content/OperatingOnIntegers.aml b/samples/SampleClassLibrary.Documentation/Content/OperatingOnIntegers.aml new file mode 100644 index 0000000..a943bab --- /dev/null +++ b/samples/SampleClassLibrary.Documentation/Content/OperatingOnIntegers.aml @@ -0,0 +1,37 @@ + + + + + + + Class + T:SampleClassLibrary.IntegerOperation + provides method + + M:SampleClassLibrary.IntegerOperation.Operate(System.Func{System.Int32,System.Int32},System.Int32) + + to manage operations on integer values. + + + In the following example, an integer is squared + executing the + M:SampleClassLibrary.IntegerOperation.Operate(System.Func{System.Int32,System.Int32},System.Int32) + method. + This is equivalent to define the applied function, + say f:\mathbb{N}\rightarrow \mathbb{N}, + as \forall n \in \mathbb{N}: n \mapsto f\left(n\right)=n^2. + In addition, input validation is also checked. + + + + + + + + + + diff --git a/samples/SampleClassLibrary.Documentation/Content/VersionHistory/VersionHistory.aml b/samples/SampleClassLibrary.Documentation/Content/VersionHistory/VersionHistory.aml new file mode 100644 index 0000000..f2283da --- /dev/null +++ b/samples/SampleClassLibrary.Documentation/Content/VersionHistory/VersionHistory.aml @@ -0,0 +1,29 @@ + + + + + The topics in this section describe the various changes made to the SampleClassLibrary project over the +life of the project. + + +
    + Version History + + Select a version below to see a description of its changes. + + + + + + + + + +
    + + + + + +
    +
    diff --git a/samples/SampleClassLibrary.Documentation/Content/VersionHistory/v1.0.0.0.aml b/samples/SampleClassLibrary.Documentation/Content/VersionHistory/v1.0.0.0.aml new file mode 100644 index 0000000..c70142b --- /dev/null +++ b/samples/SampleClassLibrary.Documentation/Content/VersionHistory/v1.0.0.0.aml @@ -0,0 +1,28 @@ + + + + + Version 1.0.0. + + + +
    + Changes in This Release + + + + + Initial release. + + + + + +
    + + + + + +
    +
    diff --git a/samples/SampleClassLibrary.Documentation/Content/Welcome.aml b/samples/SampleClassLibrary.Documentation/Content/Welcome.aml new file mode 100644 index 0000000..d9083ec --- /dev/null +++ b/samples/SampleClassLibrary.Documentation/Content/Welcome.aml @@ -0,0 +1,67 @@ + + + + + + SampleClassLibrary is a .NET library that provides support + for operating on integers or on integer arrays. + + + The project targets all platforms implementing + the + .NET Standard + https://github.com/dotnet/standard + , version 2.0. + + +
    + + Documentation + + + + The current documentation includes the following topics. + + + + + + SampleClassLibrary release notes + + + + + + + Operating on integers + walks you through operations on integers. + + + + + + Operating on integer arrays + describes how to operate on arrays of integers. + + + + + + SampleClassLibrary Namespaces + SampleClassLibrary Namespace container + G_SampleClassLibrary.htm + _self + + contains reference information about library + types by namespace. + + + + +
    + + + + +
    +
    diff --git a/samples/SampleClassLibrary.Documentation/ContentLayout.content b/samples/SampleClassLibrary.Documentation/ContentLayout.content new file mode 100644 index 0000000..299abcb --- /dev/null +++ b/samples/SampleClassLibrary.Documentation/ContentLayout.content @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/SampleClassLibrary.Documentation/README.txt b/samples/SampleClassLibrary.Documentation/README.txt new file mode 100644 index 0000000..836f2b5 --- /dev/null +++ b/samples/SampleClassLibrary.Documentation/README.txt @@ -0,0 +1,3 @@ +Before building help files in project SampleClassLibrary.Documentation, +set the binary folders of your installed LaTeX distribution and DviSvgm +converter using the LatexComponent configuration options. \ No newline at end of file diff --git a/samples/SampleClassLibrary.Documentation/SampleClassLibrary.Documentation.shfbproj b/samples/SampleClassLibrary.Documentation/SampleClassLibrary.Documentation.shfbproj new file mode 100644 index 0000000..97d708a --- /dev/null +++ b/samples/SampleClassLibrary.Documentation/SampleClassLibrary.Documentation.shfbproj @@ -0,0 +1,148 @@ + + + + + + + Debug + AnyCPU + 2.0 + 93c88c34-9353-4835-a89c-256d08eb0427 + 2017.9.26.0 + + SampleClassLibrary.Documentation + SampleClassLibrary.Documentation + SampleClassLibrary.Documentation + + .NET Core/.NET Standard/.NET 5.0+ + Help\ + SampleClassLibraryDocumentation + en-US + + + + + + + + + + Website + C# + Novacta.Shfb.LatexTools.VS2013 + True + True + False + False + OnlyWarningsAndErrors + 100 + A Sandcastle Documented Class Library + 1.0.0.0 + MemberName + AboveNamespaces + False + True + 2 + False + Blank + + + False + + + + + + + % Paste here your additional preamble commands + + + + + + + + + + + + + + + + + + Provides support for operations on integers. + Provides support for operations on integer arrays. + SampleClassLibrary Namespaces + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Function + Function + + + + + 1.0.0 + + + + + + + + + + + + + OnBuildSuccess + + \ No newline at end of file diff --git a/samples/SampleClassLibrary.Documentation/icons/Help.png b/samples/SampleClassLibrary.Documentation/icons/Help.png new file mode 100644 index 0000000000000000000000000000000000000000..945e89fb96271c85b901f1e656e9920c788c48e6 GIT binary patch literal 4942 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 M07*qoM6N<$f`j^SBme*a literal 0 HcmV?d00001 diff --git a/samples/SampleClassLibrary.Documentation/media/Function.png b/samples/SampleClassLibrary.Documentation/media/Function.png new file mode 100644 index 0000000000000000000000000000000000000000..7575c77171fece2811643023194a79f20bd41f21 GIT binary patch literal 5631 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 k3!G>{KZDeK`Iou%+M$})#N3)Z + /// Provides a method to operate on arrays of integers. + /// + public static class IntegerArrayOperation + { + /// + /// Applies the specified function to the given array of operands. + /// + /// The function to evaluate at each operand. + /// The array of operands. + /// The results of the operations. + /// + /// is null.
    + /// -or-
    + /// is null. + ///
    + /// + /// + /// In the following example, the applied function, say + /// f:\mathbb{N}\rightarrow \mathbb{N}, is defined as + /// + /// \forall n \in \mathbb{N}: n \mapsto f\left(n\right)=n^2. + /// + /// Integers in a given array are thus squared + /// executing the method. + /// In addition, input validation is also checked. + /// + /// + /// + /// using System; + /// using SampleClassLibrary.Advanced; + /// + /// namespace SampleClassLibrary.CodeExamples.Advanced + /// { + /// public class IntegerArrayOperationExample + /// { + /// public void Main() + /// { + /// // Define an operator that squares its operand + /// Funcint, int> square = (int operand) => operand * operand; + /// + /// // Define an array of operands + /// int[] operands = new int[3] { 2, 4, 8 }; + /// + /// // Operate on it + /// int[] results = IntegerArrayOperation.Operate(square, operands); + /// + /// // Show results + /// for (int i = 0; i results.Length; i++) + /// { + /// Console.WriteLine( + /// "The result of squaring {0} is {1}.", + /// operands[i], + /// results[i]); + /// } + /// + /// // Check that an operator cannot be null + /// try + /// { + /// IntegerArrayOperation.Operate(null, new int[1]); + /// } + /// catch (Exception e) + /// { + /// Console.WriteLine(); + /// Console.WriteLine("Cannot apply a null function:"); + /// Console.WriteLine(e.Message); + /// } + /// + /// // Check that an array of operands cannot be null + /// try + /// { + /// IntegerArrayOperation.Operate(square, null); + /// } + /// catch (Exception e) + /// { + /// Console.WriteLine(); + /// Console.WriteLine("Cannot apply a function to a null array:"); + /// Console.WriteLine(e.Message); + /// } + /// } + /// } + /// } + /// + /// // Executing method Main() produces the following output: + /// // + /// // The result of squaring 2 is 4. + /// // The result of squaring 4 is 16. + /// // The result of squaring 8 is 64. + /// // + /// // Cannot apply a null function: + /// // Value cannot be null. + /// // Parameter name: func + /// // + /// // Cannot apply a function to a null array: + /// // Value cannot be null. + /// // Parameter name: operands + /// + /// + /// + public static int[] Operate(Func func, int[] operands) + { + if (func == null) + { + throw new ArgumentNullException(nameof(func)); + } + if (operands == null) + { + throw new ArgumentNullException(nameof(operands)); + } + + int[] result = new int[operands.Length]; + for (int i = 0; i < result.Length; i++) + { + result[i] = IntegerOperation.Operate(func, operands[i]); + } + return result; + } + } +} diff --git a/samples/SampleClassLibrary/Advanced/IntegerArrayOperationExample.cs.txt b/samples/SampleClassLibrary/Advanced/IntegerArrayOperationExample.cs.txt new file mode 100644 index 0000000..630b8db --- /dev/null +++ b/samples/SampleClassLibrary/Advanced/IntegerArrayOperationExample.cs.txt @@ -0,0 +1,68 @@ +using System; +using SampleClassLibrary.Advanced; + +namespace SampleClassLibrary.CodeExamples.Advanced +{ + public class IntegerArrayOperationExample + { + public void Main() + { + // Define an operator that squares its operand + Func square = (int operand) => operand * operand; + + // Define an array of operands + int[] operands = new int[3] { 2, 4, 8 }; + + // Operate on it + int[] results = IntegerArrayOperation.Operate(square, operands); + + // Show results + for (int i = 0; i < results.Length; i++) + { + Console.WriteLine( + "The result of squaring {0} is {1}.", + operands[i], + results[i]); + } + + // Check that an operator cannot be null + try + { + IntegerArrayOperation.Operate(null, new int[1]); + } + catch (Exception e) + { + Console.WriteLine(); + Console.WriteLine("Cannot apply a null function:"); + Console.WriteLine(e.Message); + } + + // Check that an array of operands cannot be null + try + { + IntegerArrayOperation.Operate(square, null); + } + catch (Exception e) + { + Console.WriteLine(); + Console.WriteLine("Cannot apply a function to a null array:"); + Console.WriteLine(e.Message); + } + + } + } +} + +// Executing method Main() produces the following output: +// +// The result of squaring 2 is 4. +// The result of squaring 4 is 16. +// The result of squaring 8 is 64. +// +// Cannot apply a null function: +// Value cannot be null. +// Parameter name: func +// +// Cannot apply a function to a null array: +// Value cannot be null. +// Parameter name: operands diff --git a/samples/SampleClassLibrary/IntegerOperation.cs b/samples/SampleClassLibrary/IntegerOperation.cs new file mode 100644 index 0000000..d5feb42 --- /dev/null +++ b/samples/SampleClassLibrary/IntegerOperation.cs @@ -0,0 +1,84 @@ +using System; + +namespace SampleClassLibrary +{ + /// + /// Provides a method to operate on integers. + /// + public static class IntegerOperation + { + /// + /// Applies the specified function to the given operand. + /// + /// The function. + /// The operand. + /// The result of the operation. + /// + /// is null. + /// + /// + /// In the following example, the applied function, say + /// f:\mathbb{N}\rightarrow \mathbb{N}, is defined as + /// + /// \forall n \in \mathbb{N}: n \mapsto f\left(n\right)=n^2. + /// + /// An integer is thus squared + /// executing the method. + /// In addition, input validation is also checked. + /// + /// + /// + /// using System; + /// namespace SampleClassLibrary.CodeExamples + /// { + /// public class IntegerOperationExample + /// { + /// public void Main() + /// { + /// // Define an operator that squares its operand + /// Funcint, int> square = (int operand) => operand * operand; + /// + /// // Define an operand + /// int integer = 2; + /// + /// // Operate on it + /// Console.WriteLine("Squaring {0}...", integer); + /// int result = IntegerOperation.Operate(square, integer); + /// Console.WriteLine("...the result is {0}.", result); + /// + /// // Check that an operator cannot be null + /// try + /// { + /// IntegerOperation.Operate(null, 0); + /// } + /// catch (Exception e) + /// { + /// Console.WriteLine(); + /// Console.WriteLine("Cannot apply a null function:"); + /// Console.WriteLine(e.Message); + /// } + /// } + /// } + /// } + /// + /// // Executing method Main() produces the following output: + /// // + /// // Squaring 2... + /// // ...the result is 4. + /// // + /// // Cannot apply a null function: + /// // Value cannot be null. + /// // Parameter name: func + /// + /// + /// + public static int Operate(Func func, int operand) + { + if (func==null) + { + throw new ArgumentNullException(nameof(func)); + } + return func(operand); + } + } +} diff --git a/samples/SampleClassLibrary/IntegerOperationExample.cs.txt b/samples/SampleClassLibrary/IntegerOperationExample.cs.txt new file mode 100644 index 0000000..162b21b --- /dev/null +++ b/samples/SampleClassLibrary/IntegerOperationExample.cs.txt @@ -0,0 +1,41 @@ +using System; +namespace SampleClassLibrary.CodeExamples +{ + public class IntegerOperationExample + { + public void Main() + { + // Define an operator that squares its operand + Func square = (int operand) => operand * operand; + + // Define an operand + int integer = 2; + + // Operate on it + Console.WriteLine("Squaring {0}...", integer); + int result = IntegerOperation.Operate(square, integer); + Console.WriteLine("...the result is {0}.", result); + + // Check that an operator cannot be null + try + { + IntegerOperation.Operate(null, 0); + } + catch (Exception e) + { + Console.WriteLine(); + Console.WriteLine("Cannot apply a null function:"); + Console.WriteLine(e.Message); + } + } + } +} + +// Executing method Main() produces the following output: +// +// Squaring 2... +// ...the result is 4. +// +// Cannot apply a null function: +// Value cannot be null. +// Parameter name: func diff --git a/samples/SampleClassLibrary/SampleClassLibrary.csproj b/samples/SampleClassLibrary/SampleClassLibrary.csproj new file mode 100644 index 0000000..da0f0d5 --- /dev/null +++ b/samples/SampleClassLibrary/SampleClassLibrary.csproj @@ -0,0 +1,8 @@ + + + + netstandard2.0 + True + + + diff --git a/shfb-latex-tools.sln b/shfb-latex-tools.sln new file mode 100644 index 0000000..a069c0a --- /dev/null +++ b/shfb-latex-tools.sln @@ -0,0 +1,67 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31825.309 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{EAFB3F83-5CA9-49B6-80E3-AF6962A8D989}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Novacta.Shfb.LatexConfiguration", "src\Novacta.Shfb.LatexConfiguration\Novacta.Shfb.LatexConfiguration.csproj", "{6A5528FF-0A09-4752-925C-6EAFA69FB78E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Novacta.Shfb.LatexTools", "src\Novacta.Shfb.LatexTools\Novacta.Shfb.LatexTools.csproj", "{BDB8D76D-5421-4303-87D4-925A6932D4FC}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Novacta.Shfb.LatexTools.ConsoleApp", "src\Novacta.Shfb.LatexTools.ConsoleApp\Novacta.Shfb.LatexTools.ConsoleApp.csproj", "{1AAD3BB9-9367-4D6A-B810-C2D82F2A1631}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{AD8908F3-C22A-435A-94BD-FE709B1822F2}" +EndProject +Project("{7CF6DF6D-3B04-46F8-A40B-537D21BCA0B4}") = "SampleClassLibrary.Documentation", "samples\SampleClassLibrary.Documentation\SampleClassLibrary.Documentation.shfbproj", "{93C88C34-9353-4835-A89C-256D08EB0427}" +EndProject +Project("{7CF6DF6D-3B04-46F8-A40B-537D21BCA0B4}") = "Novacta.Shfb.LatexTools.Documentation", "src\Novacta.Shfb.LatexTools.Documentation\Novacta.Shfb.LatexTools.Documentation.shfbproj", "{079A2E5D-BB12-4B65-8BA0-22B0AED32A48}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleClassLibrary", "samples\SampleClassLibrary\SampleClassLibrary.csproj", "{1D6A36E3-F866-4719-9154-91115A59154D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6A5528FF-0A09-4752-925C-6EAFA69FB78E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6A5528FF-0A09-4752-925C-6EAFA69FB78E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6A5528FF-0A09-4752-925C-6EAFA69FB78E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6A5528FF-0A09-4752-925C-6EAFA69FB78E}.Release|Any CPU.Build.0 = Release|Any CPU + {BDB8D76D-5421-4303-87D4-925A6932D4FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BDB8D76D-5421-4303-87D4-925A6932D4FC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BDB8D76D-5421-4303-87D4-925A6932D4FC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BDB8D76D-5421-4303-87D4-925A6932D4FC}.Release|Any CPU.Build.0 = Release|Any CPU + {1AAD3BB9-9367-4D6A-B810-C2D82F2A1631}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1AAD3BB9-9367-4D6A-B810-C2D82F2A1631}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1AAD3BB9-9367-4D6A-B810-C2D82F2A1631}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1AAD3BB9-9367-4D6A-B810-C2D82F2A1631}.Release|Any CPU.Build.0 = Release|Any CPU + {93C88C34-9353-4835-A89C-256D08EB0427}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {93C88C34-9353-4835-A89C-256D08EB0427}.Debug|Any CPU.Build.0 = Debug|Any CPU + {93C88C34-9353-4835-A89C-256D08EB0427}.Release|Any CPU.ActiveCfg = Release|Any CPU + {93C88C34-9353-4835-A89C-256D08EB0427}.Release|Any CPU.Build.0 = Release|Any CPU + {079A2E5D-BB12-4B65-8BA0-22B0AED32A48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {079A2E5D-BB12-4B65-8BA0-22B0AED32A48}.Debug|Any CPU.Build.0 = Debug|Any CPU + {079A2E5D-BB12-4B65-8BA0-22B0AED32A48}.Release|Any CPU.ActiveCfg = Release|Any CPU + {079A2E5D-BB12-4B65-8BA0-22B0AED32A48}.Release|Any CPU.Build.0 = Release|Any CPU + {1D6A36E3-F866-4719-9154-91115A59154D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1D6A36E3-F866-4719-9154-91115A59154D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1D6A36E3-F866-4719-9154-91115A59154D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1D6A36E3-F866-4719-9154-91115A59154D}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {6A5528FF-0A09-4752-925C-6EAFA69FB78E} = {EAFB3F83-5CA9-49B6-80E3-AF6962A8D989} + {BDB8D76D-5421-4303-87D4-925A6932D4FC} = {EAFB3F83-5CA9-49B6-80E3-AF6962A8D989} + {1AAD3BB9-9367-4D6A-B810-C2D82F2A1631} = {EAFB3F83-5CA9-49B6-80E3-AF6962A8D989} + {93C88C34-9353-4835-A89C-256D08EB0427} = {AD8908F3-C22A-435A-94BD-FE709B1822F2} + {079A2E5D-BB12-4B65-8BA0-22B0AED32A48} = {EAFB3F83-5CA9-49B6-80E3-AF6962A8D989} + {1D6A36E3-F866-4719-9154-91115A59154D} = {AD8908F3-C22A-435A-94BD-FE709B1822F2} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {2F1FD5AF-7B37-404C-A950-759158ABC4BC} + EndGlobalSection +EndGlobal diff --git a/src/Novacta.Shfb.LatexConfiguration/GlobalSuppressions.cs b/src/Novacta.Shfb.LatexConfiguration/GlobalSuppressions.cs new file mode 100644 index 0000000..1783412 --- /dev/null +++ b/src/Novacta.Shfb.LatexConfiguration/GlobalSuppressions.cs @@ -0,0 +1,12 @@ +// Copyright (c) Giovanni Lafratta. All rights reserved. +// Licensed under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Diagnostics.CodeAnalysis; + +[assembly: SuppressMessage( + category: "Design", + checkId: "CA1034:Nested types should not be visible", + Justification = "", + Scope = "type", + Target = "~T:Novacta.Shfb.LatexConfiguration.LatexConfigDlg.BuildComponentFactory")] \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexConfiguration/LatexConfigDlg.cs b/src/Novacta.Shfb.LatexConfiguration/LatexConfigDlg.cs new file mode 100644 index 0000000..cb43609 --- /dev/null +++ b/src/Novacta.Shfb.LatexConfiguration/LatexConfigDlg.cs @@ -0,0 +1,351 @@ +// Copyright (c) Giovanni Lafratta. All rights reserved. +// Licensed under the MIT license. +// See the LICENSE file in the project root for more information. + +using Sandcastle.Core.BuildAssembler; +using System; +using System.Collections.Generic; +using System.ComponentModel.Composition.Hosting; +using System.Globalization; +using System.Linq; +using System.Threading; +using System.Windows.Forms; +using System.Xml.Linq; + +namespace Novacta.Shfb.LatexConfiguration +{ + /// + /// Represents a configuration dialog box for the + /// Novacta LaTeX build component. + /// + public partial class LatexConfigDlg : Form + { + #region Build component configuration editor factory for MEF + //===================================================================== + + /// + /// Provides a method to edit the component configuration. + /// + [ConfigurationEditorExport("Novacta.Shfb.LatexComponent")] + public sealed class BuildComponentFactory : IConfigurationEditor + { + /// + public bool EditConfiguration(XElement configuration, CompositionContainer container) + { + using (var dlg = new LatexConfigDlg(configuration)) + { + return dlg.ShowDialog() == DialogResult.OK; + } + } + } + + #endregion + + #region State + + private readonly XElement configuration; + + #endregion + + /// + /// Initializes a new instance of the + /// class by parsing the configuration XML. + /// + /// + /// The current configuration element. + /// + /// + /// + /// An example of configuration follows: + /// + /// + /// + /// + /// + /// + /// + /// + /// % Add here additional preamble commands + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// ]]> + /// + /// + /// + public LatexConfigDlg(XElement configuration) + { + this.InitializeComponent(); + + if (configuration is null) + { + throw new ArgumentNullException(nameof(configuration)); + } + + this.configuration = configuration; + + // Additional Preamble Commands + var additionalPreambleCommands = configuration + .Element("additionalPreambleCommands"); + var lineNodes = additionalPreambleCommands.Descendants(); + List lines = new List(); + foreach (var lineNode in lineNodes) + { + lines.Add(lineNode.Value); + } + + this.c_additionalPreambleCommands.Lines = lines.ToArray(); + + // LaTeX Default Mode + string mode; + RadioButton defaultModeRadioButton; + + mode = configuration + .Element("latexDefaultMode") + .Attribute("value").Value; + + defaultModeRadioButton = + this.c_groupBoxDefaultLaTeXMode + .Controls + .OfType() + .First(r => 0 == string.CompareOrdinal( + r.Text, mode)); + + defaultModeRadioButton.Checked = true; + + // Image File Format + string format; + RadioButton fileFormatRadioButton; + + format = configuration.Element("imageFileFormat") + .Attribute("value").Value; + + fileFormatRadioButton = + this.c_groupBoxFileFormat.Controls.OfType() + .First(r => 0 == string.CompareOrdinal(r.Text, format)); + + fileFormatRadioButton.Checked = true; + + // Image Depth Correction + this.c_imageDepthCorrection.Value = decimal.Parse( + configuration.Element("imageDepthCorrection") + .Attribute("value").Value, + CultureInfo.InvariantCulture); + + // Image Scale Factor + this.c_imageScalePercentage.Value = decimal.Parse( + configuration.Element("imageScalePercentage") + .Attribute("value").Value, + CultureInfo.InvariantCulture); + + // Redirect File Processors + this.c_redirectFileProcessors.Checked = bool.Parse( + configuration.Element("redirectFileProcessors") + .Attribute("value").Value); + + // MiKTeX Bin Folder + this.c_latexBinFolder.Text = configuration + .Element("latexBinPath") + .Attribute("value").Value; + + // DviSvgm Bin Folder + this.c_dvisvgmBinFolder.Text = configuration + .Element("dvisvgmBinPath") + .Attribute("value").Value; + } + + private void OkButton_Click(object sender, EventArgs e) + { + // Additional Preamble Commands + var additionalPreambleCommands = + this.c_groupBoxPreambleAdditionalItems.Controls + .OfType() + .First().Lines; + + // LaTeX Default Mode + RadioButton modeRadioButton; + + modeRadioButton = this.c_groupBoxDefaultLaTeXMode.Controls + .OfType() + .First(r => r.Checked); + + var latexDefaultMode = modeRadioButton.Text; + + // Image File Format + RadioButton formatRadioButton; + + formatRadioButton = this.c_groupBoxFileFormat.Controls + .OfType() + .First(r => r.Checked); + var imageFileFormat = formatRadioButton.Text; + + // Image Depth Correction + var imageDepthCorrection = Convert.ToInt32(this.c_imageDepthCorrection.Value); + + // Image Scale Percentage + var imageScalePercentage = Convert.ToDouble(this.c_imageScalePercentage.Value); + + // Redirect File Processors + var redirectFileProcessors = this.c_redirectFileProcessors.Checked; + + // MiKTeX Bin Folder + var latexBinFolder = this.c_latexBinFolder.Text; + + // DviSvgm Bin Folder + var dviSvgmBinFolder = this.c_dvisvgmBinFolder.Text; + + // Update configuration + { + // additionalPreambleCommands + var additionalPreambleCommandsNode = + this.configuration.Element("additionalPreambleCommands"); + + additionalPreambleCommandsNode.RemoveNodes(); + for (int i = 0; i < additionalPreambleCommands.Length; i++) + { + additionalPreambleCommandsNode.Add( + new XElement("line", additionalPreambleCommands[i])); + } + + // latexDefaultMode + this.configuration.Element("latexDefaultMode").Attribute("value") + .SetValue(latexDefaultMode); + + // imageFileFormat + this.configuration.Element("imageFileFormat").Attribute("value") + .SetValue(imageFileFormat); + + // imageDepthCorrection + this.configuration.Element("imageDepthCorrection").Attribute("value") + .SetValue(imageDepthCorrection); + + // imageScaleFactor + this.configuration.Element("imageScalePercentage").Attribute("value") + .SetValue(imageScalePercentage); + + // redirectFileProcessors + this.configuration.Element("redirectFileProcessors").Attribute("value") + .SetValue(redirectFileProcessors); + + // latexBinPath + this.configuration.Element("latexBinPath").Attribute("value") + .SetValue(latexBinFolder); + + // dvisvgmBinPath + this.configuration.Element("dvisvgmBinPath").Attribute("value") + .SetValue(dviSvgmBinFolder); + + } + + this.DialogResult = DialogResult.OK; + + this.Close(); + } + + private void CancelButton_Click(object sender, EventArgs e) + { + this.Close(); + } + + #region Browsing folders + + private void LatexBrowseButton_Click(object sender, EventArgs e) + { + var t = new Thread(this.SelectLatexFolder) + { + IsBackground = true + }; + t.SetApartmentState(ApartmentState.STA); + t.Start(); + } + private void SelectLatexFolder() + { + FolderBrowserDialog dialog = new FolderBrowserDialog(); + if (dialog.ShowDialog() == DialogResult.OK) + { + this.SetLatexText(dialog.SelectedPath); + } + + dialog.Dispose(); + } + + // This method implements a pattern for making thread-safe + // calls on a Windows Forms control. + // + // If the calling thread is different from the thread that + // created the TextBox control, this method creates a + // SetTextCallback and calls itself asynchronously using the + // Invoke method. + // + // If the calling thread is the same as the thread that created + // the TextBox control, the Text property is set directly. + + // This delegate enables asynchronous calls for setting + // the text property on a TextBox control. + delegate void SetTextCallback(string text); + + private void SetLatexText(string text) + { + // InvokeRequired compares the thread ID of the + // calling thread to the thread ID of the creating thread. + // If these threads are different, it returns true. + if (this.c_latexBinFolder.InvokeRequired) + { + SetTextCallback d = new SetTextCallback(this.SetLatexText); + this.Invoke(d, new object[] { text }); + } + else + { + this.c_latexBinFolder.Text = text; + } + } + + private void DvisvgmBrowseButton_Click(object sender, EventArgs e) + { + var t = new Thread(this.SelectDviSvgmFolder) + { + IsBackground = true + }; + t.SetApartmentState(ApartmentState.STA); + t.Start(); + } + + private void SetDviSvgmText(string text) + { + // InvokeRequired compares the thread ID of the + // calling thread to the thread ID of the creating thread. + // If these threads are different, it returns true. + if (this.c_dvisvgmBinFolder.InvokeRequired) + { + SetTextCallback d = new SetTextCallback(this.SetDviSvgmText); + this.Invoke(d, new object[] { text }); + } + else + { + this.c_dvisvgmBinFolder.Text = text; + } + } + + private void SelectDviSvgmFolder() + { + FolderBrowserDialog dialog = new FolderBrowserDialog(); + if (dialog.ShowDialog() == DialogResult.OK) + { + this.SetDviSvgmText(dialog.SelectedPath); + } + + dialog.Dispose(); + } + + #endregion + } +} diff --git a/src/Novacta.Shfb.LatexConfiguration/LatexConfigDlg.designer.cs b/src/Novacta.Shfb.LatexConfiguration/LatexConfigDlg.designer.cs new file mode 100644 index 0000000..955daed --- /dev/null +++ b/src/Novacta.Shfb.LatexConfiguration/LatexConfigDlg.designer.cs @@ -0,0 +1,391 @@ +namespace Novacta.Shfb.LatexConfiguration +{ + partial class LatexConfigDlg + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.okButton = new System.Windows.Forms.Button(); + this.cancelButton = new System.Windows.Forms.Button(); + this.c_redirectFileProcessors = new System.Windows.Forms.CheckBox(); + this.c_imageScalePercentage = new System.Windows.Forms.NumericUpDown(); + this.l_imageScalePercentage = new System.Windows.Forms.Label(); + this.l_latexBinFolder = new System.Windows.Forms.Label(); + this.c_latexBinFolder = new System.Windows.Forms.TextBox(); + this.latexBrowseButton = new System.Windows.Forms.Button(); + this.l_dvisvgmBinFolder = new System.Windows.Forms.Label(); + this.c_dvisvgmBinFolder = new System.Windows.Forms.TextBox(); + this.dvisvgmBrowseButton = new System.Windows.Forms.Button(); + this.l_imageFileFormat = new System.Windows.Forms.Label(); + this.c_radioFileFormatPng = new System.Windows.Forms.RadioButton(); + this.c_radioFileFormatSvg = new System.Windows.Forms.RadioButton(); + this.c_groupBoxFileFormat = new System.Windows.Forms.GroupBox(); + this.l_imageDepthCorrection = new System.Windows.Forms.Label(); + this.c_imageDepthCorrection = new System.Windows.Forms.NumericUpDown(); + this.l_defaultLaTeXMode = new System.Windows.Forms.Label(); + this.c_groupBoxDefaultLaTeXMode = new System.Windows.Forms.GroupBox(); + this.c_radioLaTeXModeDisplay = new System.Windows.Forms.RadioButton(); + this.c_radioLaTeXModeInline = new System.Windows.Forms.RadioButton(); + this.c_groupBoxPreambleAdditionalItems = new System.Windows.Forms.GroupBox(); + this.c_additionalPreambleCommands = new System.Windows.Forms.TextBox(); + this.c_groupBoxFolders = new System.Windows.Forms.GroupBox(); + ((System.ComponentModel.ISupportInitialize)(this.c_imageScalePercentage)).BeginInit(); + this.c_groupBoxFileFormat.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.c_imageDepthCorrection)).BeginInit(); + this.c_groupBoxDefaultLaTeXMode.SuspendLayout(); + this.c_groupBoxPreambleAdditionalItems.SuspendLayout(); + this.c_groupBoxFolders.SuspendLayout(); + this.SuspendLayout(); + // + // okButton + // + this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK; + this.okButton.Location = new System.Drawing.Point(482, 571); + this.okButton.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.okButton.Name = "okButton"; + this.okButton.Size = new System.Drawing.Size(84, 29); + this.okButton.TabIndex = 1; + this.okButton.Text = "OK"; + this.okButton.UseVisualStyleBackColor = true; + this.okButton.Click += new System.EventHandler(this.OkButton_Click); + // + // cancelButton + // + this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancelButton.Location = new System.Drawing.Point(573, 571); + this.cancelButton.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.cancelButton.Name = "cancelButton"; + this.cancelButton.Size = new System.Drawing.Size(84, 29); + this.cancelButton.TabIndex = 2; + this.cancelButton.Text = "Cancel"; + this.cancelButton.UseVisualStyleBackColor = true; + this.cancelButton.Click += new System.EventHandler(this.CancelButton_Click); + // + // c_redirectFileProcessors + // + this.c_redirectFileProcessors.AutoSize = true; + this.c_redirectFileProcessors.CheckAlign = System.Drawing.ContentAlignment.MiddleRight; + this.c_redirectFileProcessors.Location = new System.Drawing.Point(12, 249); + this.c_redirectFileProcessors.Name = "c_redirectFileProcessors"; + this.c_redirectFileProcessors.Size = new System.Drawing.Size(237, 24); + this.c_redirectFileProcessors.TabIndex = 5; + this.c_redirectFileProcessors.Text = "Redirect file processors: "; + this.c_redirectFileProcessors.UseVisualStyleBackColor = true; + // + // c_imageScalePercentage + // + this.c_imageScalePercentage.Location = new System.Drawing.Point(228, 185); + this.c_imageScalePercentage.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.c_imageScalePercentage.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.c_imageScalePercentage.Name = "c_imageScalePercentage"; + this.c_imageScalePercentage.Size = new System.Drawing.Size(287, 26); + this.c_imageScalePercentage.TabIndex = 6; + this.c_imageScalePercentage.Value = new decimal(new int[] { + 100, + 0, + 0, + 0}); + // + // l_imageScalePercentage + // + this.l_imageScalePercentage.AutoSize = true; + this.l_imageScalePercentage.Location = new System.Drawing.Point(15, 187); + this.l_imageScalePercentage.Name = "l_imageScalePercentage"; + this.l_imageScalePercentage.Size = new System.Drawing.Size(188, 20); + this.l_imageScalePercentage.TabIndex = 7; + this.l_imageScalePercentage.Text = "Image scale percentage: "; + // + // l_latexBinFolder + // + this.l_latexBinFolder.AutoSize = true; + this.l_latexBinFolder.Location = new System.Drawing.Point(6, 41); + this.l_latexBinFolder.Name = "l_latexBinFolder"; + this.l_latexBinFolder.Size = new System.Drawing.Size(129, 20); + this.l_latexBinFolder.TabIndex = 8; + this.l_latexBinFolder.Text = "LaTeX bin folder:"; + // + // c_latexBinFolder + // + this.c_latexBinFolder.Location = new System.Drawing.Point(209, 38); + this.c_latexBinFolder.Name = "c_latexBinFolder"; + this.c_latexBinFolder.ReadOnly = true; + this.c_latexBinFolder.Size = new System.Drawing.Size(707, 26); + this.c_latexBinFolder.TabIndex = 9; + // + // latexBrowseButton + // + this.latexBrowseButton.Location = new System.Drawing.Point(953, 34); + this.latexBrowseButton.Name = "latexBrowseButton"; + this.latexBrowseButton.Size = new System.Drawing.Size(120, 34); + this.latexBrowseButton.TabIndex = 10; + this.latexBrowseButton.Text = "Browse..."; + this.latexBrowseButton.UseVisualStyleBackColor = true; + this.latexBrowseButton.Click += new System.EventHandler(this.LatexBrowseButton_Click); + // + // l_dvisvgmBinFolder + // + this.l_dvisvgmBinFolder.AutoSize = true; + this.l_dvisvgmBinFolder.Location = new System.Drawing.Point(6, 102); + this.l_dvisvgmBinFolder.Name = "l_dvisvgmBinFolder"; + this.l_dvisvgmBinFolder.Size = new System.Drawing.Size(144, 20); + this.l_dvisvgmBinFolder.TabIndex = 11; + this.l_dvisvgmBinFolder.Text = "DviSvgm bin folder:"; + // + // c_dvisvgmBinFolder + // + this.c_dvisvgmBinFolder.Location = new System.Drawing.Point(209, 102); + this.c_dvisvgmBinFolder.Name = "c_dvisvgmBinFolder"; + this.c_dvisvgmBinFolder.ReadOnly = true; + this.c_dvisvgmBinFolder.Size = new System.Drawing.Size(707, 26); + this.c_dvisvgmBinFolder.TabIndex = 12; + // + // dvisvgmBrowseButton + // + this.dvisvgmBrowseButton.Location = new System.Drawing.Point(953, 95); + this.dvisvgmBrowseButton.Name = "dvisvgmBrowseButton"; + this.dvisvgmBrowseButton.Size = new System.Drawing.Size(120, 34); + this.dvisvgmBrowseButton.TabIndex = 13; + this.dvisvgmBrowseButton.Text = "Browse..."; + this.dvisvgmBrowseButton.UseVisualStyleBackColor = true; + this.dvisvgmBrowseButton.Click += new System.EventHandler(this.DvisvgmBrowseButton_Click); + // + // l_imageFileFormat + // + this.l_imageFileFormat.AutoSize = true; + this.l_imageFileFormat.Location = new System.Drawing.Point(15, 44); + this.l_imageFileFormat.Name = "l_imageFileFormat"; + this.l_imageFileFormat.Size = new System.Drawing.Size(132, 20); + this.l_imageFileFormat.TabIndex = 15; + this.l_imageFileFormat.Text = "Image file format:"; + // + // c_radioFileFormatPng + // + this.c_radioFileFormatPng.AutoSize = true; + this.c_radioFileFormatPng.Location = new System.Drawing.Point(36, 32); + this.c_radioFileFormatPng.Name = "c_radioFileFormatPng"; + this.c_radioFileFormatPng.Size = new System.Drawing.Size(61, 24); + this.c_radioFileFormatPng.TabIndex = 3; + this.c_radioFileFormatPng.Text = "png"; + this.c_radioFileFormatPng.UseVisualStyleBackColor = true; + // + // c_radioFileFormatSvg + // + this.c_radioFileFormatSvg.AutoSize = true; + this.c_radioFileFormatSvg.Checked = true; + this.c_radioFileFormatSvg.Location = new System.Drawing.Point(175, 32); + this.c_radioFileFormatSvg.Name = "c_radioFileFormatSvg"; + this.c_radioFileFormatSvg.Size = new System.Drawing.Size(58, 24); + this.c_radioFileFormatSvg.TabIndex = 4; + this.c_radioFileFormatSvg.TabStop = true; + this.c_radioFileFormatSvg.Text = "svg"; + this.c_radioFileFormatSvg.UseVisualStyleBackColor = true; + // + // c_groupBoxFileFormat + // + this.c_groupBoxFileFormat.Controls.Add(this.c_radioFileFormatSvg); + this.c_groupBoxFileFormat.Controls.Add(this.c_radioFileFormatPng); + this.c_groupBoxFileFormat.Location = new System.Drawing.Point(228, 12); + this.c_groupBoxFileFormat.Name = "c_groupBoxFileFormat"; + this.c_groupBoxFileFormat.Size = new System.Drawing.Size(287, 75); + this.c_groupBoxFileFormat.TabIndex = 5; + this.c_groupBoxFileFormat.TabStop = false; + this.c_groupBoxFileFormat.Text = " Supported formats "; + // + // l_imageDepthCorrection + // + this.l_imageDepthCorrection.AutoSize = true; + this.l_imageDepthCorrection.Location = new System.Drawing.Point(15, 123); + this.l_imageDepthCorrection.Name = "l_imageDepthCorrection"; + this.l_imageDepthCorrection.Size = new System.Drawing.Size(181, 20); + this.l_imageDepthCorrection.TabIndex = 19; + this.l_imageDepthCorrection.Text = "Image depth correction: "; + // + // c_imageDepthCorrection + // + this.c_imageDepthCorrection.Location = new System.Drawing.Point(228, 123); + this.c_imageDepthCorrection.Maximum = new decimal(new int[] { + 256, + 0, + 0, + 0}); + this.c_imageDepthCorrection.Name = "c_imageDepthCorrection"; + this.c_imageDepthCorrection.Size = new System.Drawing.Size(287, 26); + this.c_imageDepthCorrection.TabIndex = 18; + // + // l_defaultLaTeXMode + // + this.l_defaultLaTeXMode.AutoSize = true; + this.l_defaultLaTeXMode.Location = new System.Drawing.Point(15, 321); + this.l_defaultLaTeXMode.Name = "l_defaultLaTeXMode"; + this.l_defaultLaTeXMode.Size = new System.Drawing.Size(160, 20); + this.l_defaultLaTeXMode.TabIndex = 20; + this.l_defaultLaTeXMode.Text = "Default LaTeX mode:"; + // + // c_groupBoxDefaultLaTeXMode + // + this.c_groupBoxDefaultLaTeXMode.Controls.Add(this.c_radioLaTeXModeDisplay); + this.c_groupBoxDefaultLaTeXMode.Controls.Add(this.c_radioLaTeXModeInline); + this.c_groupBoxDefaultLaTeXMode.Location = new System.Drawing.Point(228, 292); + this.c_groupBoxDefaultLaTeXMode.Name = "c_groupBoxDefaultLaTeXMode"; + this.c_groupBoxDefaultLaTeXMode.Size = new System.Drawing.Size(287, 75); + this.c_groupBoxDefaultLaTeXMode.TabIndex = 21; + this.c_groupBoxDefaultLaTeXMode.TabStop = false; + this.c_groupBoxDefaultLaTeXMode.Text = " Supported modes"; + // + // c_radioLaTeXModeDisplay + // + this.c_radioLaTeXModeDisplay.AutoSize = true; + this.c_radioLaTeXModeDisplay.Checked = true; + this.c_radioLaTeXModeDisplay.Location = new System.Drawing.Point(175, 29); + this.c_radioLaTeXModeDisplay.Name = "c_radioLaTeXModeDisplay"; + this.c_radioLaTeXModeDisplay.Size = new System.Drawing.Size(82, 24); + this.c_radioLaTeXModeDisplay.TabIndex = 4; + this.c_radioLaTeXModeDisplay.TabStop = true; + this.c_radioLaTeXModeDisplay.Text = "display"; + this.c_radioLaTeXModeDisplay.UseVisualStyleBackColor = true; + // + // c_radioLaTeXModeInline + // + this.c_radioLaTeXModeInline.AutoSize = true; + this.c_radioLaTeXModeInline.Location = new System.Drawing.Point(36, 29); + this.c_radioLaTeXModeInline.Name = "c_radioLaTeXModeInline"; + this.c_radioLaTeXModeInline.Size = new System.Drawing.Size(70, 24); + this.c_radioLaTeXModeInline.TabIndex = 3; + this.c_radioLaTeXModeInline.Text = "inline"; + this.c_radioLaTeXModeInline.UseVisualStyleBackColor = true; + // + // c_groupBoxPreambleAdditionalItems + // + this.c_groupBoxPreambleAdditionalItems.Controls.Add(this.c_additionalPreambleCommands); + this.c_groupBoxPreambleAdditionalItems.Location = new System.Drawing.Point(557, 12); + this.c_groupBoxPreambleAdditionalItems.Name = "c_groupBoxPreambleAdditionalItems"; + this.c_groupBoxPreambleAdditionalItems.Size = new System.Drawing.Size(552, 355); + this.c_groupBoxPreambleAdditionalItems.TabIndex = 22; + this.c_groupBoxPreambleAdditionalItems.TabStop = false; + this.c_groupBoxPreambleAdditionalItems.Text = " Additional Preamble Commands "; + // + // c_additionalPreambleCommands + // + this.c_additionalPreambleCommands.Location = new System.Drawing.Point(16, 34); + this.c_additionalPreambleCommands.Multiline = true; + this.c_additionalPreambleCommands.Name = "c_additionalPreambleCommands"; + this.c_additionalPreambleCommands.Size = new System.Drawing.Size(519, 307); + this.c_additionalPreambleCommands.TabIndex = 0; + // + // c_groupBoxFolders + // + this.c_groupBoxFolders.Controls.Add(this.dvisvgmBrowseButton); + this.c_groupBoxFolders.Controls.Add(this.l_dvisvgmBinFolder); + this.c_groupBoxFolders.Controls.Add(this.c_dvisvgmBinFolder); + this.c_groupBoxFolders.Controls.Add(this.latexBrowseButton); + this.c_groupBoxFolders.Controls.Add(this.l_latexBinFolder); + this.c_groupBoxFolders.Controls.Add(this.c_latexBinFolder); + this.c_groupBoxFolders.Location = new System.Drawing.Point(19, 392); + this.c_groupBoxFolders.Name = "c_groupBoxFolders"; + this.c_groupBoxFolders.Size = new System.Drawing.Size(1090, 157); + this.c_groupBoxFolders.TabIndex = 23; + this.c_groupBoxFolders.TabStop = false; + this.c_groupBoxFolders.Text = " Folders "; + // + // LatexConfigDlg + // + this.AcceptButton = this.okButton; + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.cancelButton; + this.ClientSize = new System.Drawing.Size(1130, 622); + this.Controls.Add(this.c_groupBoxFolders); + this.Controls.Add(this.c_groupBoxPreambleAdditionalItems); + this.Controls.Add(this.c_groupBoxDefaultLaTeXMode); + this.Controls.Add(this.l_defaultLaTeXMode); + this.Controls.Add(this.l_imageDepthCorrection); + this.Controls.Add(this.c_imageDepthCorrection); + this.Controls.Add(this.c_groupBoxFileFormat); + this.Controls.Add(this.l_imageFileFormat); + this.Controls.Add(this.l_imageScalePercentage); + this.Controls.Add(this.c_imageScalePercentage); + this.Controls.Add(this.c_redirectFileProcessors); + this.Controls.Add(this.cancelButton); + this.Controls.Add(this.okButton); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.KeyPreview = true; + this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "LatexConfigDlg"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "LaTeX Configuration"; + ((System.ComponentModel.ISupportInitialize)(this.c_imageScalePercentage)).EndInit(); + this.c_groupBoxFileFormat.ResumeLayout(false); + this.c_groupBoxFileFormat.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.c_imageDepthCorrection)).EndInit(); + this.c_groupBoxDefaultLaTeXMode.ResumeLayout(false); + this.c_groupBoxDefaultLaTeXMode.PerformLayout(); + this.c_groupBoxPreambleAdditionalItems.ResumeLayout(false); + this.c_groupBoxPreambleAdditionalItems.PerformLayout(); + this.c_groupBoxFolders.ResumeLayout(false); + this.c_groupBoxFolders.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button okButton; + private System.Windows.Forms.Button cancelButton; + private System.Windows.Forms.CheckBox c_redirectFileProcessors; + private System.Windows.Forms.NumericUpDown c_imageScalePercentage; + private System.Windows.Forms.Label l_imageScalePercentage; + private System.Windows.Forms.Label l_latexBinFolder; + private System.Windows.Forms.TextBox c_latexBinFolder; + private System.Windows.Forms.Button latexBrowseButton; + private System.Windows.Forms.Label l_dvisvgmBinFolder; + private System.Windows.Forms.TextBox c_dvisvgmBinFolder; + private System.Windows.Forms.Button dvisvgmBrowseButton; + private System.Windows.Forms.Label l_imageFileFormat; + private System.Windows.Forms.RadioButton c_radioFileFormatPng; + private System.Windows.Forms.RadioButton c_radioFileFormatSvg; + private System.Windows.Forms.GroupBox c_groupBoxFileFormat; + private System.Windows.Forms.Label l_imageDepthCorrection; + private System.Windows.Forms.NumericUpDown c_imageDepthCorrection; + private System.Windows.Forms.Label l_defaultLaTeXMode; + private System.Windows.Forms.GroupBox c_groupBoxDefaultLaTeXMode; + private System.Windows.Forms.RadioButton c_radioLaTeXModeDisplay; + private System.Windows.Forms.RadioButton c_radioLaTeXModeInline; + private System.Windows.Forms.GroupBox c_groupBoxPreambleAdditionalItems; + private System.Windows.Forms.TextBox c_additionalPreambleCommands; + private System.Windows.Forms.GroupBox c_groupBoxFolders; + } +} \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexConfiguration/LatexConfigDlg.resx b/src/Novacta.Shfb.LatexConfiguration/LatexConfigDlg.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/src/Novacta.Shfb.LatexConfiguration/LatexConfigDlg.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexConfiguration/Novacta.Shfb.LatexConfiguration.csproj b/src/Novacta.Shfb.LatexConfiguration/Novacta.Shfb.LatexConfiguration.csproj new file mode 100644 index 0000000..866e0c1 --- /dev/null +++ b/src/Novacta.Shfb.LatexConfiguration/Novacta.Shfb.LatexConfiguration.csproj @@ -0,0 +1,27 @@ + + + + net472 + true + true + true + AllEnabledByDefault + Novacta.Shfb.LatexConfiguration + Novacta.Shfb.LatexConfiguration + + + + + + + + + + + + + diff --git a/src/Novacta.Shfb.LatexConfiguration/Properties/AssemblyInfo.cs b/src/Novacta.Shfb.LatexConfiguration/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..d05ec92 --- /dev/null +++ b/src/Novacta.Shfb.LatexConfiguration/Properties/AssemblyInfo.cs @@ -0,0 +1,27 @@ +using System; +using System.Reflection; +using System.Resources; +using System.Runtime.InteropServices; + +[assembly: AssemblyCulture("")] + +[assembly: ComVisible(false)] + +[assembly: CLSCompliant(true)] + +[assembly: NeutralResourcesLanguage("en")] + +internal static class AssemblyInfo +{ + public const string Company = "Novacta"; + + public const string ProductVersion = "1.0.0"; + + public const string Description = + "Provides support for adding LaTeX formatted formulas in " + + "reference XML comments and conceptual content topics created with " + + "Sandcastle Help File Builder."; + + public const string Copyright = + "Copyright \xA9 2018, Giovanni Lafratta, All Rights Reserved."; +} diff --git a/src/Novacta.Shfb.LatexConfiguration/Properties/launchSettings.json b/src/Novacta.Shfb.LatexConfiguration/Properties/launchSettings.json new file mode 100644 index 0000000..6ab30b7 --- /dev/null +++ b/src/Novacta.Shfb.LatexConfiguration/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "Novacta.Shfb.LatexConfiguration": { + "commandName": "Executable", + "executablePath": "$(SHFBROOT)\\Tools\\SandcastleBuilderGUI.exe" + } + } +} \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/FromByteArrayFileCreator.cs b/src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/FromByteArrayFileCreator.cs new file mode 100644 index 0000000..264d1b7 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/FromByteArrayFileCreator.cs @@ -0,0 +1,51 @@ +// Copyright (c) Giovanni Lafratta. All rights reserved. +// Licensed under the MIT license. +// See the LICENSE file in the project root for more information. + +using Novacta.Transactions.IO; + +namespace Novacta.Shfb.LatexTools.FileManagers +{ + /// + /// Represents a resource manager that creates a + /// file having the specified content in bytes + /// when a transaction is successfully committed. + /// + class FromByteArrayFileCreator : CreateFileManager + { + readonly byte[] byteContent; + + /// + /// Initializes a new instance of the class. + /// + /// + /// The path of the managed file. + /// + /// + /// The content, in bytes, of the file to create. + /// + /// + /// is null.
    + /// -or-
    + /// is null. + ///
    + public FromByteArrayFileCreator( + string path, + byte[] byteContent) : base(path, overwrite: true) + { + this.byteContent = byteContent ?? throw new ArgumentNullException(nameof(byteContent)); + } + + /// + /// Called when the transaction is successfully committed. + /// + protected override void OnCommit() + { + using BinaryWriter binaryWriter = new(base.ManagedFileStream); + + binaryWriter.Write(this.byteContent, 0, this.byteContent.Length); + } + } + +} + diff --git a/src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/SharedContentItemsUpdater.cs b/src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/SharedContentItemsUpdater.cs new file mode 100644 index 0000000..12d0317 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/SharedContentItemsUpdater.cs @@ -0,0 +1,139 @@ +// Copyright (c) Giovanni Lafratta. All rights reserved. +// Licensed under the MIT license. +// See the LICENSE file in the project root for more information. + +using Novacta.Transactions.IO; +using System; +using System.Collections.Generic; +using System.Xml; + +namespace Novacta.Shfb.LatexTools.FileManagers +{ + /// + /// Represents a file manager that updates shared content + /// items when a transaction is successfully committed. + /// + /// + /// + /// An instance of class + /// is expected to manage an XML file containing + /// shared content items in the target SHFB installation. + /// + /// + /// Property returns a collection of tuples + /// having string elements named Id and InnerText. + /// Let i be a tuple included in such a collection. + /// For each of such items, the manager checks if the XML file + /// contains a node tagged as "item" having + /// attribute id equal to i.Id; if not, such a node + /// is added to the file content and its inner text + /// is set to the value of element i.InnerText. + /// Otherwise, + /// if an item node having the specified identifier already exists, + /// then its inner text is updated to such value. + /// + /// + class SharedContentItemsUpdater : EditFileManager + { + readonly IEnumerable<(string Id, string InnerText)> items; + + /// + /// Gets the items to update. + /// + /// + /// The items to update. + /// + public IEnumerable<(string Id, string InnerText)> Items + { + get { return this.items; } + } + + /// + /// Initializes a new instance of + /// the class. + /// + /// + /// The path of the shared content file to update. + /// + /// + /// The collection of items to update in the file. + /// + /// + /// Parameter is null.
    + /// -or-
    + /// Parameter is null. + ///
    + /// + /// Parameter contains tuples + /// having null or empty elements. + /// + public SharedContentItemsUpdater( + string path, + IEnumerable<(string Id, string InnerText)> items) : base(path) + { + if (null == items) + { + throw new ArgumentNullException(nameof(items)); + } + + foreach (var (Id, InnerText) in items) + { + if ((null == Id) + || (null == InnerText) + || (String.Empty == Id) + || (String.Empty == InnerText)) + { + throw new ArgumentException( + "The parameter cannot contain tuples having null or empty elements.", + nameof(items)); + } + } + this.items = items; + } + + /// + protected override void OnCommit() + { + var document = new XmlDocument(); + + document.Load(this.ManagedFileStream); + XmlNode? contentNode = document.DocumentElement; + + if (contentNode is null) + { + throw new InvalidOperationException(); + } + + foreach (var (Id, InnerText) in this.items) + { + XmlNode? targetItemNode = + contentNode.SelectSingleNode("item[@id='" + Id + "']"); + + if (targetItemNode != null) + { + targetItemNode.RemoveAll(); + } + else + { + targetItemNode = document.CreateElement("item"); + contentNode.PrependChild(targetItemNode); + } + XmlAttribute idAttribute = document.CreateAttribute("id"); + idAttribute.Value = Id; + var targetItemNodeAttributes = targetItemNode.Attributes; + + if (targetItemNodeAttributes is null) + { + throw new InvalidOperationException(); + } + + targetItemNodeAttributes.Append(idAttribute); + + targetItemNode.InnerText = InnerText; + } + + this.ManagedFileStream.SetLength(0); + document.Save(this.ManagedFileStream); + } + } +} diff --git a/src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/StyleSheetsImporter.cs b/src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/StyleSheetsImporter.cs new file mode 100644 index 0000000..3c348fe --- /dev/null +++ b/src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/StyleSheetsImporter.cs @@ -0,0 +1,117 @@ +// Copyright (c) Giovanni Lafratta. All rights reserved. +// Licensed under the MIT license. +// See the LICENSE file in the project root for more information. + +using Novacta.Transactions.IO; +using System; +using System.Collections.Generic; +using System.Xml; + +namespace Novacta.Shfb.LatexTools.FileManagers +{ + /// + /// Represents a file manager that imports style sheets + /// in a SHFB main XSLT file + /// when a transaction is successfully committed. + /// + /// + /// + /// An instance of class + /// is expected to manage a main XSLT file in SHFB, importing + /// style sheets in the target SHFB installation. + /// + /// + /// Property returns the collection of + /// style sheet names. + /// Let i be a tuple included in such a collection. + /// For each item in , the manager checks + /// if the XML file + /// contains a node tagged as "xsl:import" having + /// attribute href equal to the item; if not, such a node + /// is added to the file content. + /// + /// + class StyleSheetsImporter : EditFileManager + { + readonly IEnumerable styleSheets; + + /// + /// Gets the style sheets to import. + /// + /// + /// The style sheets to import. + /// + public IEnumerable StyleSheets + { + get { return this.styleSheets; } + } + + /// + /// Initializes a new instance of + /// the class. + /// + /// + /// The path of the managed main transform file. + /// + /// + /// The collection of style sheets to import in the file. + /// + /// + /// Parameter is null.
    + /// -or-
    + /// Parameter is null. + ///
    + public StyleSheetsImporter( + string path, + IEnumerable styleSheets) : base(path) + { + this.styleSheets = styleSheets ?? throw new ArgumentNullException(nameof(styleSheets)); + } + + /// + protected override void OnCommit() + { + var document = new XmlDocument(); + + document.Load(this.ManagedFileStream); + XmlNode? stylesheetNode = document.DocumentElement; + + if (stylesheetNode is null) + { + throw new InvalidOperationException(); + } + + string xslNamespace = "http://www.w3.org/1999/XSL/Transform"; + XmlNamespaceManager nsmgr = new(document.NameTable); + nsmgr.AddNamespace("xsl", xslNamespace); + + XmlNode? outputNode = + stylesheetNode.SelectSingleNode("xsl:output", nsmgr); + + foreach (var sheet in this.styleSheets) + { + XmlNode? targetImportNode = + stylesheetNode.SelectSingleNode("xsl:import[@href='" + sheet + "']", nsmgr); + + if (targetImportNode == null) + { + targetImportNode = document.CreateElement("xsl", "import", xslNamespace); + XmlAttribute hrefAttribute = document.CreateAttribute("href"); + hrefAttribute.Value = sheet; + var targetImportNodeAttributes = targetImportNode.Attributes; + + if (targetImportNodeAttributes is null) + { + throw new InvalidOperationException(); + } + + targetImportNodeAttributes.Append(hrefAttribute); + stylesheetNode.InsertBefore(targetImportNode, outputNode); + } + } + + this.ManagedFileStream.SetLength(0); + document.Save(this.ManagedFileStream); + } + } +} diff --git a/src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/SvgCompatibilityConfigurator.cs b/src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/SvgCompatibilityConfigurator.cs new file mode 100644 index 0000000..7aa3c65 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/SvgCompatibilityConfigurator.cs @@ -0,0 +1,143 @@ +// Copyright (c) Giovanni Lafratta. All rights reserved. +// Licensed under the MIT license. +// See the LICENSE file in the project root for more information. + +using Novacta.Transactions.IO; +using System.Xml; + +namespace Novacta.Shfb.LatexTools.FileManagers +{ + /// + /// Represents a file manager that edits a SHFB build + /// configuration file to enable SVG compatibility + /// when a transaction is successfully committed. + /// + class SvgCompatibilityConfigurator : EditFileManager + { + public SvgCompatibilityConfigurator(string path) : base(path) + { + } + + /// + /// Sets the meta content attribute of the specified SHFB help output. + /// + /// + /// The help output node. + /// + /// + /// The content to set. + /// + private static void EditMetaContentAttribute(XmlNode helpOutputNode, string content) + { + XmlNode? additionalHeaderResourcesNode = + helpOutputNode.SelectSingleNode("component[@id='Additional Header Resources Component']"); + + if (additionalHeaderResourcesNode is null) + { + throw new InvalidOperationException(); + } + XmlNode? metaNode = additionalHeaderResourcesNode.SelectSingleNode("meta"); + + if (metaNode is null) + { + throw new InvalidOperationException(); + } + + var metaNodeAttributes = metaNode.Attributes; + + if (metaNodeAttributes is null) + { + throw new InvalidOperationException(); + } + + XmlAttribute? contentAttribute = metaNodeAttributes["content"]; + + if (contentAttribute is null) + { + throw new InvalidOperationException(); + } + contentAttribute.Value = content; + } + + /// + protected override void OnCommit() + { + var document = new XmlDocument(); + + document.Load(this.ManagedFileStream); + XmlNode? root = document.DocumentElement; + + if (root is null) + { + throw new InvalidOperationException(); + } + + string metaContent = "IE=edge"; + + #region MAML + + XmlNode? mamlCaseNode = root.SelectSingleNode("//case[@value='MAML']"); + + if (mamlCaseNode is null) + { + throw new InvalidOperationException(); + } + + XmlNode? helpOutputNode = + mamlCaseNode.SelectSingleNode(".//helpOutput[@format='MSHelpViewer']"); + + if (helpOutputNode is null) + { + throw new InvalidOperationException(); + } + + EditMetaContentAttribute(helpOutputNode, metaContent); + + helpOutputNode = + mamlCaseNode.SelectSingleNode(".//helpOutput[@format='HtmlHelp1']"); + + if (helpOutputNode is null) + { + throw new InvalidOperationException(); + } + + EditMetaContentAttribute(helpOutputNode, metaContent); + + #endregion + + #region API + + XmlNode? apiCaseNode = root.SelectSingleNode("//case[@value='API']"); + + if (apiCaseNode is null) + { + throw new InvalidOperationException(); + } + + helpOutputNode = + apiCaseNode.SelectSingleNode(".//helpOutput[@format='MSHelpViewer']"); + + if (helpOutputNode is null) + { + throw new InvalidOperationException(); + } + + EditMetaContentAttribute(helpOutputNode, metaContent); + + helpOutputNode = + apiCaseNode.SelectSingleNode(".//helpOutput[@format='HtmlHelp1']"); + + if (helpOutputNode is null) + { + throw new InvalidOperationException(); + } + + EditMetaContentAttribute(helpOutputNode, metaContent); + + #endregion + + this.ManagedFileStream.SetLength(0); + document.Save(this.ManagedFileStream); + } + } +} diff --git a/src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/XmlFileCreator.cs b/src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/XmlFileCreator.cs new file mode 100644 index 0000000..c03de59 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools.ConsoleApp/FileManagers/XmlFileCreator.cs @@ -0,0 +1,48 @@ +// Copyright (c) Giovanni Lafratta. All rights reserved. +// Licensed under the MIT license. +// See the LICENSE file in the project root for more information. + +using Novacta.Transactions.IO; +using System.Xml; + +namespace Novacta.Shfb.LatexTools.FileManagers +{ + /// + /// Represents a resource manager that creates a new XML file + /// when a transaction is successfully committed. + /// + sealed class XmlFileCreator : CreateFileManager + { + readonly XmlDocument document; + + /// + /// Initializes a new instance of the class. + /// + /// + /// The path of the managed file. + /// + /// + /// The document. + /// + /// + /// is null.
    + /// -or-
    + /// is null. + ///
    + public XmlFileCreator( + string path, + XmlDocument document) : base(path, overwrite: true) + { + this.document = document ?? throw new ArgumentNullException(nameof(document)); + } + + /// + /// Called when the transaction is successfully committed. + /// + protected override void OnCommit() + { + this.document.Save(this.ManagedFileStream); + } + } +} + diff --git a/src/Novacta.Shfb.LatexTools.ConsoleApp/LatexTools.cs b/src/Novacta.Shfb.LatexTools.ConsoleApp/LatexTools.cs new file mode 100644 index 0000000..525c832 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools.ConsoleApp/LatexTools.cs @@ -0,0 +1,319 @@ +// Copyright (c) Giovanni Lafratta. All rights reserved. +// Licensed under the MIT license. +// See the LICENSE file in the project root for more information. + +using Novacta.Transactions.IO; +using Novacta.Shfb.LatexTools.FileManagers; +using System.Text; +using System.Xml; + +namespace Novacta.Shfb.LatexTools +{ + /// + /// Provides methods to update the Novacta Latex Tools for + /// SHFB. + /// + public static class LatexTools + { + static readonly string[] SupportedPresentationStyles = new string[] { + "VS2010", + "VS2013" }; + + /// + /// Installs the specified custom build path. + /// + /// + /// The path to the folder whose sub folder contains + /// the presentation style files to update. + /// + /// + /// A value equal to 0 for successful installations; + /// nonzero otherwise. + /// + /// + /// + /// It is expected a sub folder of + /// exists named PresentationStyles. + /// This method tries to update the + /// files in each of the following + /// sub folders of PresentationStyles: Markdown, OpenXml, + /// VS2010, or 2013, if available. Otherwise, it does nothing. + /// + /// + internal static int AddLatexToPresentationStyles( + string path) + { + return Shfb.Update( + LatexTools.Updater, + String.Empty, + path); + } + + /// + /// Gets the transform for latexImg nodes. + /// + /// + /// An XML document representing the transform + /// for latexImg nodes. + /// + static XmlDocument GetLatexImgTransform() + { + var document = new XmlDocument(); + + StringBuilder builder = new(); + + builder.AppendLine(""); + + string content = "" + + "" + + builder.ToString() + + "" + + "LaTeX equation" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + + "" + + "" + + ""; + document.LoadXml(content); + + return document; + } + + /// + /// Enumerates the file managers required to encapsulate the + /// updating logic of the Novacta SHFB Latex Tools + /// for the specified path. + /// + /// + /// The update information. + /// + /// + /// The path of the SHFB installation to update. + /// + /// + /// The collection of file managers required for installation. + /// + static IEnumerable Updater(string updateInfo, string path) + { + #region Style sheet importation + + (string Href, XmlDocument Document) styleSheet; + + styleSheet.Href = "novacta_latex_tools.xsl"; + styleSheet.Document = GetLatexImgTransform(); + + var styleSheets = new List<(string Href, XmlDocument Document)> + { + styleSheet + }; + + List managers = new(); + foreach (var style in LatexTools.SupportedPresentationStyles) + { + var styleManagers = Shfb.PrepareStyleSheetImportation( + path, + style, + Topics.All, + styleSheets); + managers.AddRange(styleManagers); + } + + #endregion + + #region Shared content items + + List<(string Id, string InnerText)> items; + + #region VS2010 + + // Outputs: Website, HtmlHelp1 + + items = new List<(string Id, string InnerText)> + { + ("novacta_latex_tools_path", "../media/{0}.{1}"), + ("novacta_latex_tools_depth", "vertical-align: -{0}px") + }; + + managers.Add(Shfb.PrepareSharedContentItemsModification( + path, + "VS2010", + "shared_content.xml", + items)); + + // Output: MsHelpViewer + + items = new List<(string Id, string InnerText)> + { + ("novacta_latex_tools_path", "media/{0}.{1}") + }; + + managers.Add(Shfb.PrepareSharedContentItemsModification( + path, + "VS2010", + "shared_content_mshc.xml", + items)); + + #endregion + + #region VS2013 + + // Outputs: Website, HtmlHelp1 + + items = new List<(string Id, string InnerText)> + { + ("novacta_latex_tools_path", "../media/{0}.{1}"), + ("novacta_latex_tools_depth", "vertical-align: -{0}px") + }; + + managers.Add(Shfb.PrepareSharedContentItemsModification( + path, + "VS2013", + "shared_content.xml", + items)); + + // Output: MsHelpViewer + + items = new List<(string Id, string InnerText)> + { + ("novacta_latex_tools_path", "media/{0}.{1}") + }; + + managers.Add(Shfb.PrepareSharedContentItemsModification( + path, + "VS2013", + "shared_content_mshc.xml", + items)); + + #endregion + + #endregion + + #region Configuration + + managers.Add(new SvgCompatibilityConfigurator( + Path.Combine( + path, + @"PresentationStyles", + "VS2010", + "Configuration", + "BuildAssembler.config"))); + + managers.Add(new SvgCompatibilityConfigurator( + Path.Combine( + path, + @"PresentationStyles", + "VS2013", + "Configuration", + "BuildAssembler.config"))); + + #endregion + + return managers; + } + } +} diff --git a/src/Novacta.Shfb.LatexTools.ConsoleApp/Novacta.Shfb.LatexTools.ConsoleApp.csproj b/src/Novacta.Shfb.LatexTools.ConsoleApp/Novacta.Shfb.LatexTools.ConsoleApp.csproj new file mode 100644 index 0000000..1f03b87 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools.ConsoleApp/Novacta.Shfb.LatexTools.ConsoleApp.csproj @@ -0,0 +1,14 @@ + + + + Exe + net6.0 + enable + enable + + + + + + + diff --git a/src/Novacta.Shfb.LatexTools.ConsoleApp/Program.cs b/src/Novacta.Shfb.LatexTools.ConsoleApp/Program.cs new file mode 100644 index 0000000..ba80d3f --- /dev/null +++ b/src/Novacta.Shfb.LatexTools.ConsoleApp/Program.cs @@ -0,0 +1,26 @@ +// Copyright (c) Giovanni Lafratta. All rights reserved. +// Licensed under the MIT license. +// See the LICENSE file in the project root for more information. + +// See https://aka.ms/new-console-template for more information +using Novacta.Shfb.LatexTools; + +// Clone supported presentation styles + +var targetBasePath = "../../../../Novacta.Shfb.LatexTools/PresentationStyles"; + +Shfb.ClonePresentationStyle( + presentationStyle: "VS2010", + targetBasePath: targetBasePath); +Shfb.ClonePresentationStyle( + presentationStyle: "VS2013", + targetBasePath: targetBasePath); + +// Add support for Latex content to styles + +LatexTools.AddLatexToPresentationStyles( + path: "../../../../Novacta.Shfb.LatexTools/"); + +Console.WriteLine("Success."); + +Console.ReadKey(); \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexTools.ConsoleApp/Shfb.cs b/src/Novacta.Shfb.LatexTools.ConsoleApp/Shfb.cs new file mode 100644 index 0000000..854a917 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools.ConsoleApp/Shfb.cs @@ -0,0 +1,698 @@ +// Copyright (c) Giovanni Lafratta. All rights reserved. +// Licensed under the MIT license. +// See the LICENSE file in the project root for more information. + +using Novacta.Transactions.IO; +using Novacta.Shfb.LatexTools.FileManagers; +using System.Xml; +using System.Transactions; + +namespace Novacta.Shfb.LatexTools +{ + /// + /// Provides methods to update a specific + /// Sandcastle Help File Builder installation. + /// + static class Shfb + { + #region State + + /// + /// Gets the value of the environment variable SHFBROOT, + /// or null if the variable is not found. + /// + /// + /// the value of the environment variable SHFBROOT, + /// or null if the variable is not found. + /// + public static string Root + { + get; private set; + } + + /// + /// Updates a SHFB installation having the specified path. + /// + /// + /// The type of the update information. + /// + /// + /// A function that takes a path and enumerates the file + /// managers encapsulating the updating logic for such specific path. + /// + /// + /// The update information. + /// + /// + /// The path of the SHFB installation to update. + /// + /// + /// A value equal to 0 for successful updates; nonzero otherwise. + /// + /// + /// is null.
    + /// -or-
    is null. + ///
    + /// + /// The specified path does not appear as the root of a SHFB installation.
    + /// -or-
    + /// The specified path is the root of a SHFB installation + /// but its version differs from the target one. + ///
    + public static int Update( + Func> updater, + T updateInfo, + string path) + { + #region Input validation + + if (updater is null) + { + throw new ArgumentNullException(nameof(updater)); + } + + if (path is null) + { + throw new ArgumentNullException(nameof(path)); + } + + #endregion + + int exitCode = 0; + + var managers = updater(updateInfo, path); + try + { + // Apply transaction logic + using TransactionScope scope = new(TransactionScopeOption.RequiresNew); + foreach (var manager in managers) + { + manager.EnlistVolatile(EnlistmentOptions.None); + } + + scope.Complete(); + } + catch (Exception e) + { + var innerException = e.InnerException; + while (innerException != null) + { + Console.WriteLine(innerException.Message); + + innerException = innerException.InnerException; + } + Console.WriteLine(e.Message); + exitCode = -1; + } + Console.WriteLine(); + if (exitCode == 0) + { + Console.WriteLine("SHFB installation successfully updated."); + } + else + { + Console.WriteLine( + "An error occurred. " + + "The SHFB installation has not been modified."); + } + + foreach (var manager in managers) + { + manager.Dispose(); + } + return exitCode; + } + + static Shfb() + { + var shfbRoot = Environment.GetEnvironmentVariable( + "SHFBROOT", + EnvironmentVariableTarget.Machine); + + if (shfbRoot is null) + { + throw new InvalidOperationException( + "The environmental variable SHFBROOT cannot be found. " + + "Please, install SHFB and try again."); + + } + + Shfb.Root = shfbRoot; + } + + static readonly string[] presentationStyles = new string[] { + "Markdown", + "OpenXml", + "VS2010", + "VS2013" }; + + /// + /// Gets the presentation styles supported by + /// the target SHFB. + /// + /// The presentation styles supported by the + /// target SHFB. + public static IEnumerable PresentationStyles + { + get { return Shfb.presentationStyles; } + } + + #endregion + + #region Topics + + /// + /// Validates the specified topics. + /// + /// + /// The topics to validate. + /// + /// + /// is not a field of the + /// enumeration. + /// + internal static void Validate(Topics topics) + { + if ((Topics.All != topics) + && + (Topics.Conceptual != topics) + && + (Topics.Sandcastle != topics)) + { + throw new ArgumentException( + String.Format( + "The parameter is not a field of the {0} enumeration.", + typeof(Topics).ToString()), + nameof(topics)); + } + } + + #endregion + + #region Style sheets + + /// + /// Gets the Sandcastle main style sheet + /// of the specified presentation style. + /// + /// + /// The presentation style. + /// + /// + /// The Sandcastle main style sheet corresponding + /// to the specified presentation style. + /// + /// + /// is null. + /// + /// + /// is not supported + /// by the SHFB Tools. + /// + public static string GetSandcastleMainStyleSheet( + string presentationStyle) + { + if (null == presentationStyle) + { + throw new ArgumentNullException(nameof(presentationStyle)); + } + + string mainStyleSheet = presentationStyle switch + { + "Markdown" or "OpenXml" => "MainSandcastle.xsl", + "VS2010" or "VS2013" => "main_sandcastle.xsl", + _ => throw new ArgumentException( + "The presentation style is not supported.", + nameof(presentationStyle)), + }; + return mainStyleSheet; + } + + /// + /// Gets the Conceptual main style sheet + /// of the specified presentation style. + /// + /// + /// The presentation style. + /// + /// + /// The Conceptual main style sheet corresponding + /// to the specified presentation style. + /// + /// + /// is null. + /// + /// + /// is not supported + /// by the target SHFB. + /// + static string GetConceptualMainStyleSheet( + string presentationStyle) + { + if (null == presentationStyle) + { + throw new ArgumentNullException(nameof(presentationStyle)); + } + + string mainStyleSheet = presentationStyle switch + { + "Markdown" or "OpenXml" => "MainConceptual.xsl", + "VS2010" or "VS2013" => "main_conceptual.xsl", + _ => throw new ArgumentException( + "The presentation style is not supported.", + nameof(presentationStyle)), + }; + + return mainStyleSheet; + } + + /// + /// Gets the main style sheets of the specified presentation style + /// for the given topics. + /// + /// + /// The presentation style. + /// + /// + /// The topics for which the main style sheets + /// are to be returned. + /// + /// + /// The collection of main style sheets corresponding + /// to the specified presentation style. + /// + /// + /// is null. + /// + /// + /// is not supported + /// by the SHFB Tools.
    + /// -or-
    + /// is not a field of + /// the enumeration. + /// by the target SHFB. + ///
    + static IEnumerable GetMainStyleSheets( + string presentationStyle, + Topics topics) + { + if (null == presentationStyle) + { + throw new ArgumentNullException(nameof(presentationStyle)); + } + + if (!Shfb.PresentationStyles.Contains(presentationStyle)) + { + throw new ArgumentException( + "The presentation style is not supported.", + nameof(presentationStyle)); + } + + Shfb.Validate(topics); + + List mainStyleSheets = new(); + + if ((topics & Topics.Sandcastle) == Topics.Sandcastle) + { + mainStyleSheets.Add(GetSandcastleMainStyleSheet(presentationStyle)); + } + if ((topics & Topics.Conceptual) == Topics.Conceptual) + { + mainStyleSheets.Add(GetConceptualMainStyleSheet(presentationStyle)); + } + + return mainStyleSheets; + } + + /// + /// Gets the style sheet Hrefs. + /// + /// The style sheets. + /// The collection of Hrefs. + static IEnumerable GetStyleSheetHrefs( + IEnumerable<(string Href, XmlDocument Document)> styleSheets) + { + foreach (var (Href, _) in styleSheets) + { + yield return Href; + } + } + + /// + /// Prepares the importation of a collection of style sheets + /// for the specified topics and presentation style. + /// + /// + /// The SHFB path. + /// + /// + /// The presentation style. + /// + /// + /// The topics for which the sheets + /// are to be imported. + /// + /// + /// The style sheets to import. + /// + /// + /// + /// The returned file managers import style sheets in + /// a main XSLT file of the target SHFB installation. + /// + /// + /// Parameter returns a collection of tuples + /// having a string element named Href and an element + /// Document of type . + /// Let i be a tuple included in such a collection. + /// For each of such items, the manager checks if the XML file + /// contains a node tagged as "xsl:import" having + /// attribute href equal to i.Href; if not, such a node + /// is added to the file content. + /// Furthermore, a new file representing + /// i.Document is added to the + /// directory of the managed file. + /// + /// + /// + /// The list of file managers required for the specified + /// operation. + /// + /// + /// Parameter is null.
    + /// -or-
    + /// Parameter is null.
    + /// -or-
    + /// Parameter is null. + ///
    + /// + /// Parameter is empty.
    + /// -or-
    + /// Parameter is empty.
    + /// -or-
    + /// Parameter is not supported.
    + /// -or-
    is not a field of + /// .
    + /// -or-
    + /// Parameter contains a tuple having at + /// least an element which is null or empty. + ///
    + public static IEnumerable PrepareStyleSheetImportation( + string shfbPath, + string presentationStyle, + Topics topics, + IEnumerable<(string Href, XmlDocument Document)> styleSheets) + { + #region Input validation + + if (null == shfbPath) + { + throw new ArgumentNullException(nameof(shfbPath)); + } + + if (String.Empty == shfbPath) + { + throw new ArgumentException( + "The parameter cannot be empty.", + nameof(shfbPath)); + } + + if (null == presentationStyle) + { + throw new ArgumentNullException(nameof(presentationStyle)); + } + + if (String.Empty == presentationStyle) + { + throw new ArgumentException( + "The parameter cannot be empty.", + nameof(presentationStyle)); + } + + Shfb.Validate(topics); + + #endregion + + var mainStyleSheets = Shfb.GetMainStyleSheets( + presentationStyle, + topics); + + List managers = new(); + + #region Transforms + + var targetDirectory = Path.Combine(shfbPath, + "PresentationStyles", + presentationStyle, + "Transforms"); + + var hRefs = GetStyleSheetHrefs(styleSheets); + + foreach (var mainStyleSheet in mainStyleSheets) + { + managers.Add(new StyleSheetsImporter( + Path.Combine(targetDirectory, + mainStyleSheet), + hRefs)); + } + + foreach (var (Href, Document) in styleSheets) + { + var targetSheet = Path.Combine(targetDirectory, + Href); + + managers.Add(new XmlFileCreator( + targetSheet, + Document)); + } + + #endregion + + return managers; + } + + #endregion + + #region Shared content + + /// + /// Gets the shared content files of the specified presentation style. + /// + /// + /// The presentation style. + /// + /// + /// The collection of shared content files corresponding + /// to the specified presentation style. + /// + /// + /// is null. + /// + /// + /// is not supported + /// by the target SHFB. + /// + public static IEnumerable GetSharedContentFiles( + string presentationStyle) + { + if (null == presentationStyle) + { + throw new ArgumentNullException(nameof(presentationStyle)); + } + + if (!Shfb.PresentationStyles.Contains(presentationStyle)) + { + throw new ArgumentException( + "The presentation style is not supported.", + nameof(presentationStyle)); + } + + List sharedContentFiles = new(); + switch (presentationStyle) + { + case "Markdown": + case "OpenXml": + sharedContentFiles.Add("SharedContent.xml"); + break; + case "VS2010": + case "VS2013": + sharedContentFiles.Add("shared_content.xml"); + sharedContentFiles.Add("shared_content_mshc.xml"); + break; + } + + return sharedContentFiles; + } + + /// + /// Prepares the modification of the given shared content items for + /// the specified presentation style. + /// + /// The SHFB path. + /// The presentation style. + /// The shared content file. + /// The items to modify. + /// + /// The file manager required for the + /// specified modifications. + /// + /// + /// + /// The returned file manager modifies + /// the content of an XML file containing + /// shared content items. + /// + /// + /// Parameter represents a list of tuples + /// having string elements named Id and InnerText. + /// Let i be a tuple included in such a list. + /// For each of such items, the method checks if the XML file + /// contains a node tagged as "item" having + /// attribute id equal to i.Id; if not, such a node + /// is added to the file content and its inner text + /// is set to the value of element i.InnerText. + /// Otherwise, + /// if an item node having the specified identifier already exists, + /// then its inner text is updated to such value. + /// + /// + /// + /// Parameter is null.
    + /// -or-
    + /// Parameter is null.
    + /// -or-
    + /// Parameter is null.
    + /// -or-
    + /// Parameter is null. + ///
    + /// + /// Parameter is empty.
    + /// -or-
    + /// Parameter is empty.
    + /// -or-
    + /// Parameter is not supported.
    + /// -or-
    + /// Parameter is not supported.
    + /// -or-
    + /// Parameter contains a tuple having at + /// least an element which is null or empty. + ///
    + public static FileManager PrepareSharedContentItemsModification( + string shfbPath, + string presentationStyle, + string sharedContentFile, + IEnumerable<(string Id, string InnerText)> items) + { + #region Input validation + + if (null == shfbPath) + { + throw new ArgumentNullException(nameof(shfbPath)); + } + + if (String.Empty == shfbPath) + { + throw new ArgumentException( + "The parameter cannot be empty.", + nameof(shfbPath)); + } + + if (null == presentationStyle) + { + throw new ArgumentNullException(nameof(presentationStyle)); + } + + if (String.Empty == presentationStyle) + { + throw new ArgumentException( + "The parameter cannot be empty.", + nameof(presentationStyle)); + } + + if (!Shfb.PresentationStyles.Contains(presentationStyle)) + { + throw new ArgumentException( + "The presentation style is not supported.", + nameof(presentationStyle)); + } + + if (null == sharedContentFile) + { + throw new ArgumentNullException(nameof(sharedContentFile)); + } + + if (String.Empty == sharedContentFile) + { + throw new ArgumentException( + "The parameter cannot be empty.", + nameof(sharedContentFile)); + } + + if (!Shfb.GetSharedContentFiles(presentationStyle).Contains(sharedContentFile)) + { + throw new ArgumentException( + "The shared content file is not supported.", + nameof(sharedContentFile)); + } + + #endregion + + return new SharedContentItemsUpdater( + System.IO.Path.Combine(shfbPath, + "PresentationStyles", + presentationStyle, + "Content", + sharedContentFile), + items); + } + + #endregion + + #region Presentation styles + + /// + /// Clones a presentation style by copying its files + /// to the specified path. + /// + /// + /// The presentation style to clone. + /// + /// + /// The path of the folder where files are to be copied. + /// + public static void ClonePresentationStyle( + string presentationStyle, + string targetBasePath) + { + var shfbRoot = Shfb.Root; + + var sourcePath = Path.Combine(shfbRoot, + "Components", + presentationStyle); + + var targetPath = Path.Combine(targetBasePath, presentationStyle); + + foreach (string dirPath in Directory.GetDirectories( + path: sourcePath, + searchPattern: "*", + searchOption: SearchOption.AllDirectories)) + { + Directory.CreateDirectory(dirPath.Replace(sourcePath, targetPath)); + } + + foreach (string newPath in Directory.GetFiles( + path: sourcePath, + searchPattern: "*.*", + searchOption: SearchOption.AllDirectories)) + { + File.Copy( + sourceFileName: newPath, + destFileName: newPath.Replace(sourcePath, targetPath), + overwrite: true); + } + + } + + #endregion + } +} diff --git a/src/Novacta.Shfb.LatexTools.ConsoleApp/Topics.cs b/src/Novacta.Shfb.LatexTools.ConsoleApp/Topics.cs new file mode 100644 index 0000000..2de949a --- /dev/null +++ b/src/Novacta.Shfb.LatexTools.ConsoleApp/Topics.cs @@ -0,0 +1,30 @@ +// Copyright (c) Giovanni Lafratta. All rights reserved. +// Licensed under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; + +namespace Novacta.Shfb.LatexTools +{ + /// + /// Contains constants to identify the topics + /// available when documenting a project with the + /// Sandcastle Help File Builder. + /// + [Flags] + public enum Topics + { + /// + /// Identifies conceptual topics. + /// + Conceptual = 1, + /// + /// Identifies Sandcastle topics. + /// + Sandcastle = 2, + /// + /// All topics. + /// + All = Conceptual | Sandcastle + } +} diff --git a/src/Novacta.Shfb.LatexTools.Documentation/Content/LatexTools.aml b/src/Novacta.Shfb.LatexTools.Documentation/Content/LatexTools.aml new file mode 100644 index 0000000..d5e3520 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools.Documentation/Content/LatexTools.aml @@ -0,0 +1,905 @@ + + + + + + The instructions on this page + demonstrate how to install the + + Novacta.Shfb.LatexTools + , + and how to use them + to insert Latex content in documentation topics. + + + +
    + Installing the LatexTools + + + + Install a supported version of SHFB + + + + The current release of + Novacta.Shfb.LatexTools + targets SHFB, version 2021.10.23.0 or later. + + + Make sure that a supported SHFB version of your choice + is currently installed on your host machine. + + + You can download the required SHFB release + + + here + + https://github.com/EWSoftware/SHFB/releases + . + + + + Install a full LaTeX distribution + + + + You need a full TeX distribution installed on your host machine. + You can find a list of TeX implementations + + here + http://www.tug.org/interest.html#free + . + + + In particular, the LatexTools + have been tested using the + + MiKTeX distribution + https://miktex.org/ + . + + + + + Create a SHFB documentation project + + + Documentation projects can be created via the + + SHFB standalone GUI + http://ewsoftware.github.io/SHFB/html/d5dbf017-25f1-48cb-86db-90f76ee8f4d7.htm + , + or via the + + SHFB Visual Studio package + http://ewsoftware.github.io/SHFB/html/78507051-0fc0-479b-9d47-78a10398eaf2.htm#NewProject/ + . + + + + Add the Latex Tools to the SHFB documentation project + + + + Right click on node Component Packages of your project + and, from the contextual menu, select Manage Component Packages... + (if your are using the SHFB standalone GUI), or + Manage NuGet Packages... (if you are + inside Visual Studio). Hence search package + Novacta.Shfb.LatexTools and install it. + + + In this way, a reference to + the Novacta.Shfb.LatexTools + + NuGet package + https://www.nuget.org/packages/Novacta.Shfb.LatexTools + will be added to your documentation project, and the following + SHFB extensions will be available while processing help files. + + + + + The + T:Novacta.Shfb.LatexTools.LatexComponent + + enables the representation of LaTeX equations + as images in SHFB documentation topics. + Supported image formats are + + + PNG + + https://en.wikipedia.org/wiki/Portable_Network_Graphics + and + + + SVG + + https://en.wikipedia.org/wiki/Scalable_Vector_Graphics + . + + + + + The + T:Novacta.Shfb.LatexTools.LatexPlugIn + , which + is responsible to support the SVG + image file format for the MSHelpViewer + help output. + + + + + The presentation styles + + T:Novacta.Shfb.LatexTools.PresentationStyles.VS2010WithLatex + and + + T:Novacta.Shfb.LatexTools.PresentationStyles.VS2013WithLatex + , + which add the ability to manage LaTeX content to styles + VS2010 and + VS2013, respectively. + + + + +
    + +
    + Exploiting the LatexTools + + + + Selecting a LaTeX-aware presentation style + + + + To select a presentation style able to manage LaTeX content, open + the project properties and click on the + Build tab. From the list + of available presentation styles, select the one + of your choice among those defined + as VS2010 + LaTeX or + VS2010 + LaTeX. + For example, the following figure shows a project + in which the + VS2013 + LaTeX style + has been selected. + + + + + + + Configuring the LatexComponent + + + + The + + T:Novacta.Shfb.LatexTools.LatexComponent + + must be added to a documentation project + in order to manage LaTeX content in documentation topics. + + + To such purpose, open the project properties and click on the + Components tab. From the list + of available components, select the one + referred to as + Novacta.Shfb.LaTeXComponent + and click the Add button. + Now the Latex component is inserted in the list of the + components executed during + the build process of the documentation project. + Such list is showed on the right side + of the tab, as exemplified in the following figure. + + + + + + Once the LaTeX component has been committed for execution, + it must be configured. By clicking the + Configure button, the following + pop-up window will be displayed. + + + + + + Through that window, configuration options can be set as follows. + + + LaTeX Component Configuration + + + + Option + + + Description + + + + + + + + Image file format + + + + + + Through this option, one of the + image formats supported for LaTeX + content representation can be selected. + + + + + + + + Image depth correction + + + + + + When a LaTeX element is in-lined, + then the corresponding image depth, i.e. the distance of the + bottom of the image from its baseline, must be modified in + order for the text represented in the image to have the same + baseline of the surrounding text. + + + The initial image depth is returned by the DviPng executable of + the LaTeX distribution. Then, the difference between such value and + that set for the Image Depth Correction option + is taken as the final image depth. + By default, the Image Depth Correction option + is set to 0, + a value that works well for the default text size. + + + Such behavior can be overridden for each specific equation, + as discussed in the following section. + + + + + + + + Image scale percentage + + + + + + This option controls the size of the text in a LaTeX equation. + The default value is 100, + and is equivalent to apply the \normalsize + text sizing LaTeX command while adopting + 10pt as the size of the main font in the document. + Values other than + 100 modify the size, + but negative values are not allowed. + + + Such behavior can be overridden for each specific equation, + as discussed in the following section. + + + + + + + + Redirect file processors + + + + + + If checked, this option enables the redirection of + LaTeX console outputs to the SHFB + Help Build Log Content. + + + + + + + + Default LaTeX Mode + + + + + + This option controls if a LaTeX equation must be interpreted, + by default, as entered in inline mode, or + in display mode. + The default configuration sets this option + to display. + + + Such behavior can be overridden for each specific equation, + as discussed in the following section. + + + + + + + + Additional Preamble Commands + + + + + + If needed, this option enables the addition of specific + commands to the preamble + of the documents processed to get the + LaTeX equations required in the documentation. + + + + + + + + LaTeX bin folder + + + + + + Through this option, you can specify the folder where + are contained the binary files of the installed + LaTeX distribution. + + + + + + + + DviSvgm bin folder + + + + + + Through this option, you can specify the folder where + are contained the binary files of + + + + DviSvgm + + https://dvisvgm.de/ + , + a converter of DVI files to the SVG graphics format. + + + The converter has been added to several LaTeX distributions. + If the installed distribution includes the tool, you can + specify here the same path set for option + LaTeX bin folder. + Otherwise, you can download the converter + + + here + + https://dvisvgm.de/Downloads/ + , + save it in a folder and set the option + accordingly. + + + These binaries are only needed if you + select the SVG image file format. + + + +
    + + + + The LatexPlugIn + + + + The + + T:Novacta.Shfb.LatexTools.LatexPlugIn + + must be added to a documentation project + only if the project needs to support the SVG + image file format for the MSHelpViewer + help output. + + + To do so, open the project properties and click on the + Plug-Ins tab. From the list + of available plug-ins, select the one + referred to as + Novacta.Shfb.LatexPlugIn + and click the Add button. + Now the Latex plug-in is inserted in the list of the + plug-ins executed during + the build process of the documentation project. + The plug-ins committed for execution are listed on the right side + of the tab, as exemplified in the following figure. + + + + +
    +
    + +
    + Using LaTeX equations in XML comments + + + LaTeX equations can be added to the XML comments on your + source code by inserting custom XML elements, referred + to as the LaTeX elements. + + + The start-tag of such elements + is ]]>. + The basic form of a LaTeX element, + i.e. a form with no XML + attributes, is as follows. + + + X_{(0)}=2^{-1/3} + ]]> + + + When LaTeX elements are processed, + their content is interpreted as having document class + article, + with an option of + 10pt for the size of the + main font in the document, and the + \pagestyle set to + empty. You can also + assume as available the packages + + + amsmath + + https://ctan.org/pkg/amsmath + + and + + + amsfonts + + http://www.ams.org/tex/amsfonts.html + . + + + When the default configuration + is active and the latex element is in basic form, then its content + is interpreted as inserted in a displayed mathematical + environment (separated by the main text), and sized + applying the \normalsize LaTeX command. + + + Such behavior can be overridden by adding attributes + to the latex element or overriding the default configuration. + + + If you want a LaTeX formula displayed in-line, + that is, within the body of text where it is declared, + you can add a mode attribute + having the "inline" value, as in the following + example. + + + /// Let us assume that the random variable + /// Y_{i}]]> has distribution function + /// F_{Y_{i}}]]>. + + + If a LaTeX element has + no mode attribute, then its + mode is set, by default, according to the + + Default LaTeX mode + + configuration option. + + + The Novacta + + T:Novacta.Shfb.LatexTools.LatexComponent + + inserts images in help files + to represent your equations. + When + a LaTeX element is in-lined, + then the corresponding image + depth is, by default, set according to the + + Image depth correction + + configuration option. + However, the image depth for a given + LaTeX element + can be hard coded by adding a depth attribute, + as in the following example. + + + F_{Y_{i}}]]> + + + In a LaTeX element, + the size of the text is controlled, by default, + through the + + Image scale percentage + + configuration option. + However, the size of a given + LaTeX element can be + overridden by adding to it + a scale attribute. + For example, if you want its size being the + 70% of the basic size, you can write + a LaTeX element as follows. + + + F_{Y_{i}}]]> + + + More thoroughly, you can set the value of the + scale attribute + using any of the predefined values shown in the following table, + where the corresponding percentages are also reported. + + + Scaling LaTeX Equations + + + + Predefined LaTeX size + + + Percentage + + + Example + + + + + + + + tiny + + + + + + 50 + + + + + + h\left(x\right)=\sum_{i=0}^{n-1} f_i\left(x^2\right) + + + + + + + + + scriptsize + + + + + + 70 + + + + + + h\left(x\right)=\sum_{i=0}^{n-1} f_i\left(x^2\right) + + + + + + + + + footnotesize + + + + + + 80 + + + + + + h\left(x\right)=\sum_{i=0}^{n-1} f_i\left(x^2\right) + + + + + + + + + small + + + + + + 90 + + + + + + h\left(x\right)=\sum_{i=0}^{n-1} f_i\left(x^2\right) + + + + + + + + + normalsize + + + + + + 100 + + + + + + h\left(x\right)=\sum_{i=0}^{n-1} f_i\left(x^2\right) + + + + + + + + + large + + + + + + 120 + + + + + + h\left(x\right)=\sum_{i=0}^{n-1} f_i\left(x^2\right) + + + + + + + + + Large + + + + + + 144 + + + + + + h\left(x\right)=\sum_{i=0}^{n-1} f_i\left(x^2\right) + + + + + + + + + LARGE + + + + + + 172.8 + + + + + + h\left(x\right)=\sum_{i=0}^{n-1} f_i\left(x^2\right) + + + + + + + + + huge + + + + + + 207.4 + + + + + + h\left(x\right)=\sum_{i=0}^{n-1} f_i\left(x^2\right) + + + + + + + + + Huge + + + + + + 248.8 + + + + + + h\left(x\right)=\sum_{i=0}^{n-1} f_i\left(x^2\right) + + + + +
    + + As an example, the following file printout shows the source code for + type + + T:SampleClassLibrary.IntegerOperation + , + as defined in project + + + SampleClassLibrary + + https://github.com/novacta/shfb-latex-tools/blob/master/samples/SampleClassLibrary + : + + + + Note the LaTeX elements at line 21-24 + in the XML comments on method + Operate. + You can check + + M:SampleClassLibrary.IntegerOperation.Operate(System.Func{System.Int32,System.Int32},System.Int32) + + how the + corresponding documentation looks like. + +
    +
    + +
    + Using LaTeX equations in conceptual topics + + + Elements in + + + MAML + + http://ewsoftware.github.io/MAMLGuide + + conceptual topics must be qualified using a namespace. + To qualify LaTeX elements, + add to the topic's document element a namespace attribute + associated with prefix ltx, + as shown in the following example. + + + + + + + + + + + ]]> + + + Now LaTeX elements can be added + by prefixing their tags with ltx, + as follows. + + + X_{(0)} + ]]> + + + As an example, the following file printout shows the source code for + a conceptual topic about + + T:SampleClassLibrary.IntegerOperation + , + as defined in project + + + SampleClassLibrary + + https://github.com/novacta/shfb-latex-tools/blob/master/samples/SampleClassLibrary + : + + + + Note the LaTeX elements at lines 24-25. + You can check + + here + + how such conceptual topic looks like. + + +
    + + +
    +
    diff --git a/src/Novacta.Shfb.LatexTools.Documentation/Content/License.aml b/src/Novacta.Shfb.LatexTools.Documentation/Content/License.aml new file mode 100644 index 0000000..d6881f7 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools.Documentation/Content/License.aml @@ -0,0 +1,57 @@ + + + + + + + + + + + This software is licensed under the following terms. + + + +
    + The MIT license + + + Copyright (c) 2021 Giovanni Lafratta. All rights reserved. + + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons + to whom the Software is furnished to do so, subject to the + following conditions: + + + The above copyright notice and this permission notice shall + be included in + all copies or substantial portions of the Software. + + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + + +
    +
    +
    diff --git a/src/Novacta.Shfb.LatexTools.Documentation/Content/OperatingOnIntegers.aml b/src/Novacta.Shfb.LatexTools.Documentation/Content/OperatingOnIntegers.aml new file mode 100644 index 0000000..d6f7442 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools.Documentation/Content/OperatingOnIntegers.aml @@ -0,0 +1,33 @@ + + + + + + + Class + T:SampleClassLibrary.IntegerOperation + provides method + + M:SampleClassLibrary.IntegerOperation.Operate(System.Func{System.Int32,System.Int32},System.Int32) + + to manage operations on integer values. + + + In the following example, an integer is squared + executing the + M:SampleClassLibrary.IntegerOperation.Operate(System.Func{System.Int32,System.Int32},System.Int32) + method. + This is equivalent to define the applied function, + say f:\mathbb{N}\rightarrow \mathbb{N}, + as \forall n \in \mathbb{N}: n \mapsto f\left(n\right)=n^2. + In addition, input validation is also checked. + + + + + + diff --git a/src/Novacta.Shfb.LatexTools.Documentation/Content/VersionHistory/VersionHistory.aml b/src/Novacta.Shfb.LatexTools.Documentation/Content/VersionHistory/VersionHistory.aml new file mode 100644 index 0000000..c883aa3 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools.Documentation/Content/VersionHistory/VersionHistory.aml @@ -0,0 +1,33 @@ + + + + + + The topics in this section describe the various changes made to + Novacta.Shfb.LatexTools over the + life of the project. + + + +
    + Version History + + Select a version below to see a description of its changes. + + + + + + + + + + +
    + + + + + +
    +
    diff --git a/src/Novacta.Shfb.LatexTools.Documentation/Content/VersionHistory/v1.0.0.aml b/src/Novacta.Shfb.LatexTools.Documentation/Content/VersionHistory/v1.0.0.aml new file mode 100644 index 0000000..2a692a7 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools.Documentation/Content/VersionHistory/v1.0.0.aml @@ -0,0 +1,30 @@ + + + + + + + Version 1.0.0 was released on November 15 2021. + + + +
    + Changes in This Release + + + + + Initial release of the assembly. + + + + + +
    + + + +
    +
    diff --git a/src/Novacta.Shfb.LatexTools.Documentation/Content/Welcome.aml b/src/Novacta.Shfb.LatexTools.Documentation/Content/Welcome.aml new file mode 100644 index 0000000..5d3473e --- /dev/null +++ b/src/Novacta.Shfb.LatexTools.Documentation/Content/Welcome.aml @@ -0,0 +1,78 @@ + + + + + + Novacta.Shfb.LatexTools is a .NET library + that provides types to manage LaTeX equations in reference and conceptual content files + generated by the + + Sandcastle Help File Builder + https://github.com/EWSoftware/SHFB/ + . + + + The project supports SHFB, version 2021.10.23.0 or later. + + + The library is licensed under + the + + MIT license + . + + +
    + + Documentation + + + + The current documentation includes the following topics. + + + + + + Novacta.Shfb.LatexTools release notes + + + + + + + Adding LaTeX equations + includes topics showing how to define LaTeX + content in documentation files. + + + + + + N:Novacta.Shfb.LatexTools + + contains reference information about library + types by namespace. + + + + + + SampleClassLibrary Namespaces + SampleClassLibrary Namespace container + G_SampleClassLibrary.htm + _self + + points to a sample documentation obtained + through the Novacta.Shfb.LatexTools library. + + + + +
    + + + + +
    +
    diff --git a/src/Novacta.Shfb.LatexTools.Documentation/ContentLayout.content b/src/Novacta.Shfb.LatexTools.Documentation/ContentLayout.content new file mode 100644 index 0000000..4a97c09 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools.Documentation/ContentLayout.content @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexTools.Documentation/Novacta.Shfb.LatexTools.Documentation.shfbproj b/src/Novacta.Shfb.LatexTools.Documentation/Novacta.Shfb.LatexTools.Documentation.shfbproj new file mode 100644 index 0000000..869fd09 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools.Documentation/Novacta.Shfb.LatexTools.Documentation.shfbproj @@ -0,0 +1,158 @@ + + + + + + + Debug + AnyCPU + 2.0 + 079a2e5d-bb12-4b65-8ba0-22b0aed32a48 + 2017.9.26.0 + + Novacta.Shfb.LatexTools.Documentation + Novacta.Shfb.LatexTools.Documentation + Novacta.Shfb.LatexTools.Documentation + + .NET Core/.NET Standard/.NET 5.0+ + Help\ + Novacta.Shfb.LatexTools.Documentation + en-US + + + + + + + + + + + + + + ..\Novacta.Shfb.LatexTools\Bin\Release\ + False + + Provides types able to represent LaTeX content in files generated by the Sandcastle Help File Builder. +Provides support for operations on integers. +Provides support for operations on integer arrays. +Provide information about a library containing sample code whose documentation has been created exploiting the Novacta SHFB LaTeX Tools. +Provide support to LaTeX content in files generated by the Sandcastle Help File Builder. +Provides presentation styles able to manage LaTeX content in files generated by the Sandcastle Help File Builder. + + + + + + + % Paste here your additional preamble commands + + + + + + + + + + + + + + + + + + + Website + C# + Novacta.Shfb.LatexTools.VS2013 + True + True + False + False + OnlyWarningsAndErrors + 100 + Novacta.Shfb.LatexTools Documentation + 1.0.0.0 + MemberName + AboveNamespaces + False + True + 2 + False + Blank + Copyright %28c%29 Giovanni Lafratta + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LatexComponent + Latex Component + + + LatexComponentConfig + Latex Component Config + + + LatexPlugIn + Latex Plug In + + + LatexStyleSelection + Latex Style Selection + + + + + + + + + + + PowerShell.exe Remove-Item ..\..\docs\* -Recurse +PowerShell.exe Copy-Item Help\* ..\..\docs -Recurse + OnBuildSuccess + + \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexTools.Documentation/icons/Help.png b/src/Novacta.Shfb.LatexTools.Documentation/icons/Help.png new file mode 100644 index 0000000000000000000000000000000000000000..945e89fb96271c85b901f1e656e9920c788c48e6 GIT binary patch literal 4942 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 M07*qoM6N<$f`j^SBme*a literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools.Documentation/media/LatexComponent.png b/src/Novacta.Shfb.LatexTools.Documentation/media/LatexComponent.png new file mode 100644 index 0000000000000000000000000000000000000000..04acf390efd8bb79ec2899285dc0d4986b432eee GIT binary patch literal 108004 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 XWvo#=EP-u=0EZ8i(0 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 SGB-c}-b77FQ?X9LBK#kOM0@lA literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools.Documentation/media/LatexComponentConfig.png b/src/Novacta.Shfb.LatexTools.Documentation/media/LatexComponentConfig.png new file mode 100644 index 0000000000000000000000000000000000000000..0adc04f832a5851fed8eecb7c7e26c295ca64630 GIT binary patch literal 26371 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 L{an^LB{Ts5JRVcd literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools.Documentation/media/LatexStyleSelection.png b/src/Novacta.Shfb.LatexTools.Documentation/media/LatexStyleSelection.png new file mode 100644 index 0000000000000000000000000000000000000000..283490054ae2cd180f9bc43e09d176cdc1dab9bf GIT binary patch literal 110682 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 + /// Represents a DviPng process. + /// + /// + /// instances convert DVI files + /// into PNG files. + /// + public class DviPngProcessor : FileProcessor + { + ///

    + /// Initializes a new instance of the class. + /// + /// + /// The LaTeX bin path. + /// + /// + /// The working path. + /// + /// + /// The default image resolution. + /// + public DviPngProcessor(string latexBinPath, string workingPath, string defaultImageResolution) + { + /* + * ‘--depth*’ + * Report the depth of the image. + * This only works reliably when the LaTeX style ‘preview.sty’ + * from preview-latex is used with the ‘active’ option. + * It reports the number of pixels from the bottom of the image + * to the baseline of the image. This can be used for vertical positioning + * of the image in, e.g., web documents, where one would use + * (Cascading StyleSheets 1): + * + * + * The depth is a negative offset in this case, so the minus sign is necessary, + * and the unit is pixels (px). + */ + this.exe = latexBinPath + Path.DirectorySeparatorChar + "dvipng.exe"; + this.workingFolder = workingPath; + this.defaultImageResolution = defaultImageResolution; + } + + private readonly string workingFolder; + private readonly string exe; + private readonly string defaultImageResolution; + + /// + public override string WorkingDirectory { get { return this.workingFolder; } } + + /// + public override string Executable { get { return this.exe; } } + + /// + public override string Arguments(string fileName, string additionalInfo) + { + string resolution = this.defaultImageResolution; + if (additionalInfo is object) { + resolution = additionalInfo; + } + var arguments = "-depth* -bg Transparent -T tight -D " + resolution + + " -o " + "\"" + this.workingFolder + + Path.DirectorySeparatorChar + + fileName + ".png" + "\"" + " " + "\"" + this.workingFolder + + Path.DirectorySeparatorChar + + fileName + ".dvi" + "\""; + + return arguments; + } + } +} diff --git a/src/Novacta.Shfb.LatexTools/DviSvgmProcessor.cs b/src/Novacta.Shfb.LatexTools/DviSvgmProcessor.cs new file mode 100644 index 0000000..f8ca23b --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/DviSvgmProcessor.cs @@ -0,0 +1,71 @@ +// Copyright (c) Giovanni Lafratta. All rights reserved. +// Licensed under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.IO; + +namespace Novacta.Shfb.LatexTools +{ + /// + /// Represents a DviSvgm process. + /// + /// + /// instances convert DVI files + /// into SVG files. + /// + public class DviSvgmProcessor : FileProcessor + { + /// + /// Initializes a new instance of the class. + /// + /// + /// The DviSvgm bin path. + /// + /// + /// The working path. + /// + /// + /// The default zoom factor. + /// + /// + /// true if messages must be printed; otherwise, false. + /// + public DviSvgmProcessor( + string dvisvgmBinPath, + string workingPath, + string defaultZoomFactor, + bool redirectFileProcessors) + { + this.exe = dvisvgmBinPath + Path.DirectorySeparatorChar + "dvisvgm.exe"; + this.workingPath = workingPath; + this.defaultZoomFactor = defaultZoomFactor; + this.verbosity = redirectFileProcessors ? "7" : "0"; + } + + private readonly string workingPath; + private readonly string exe; + private readonly string defaultZoomFactor; + private readonly string verbosity; + + /// + public override string WorkingDirectory { get { return this.workingPath; } } + + /// + public override string Executable { get { return this.exe; } } + + /// + public override string Arguments(string fileName, string additionalInfo) + { + string zoomFactor = this.defaultZoomFactor; + if (additionalInfo is object) { + zoomFactor = additionalInfo; + } + + var arguments = @" --verbosity=" + this.verbosity + + " --no-fonts --exact --zoom=" + zoomFactor + " \"" + + fileName + "\""; + + return arguments; + } + } +} diff --git a/src/Novacta.Shfb.LatexTools/FileProcessor.cs b/src/Novacta.Shfb.LatexTools/FileProcessor.cs new file mode 100644 index 0000000..9372596 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/FileProcessor.cs @@ -0,0 +1,108 @@ +// Copyright (c) Giovanni Lafratta. All rights reserved. +// Licensed under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Diagnostics; + +namespace Novacta.Shfb.LatexTools +{ + /// + /// Represents a process that supports file elaborations. + /// + public abstract class FileProcessor + { + /// + /// Runs the processor on the specified file applying + /// command-line arguments specific to that file. + /// + /// + /// Name of the file. + /// + /// + /// Additional information needed to + /// evaluate arguments specific to the processed file. + /// + /// + /// The output of the file processor. + /// + /// + /// The process exited with errors. + /// + public string Run(string fileName, string additionalInfo) + { + Process process = new Process(); + string output; + try + { + process.StartInfo.UseShellExecute = false; + process.StartInfo.RedirectStandardOutput = true; + process.StartInfo.FileName = this.Executable; + process.StartInfo.WorkingDirectory = this.WorkingDirectory; + process.StartInfo.Arguments = this.Arguments(fileName, additionalInfo); + process.StartInfo.CreateNoWindow = true; + process.Start(); + output = process.StandardOutput.ReadToEnd(); + + process.WaitForExit(); + return output; + } + catch (Exception e) + { + throw new InvalidOperationException("The processor exited with errors.", e); + } + finally + { + process.Close(); + } + } + + /// + /// Runs the processor on the specified file. + /// + /// + /// Name of the file to process. + /// + /// + /// The output of the file processor. + /// + /// + /// The process exited with errors. + /// + public string Run(string fileName) + { + return this.Run(fileName, null); + } + + /// + /// Gets the working directory of the processor. + /// + /// + /// The working directory. + /// + public abstract string WorkingDirectory { get; } + + /// + /// Returns the process arguments for the specified file. + /// + /// + /// Name of the file to process. + /// + /// + /// Additional information needed to + /// evaluate arguments specific to the processed file. + /// + /// + /// A string representation of the process arguments. + /// + public abstract string Arguments(string fileName, string additionalInfo); + + /// + /// Gets the path of the processor. + /// + /// + /// The path of the processor. + /// + public abstract string Executable { get; } + } +} diff --git a/src/Novacta.Shfb.LatexTools/LatexComponent.cs b/src/Novacta.Shfb.LatexTools/LatexComponent.cs new file mode 100644 index 0000000..ad8d848 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/LatexComponent.cs @@ -0,0 +1,935 @@ +// Copyright (c) Giovanni Lafratta. All rights reserved. +// Licensed under the MIT license. +// See the LICENSE file in the project root for more information. + +using Sandcastle.Core.BuildAssembler; +using Sandcastle.Core.BuildAssembler.BuildComponent; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Text; +using System.Xml; +using System.Xml.XPath; + +namespace Novacta.Shfb.LatexTools +{ + /// + /// Provides support for LaTeX formatted formulas in + /// reference XML comments and conceptual content topics. + /// + public class LatexComponent : BuildComponentCore + { + #region State + + /// + /// Each LaTeX equation is represented as a LaTeX file. + /// The following field is an equation identifier, + /// and is used to form distinct names for the corresponding + /// LaTeX files. + /// + private static int EquationId; + + private readonly XPathExpression referenceRoot = + XPathExpression.Compile("document/comments"); + + private bool isFileFormatPng; + + private string initialTexDocument; + + #region CONFIGURATION + + /// + /// Gets or sets the additional preamble commands. + /// + /// The additional preamble commands. + private string[] AdditionalPreambleCommands; + + private static string[] GetAdditionalPreambleCommands( + XPathNavigator additionalPreambleCommands) + { + List lines = new List(); + + if (additionalPreambleCommands.MoveToFirstChild()) + { + lines.Add(additionalPreambleCommands.Value); + while (additionalPreambleCommands.MoveToNext()) + { + lines.Add(additionalPreambleCommands.Value); + } + } + + return lines.ToArray(); + } + + /// + /// Gets or sets the LaTeX default mode. + /// + /// The LaTeX default mode. + private string LatexDefaultMode; + + /// + /// Gets the image file format. + /// + /// The image file format. + private string ImageFileFormat; + + /// + /// Gets or sets the image depth correction. + /// + /// The image depth correction. + private int ImageDepthCorrection; + + /// + /// Gets or sets the image scale percentage. + /// + /// The image scale percentage. + private double ImageScalePercentage; + + /// + /// Gets a value indicating whether file processors + /// standard output must be redirected to the + /// Sandcastle Help File Builder Log. + /// + /// true if file processors must be redirected; + /// otherwise, false. + private bool RedirectFileProcessors; + + /// + /// Gets the LaTeX file processor. + /// + /// The LaTeX file processor. + private FileProcessor Latex; + + /// + /// Gets the DviPng file processor. + /// + /// The DviPng file processor. + private FileProcessor DviPng; + + /// + /// Gets the DviSvgm file processor. + /// + /// The DviSvgm file processor. + private FileProcessor DviSvgm; + + /// + /// Gets the output folders. + /// + /// The output folders. + private string[] OutputFolders; + + /// + /// Gets the working folder for file processors. + /// + /// + /// It is equivalent to basePath + "\LaTeX\". + /// + /// The working folder for file processors. + private string WorkingFolder; + + #endregion + + #endregion + + #region Build component factory for MEF + + /// + /// Provides a factory method to create instances. + /// + [BuildComponentExport( + id: "Novacta.Shfb.LatexComponent", + IsVisible = true, + Version = AssemblyInfo.ProductVersion, + Copyright = AssemblyInfo.Copyright, + Description = "Provides support for LaTeX formatted formulas in " + + "reference XML comments and conceptual content topics.")] + [System.Diagnostics.CodeAnalysis.SuppressMessage( + "Design", + "CA1034:Nested types should not be visible", + Justification = "")] + public sealed class Factory : BuildComponentFactory + { + /// + /// Initializes a new instance of the class. + /// + public Factory() + { + this.ReferenceBuildPlacement = new ComponentPlacement(PlacementAction.Before, + "XSL Transform Component"); + + this.ConceptualBuildPlacement = new ComponentPlacement(PlacementAction.Before, + "XSL Transform Component"); + } + + /// + public override BuildComponentCore Create() + { + return new LatexComponent(this.BuildAssembler); + } + + /// + public override string DefaultConfiguration => + @"" + + @"" + + @"" + + @"" + + @"% Paste here your additional preamble commands" + + @"" + + @"" + + @"" + + @"" + + @"" + + @"" + + @"" + + @"" + + @"" + + @"" + + @""; + } + + #endregion + + #region Constructor + + /// + /// Initializes a new instance of the class + /// with the specified build assembler. + /// + /// + /// The build assembler. + /// + protected LatexComponent(BuildAssemblerCore buildAssembler) : + base(buildAssembler) + { + } + + #endregion + + #region Apply helper methods + + #region LaTeX mode + + private static readonly string[] SupportedLaTeXModes = + new string[2] { "inline", "display" }; + + /// + /// Determines whether the specified mode is a supported LaTeX mode. + /// + /// + /// The mode to be checked. + /// + /// + /// true if the specified mode is supported; + /// otherwise, false. + /// + private static bool IsLaTeXModeSupported(string mode) + { + foreach (var supportedMode in SupportedLaTeXModes) + { + if (0 == string.CompareOrdinal(supportedMode, mode)) + { + return true; + } + } + + return false; + } + + #endregion + + #region LaTeX scale + + private const double BasePngResolution = 120.0; + private const double BaseSvgZoomFactor = 1.2; + + private static readonly string[] PredefinedScaleNames = new string[10] { + "tiny", + "scriptsize", + "footnotesize", + "small", + "normalsize", + "large", + "Large", + "LARGE", + "huge", + "Huge" }; + + private static Dictionary InitializePredefinedScaleFactors() + { + Dictionary zoomFactors = new Dictionary(); + + double[] factors = new double[10] { + 0.5, + 0.7, + 0.8, + 0.9, + 1, + 1.2, + 1.44, + 1.728, + 2.074, + 2.488 + }; + + for (int i = 0; i < 10; i++) + { + zoomFactors[PredefinedScaleNames[i]] = factors[i]; + } + + return zoomFactors; + } + + private static readonly Dictionary PredefinedScaleFactors = + InitializePredefinedScaleFactors(); + + /// + /// Determines whether the specified scale is supported. + /// + /// + /// The scale to be checked. + /// + /// + /// When this method returns, contains the factor associated + /// with the specified scale, if the scale is supported; otherwise, zero. + /// + /// + /// true if the specified scale is supported; + /// otherwise, false. + /// + private static bool TryGetScaleFactor(string scale, out double scaleFactor) + { + bool isScalePredefined = PredefinedScaleFactors.TryGetValue(scale, out scaleFactor); + if (isScalePredefined) + { + return true; + } + + bool isParsable = Double.TryParse(scale, out double scalePercentage); + scaleFactor = scalePercentage / 100.0; + if (!isParsable) + { + return false; + } + if (scaleFactor <= 0.0) + { + scaleFactor = 0.0; + return false; + } + + return true; + } + + #endregion + + /// + /// Performs the component tasks + /// using different settings for conceptual and reference topics. + /// + /// The XML document under study. + /// The prefix for LaTeX equation names. + /// The list of latex nodes to be transformed. + /// if set to true the topic is conceptual; otherwise, false. + private void Apply(XmlDocument document,// string key, + string namePrefix, XmlNodeList list, bool isTopicConceptual) + { + if (list is null) + { + return; + } + + string defaultConceptualNamespace = isTopicConceptual ? + "http://ddue.schemas.microsoft.com/authoring/2003/5" : null; + StringBuilder texBuilder = new StringBuilder(); + + foreach (XmlNode node in list) + { + + #region MODE ATTRIBUTE + + // LaTeX mode attribute defaults to a configuration option + string latexMode = this.LatexDefaultMode; + if (!(node.Attributes["mode"] is null)) + { + string mode = node.Attributes["mode"].InnerText; + if (IsLaTeXModeSupported(mode)) + { + latexMode = mode; + } + else + { + this.WriteMessage(MessageLevel.Warn, "Unrecognized LaTeX mode: \"" + + mode + "\". Using default mode: \"" + latexMode + "\"."); + } + } + + #endregion + + string equationName = namePrefix + EquationId; + + #region LATEX GENERATION + + texBuilder.Clear(); + + string texFileName = equationName + ".tex"; + string defaultLatexScale = "normalsize"; + string latexNodeInnerText = node.InnerText.Replace("\\\\", "\\\\\\\\").Trim(); + + texBuilder.Append(this.initialTexDocument); + + switch (latexMode) + { + case "inline": + texBuilder.AppendFormat( + CultureInfo.InvariantCulture, + "\\begin{{{0}}}${1}$\\end{{{2}}}\r\n", + defaultLatexScale, latexNodeInnerText, defaultLatexScale); + break; + case "display": + texBuilder.AppendFormat( + CultureInfo.InvariantCulture, + "\\begin{{{0}}}\\[{1}\\]\\end{{{2}}}\r\n", + defaultLatexScale, latexNodeInnerText, defaultLatexScale); + break; + } + + texBuilder.Append("\\end{document}\r\n"); + + using (TextWriter stringWriter = new StreamWriter( + this.WorkingFolder + Path.DirectorySeparatorChar + texFileName)) + { + stringWriter.Write(texBuilder.ToString()); + } + + #endregion + + #region SCALE ATTRIBUTE + + string pngResolution = null; + string svgZoomFactor = null; +#pragma warning disable IDE0018 // Inline variable declaration + double scaleFactor; +#pragma warning restore IDE0018 // Inline variable declaration + + if (!(node.Attributes["scale"] is null)) + { + string scale = node.Attributes["scale"].InnerText; + if (TryGetScaleFactor(scale, out scaleFactor)) + { + pngResolution = Convert.ToString( + Math.Ceiling(scaleFactor * BasePngResolution), + CultureInfo.InvariantCulture); + + svgZoomFactor = Convert.ToString( + scaleFactor * BaseSvgZoomFactor, + CultureInfo.InvariantCulture); + } + else + { + this.WriteMessage(MessageLevel.Warn, "Unrecognized scale: \"" + + scale + "\". Using default scale percentage: \"" + "100" + "\"."); + } + } + + #endregion + + #region DVI GENERATION + + string latexOutput = this.Latex.Run(texFileName); + if (this.RedirectFileProcessors) + { + this.WriteMessage(MessageLevel.Info, "Running LaTeX on " + texFileName + "."); + this.WriteMessage(MessageLevel.Info, latexOutput); + } + + #endregion + + string outputFile, dviFileName = equationName + ".dvi"; + + #region PNG GENERATION + + string dvipngOutput = this.DviPng.Run(equationName, pngResolution); + if (this.RedirectFileProcessors) + { + this.WriteMessage(MessageLevel.Info, "Running DviPng on " + dviFileName + "."); + this.WriteMessage(MessageLevel.Info, dvipngOutput); + } + + string pngFileName = equationName + ".png"; + string pngFilePath = this.WorkingFolder + + Path.DirectorySeparatorChar + pngFileName; + + if (this.isFileFormatPng) + { + foreach (var outputFolder in this.OutputFolders) + { + outputFile = outputFolder + pngFileName; + WriteMessage(MessageLevel.Info, + string.Format( + CultureInfo.InvariantCulture, + "Copying {0} to {1}", pngFilePath, outputFile)); + + File.Copy(pngFilePath, outputFile, true); + } + + } + + #endregion + + #region DEPTH ATTRIBUTE + + int imageDepth = 0; + + bool applyCorrectedDvipngDepth = true; + + if (!(node.Attributes["depth"] is null)) + { + string depth = node.Attributes["depth"].InnerText; + if (Int32.TryParse(depth, out imageDepth)) + { + applyCorrectedDvipngDepth = false; + } + else + { + this.WriteMessage(MessageLevel.Warn, "Unrecognized depth: \"" + + depth + "\". Using corrected DviPng depth."); + } + } + if (applyCorrectedDvipngDepth) + { + // Determine the DviPng image depth + int firstDepthPosition = dvipngOutput.IndexOf( + "depth=", StringComparison.OrdinalIgnoreCase) + 6; + int lastDepthPosition = dvipngOutput.IndexOf( + "]", + firstDepthPosition, StringComparison.OrdinalIgnoreCase) - 1; + int dvipngImageDepth = Convert.ToInt32( + dvipngOutput.Substring(firstDepthPosition, 1 + lastDepthPosition - firstDepthPosition), + CultureInfo.InvariantCulture); + imageDepth = -this.ImageDepthCorrection + dvipngImageDepth; + } + + #endregion + + if (!this.isFileFormatPng) + { + #region SVG GENERATION + + string dvisvgmOutput = this.DviSvgm.Run(equationName, svgZoomFactor); + if (this.RedirectFileProcessors) + { + this.WriteMessage(MessageLevel.Info, "Running DviSvgm on " + dviFileName + "."); + this.WriteMessage(MessageLevel.Info, dvisvgmOutput); + } + + string svgFileName = equationName + ".svg"; + + string svgFilePath = this.WorkingFolder + + Path.DirectorySeparatorChar + svgFileName; + + foreach (var outputFolder in this.OutputFolders) + { + outputFile = outputFolder + svgFileName; + WriteMessage(MessageLevel.Info, + string.Format( + CultureInfo.CurrentCulture, + "Copying {0} to {1}", svgFilePath, outputFile)); + + File.Copy(svgFilePath, outputFile, true); + } + + #endregion + } + + #region LATEX NODE EMISSION + + bool isInlined = 0 == string.CompareOrdinal(latexMode, "inline"); + + XmlNode latex = document.CreateElement("latexImg"); + + XmlNode latexEquationName = document.CreateElement("name"); + latexEquationName.InnerText = equationName; + latex.AppendChild(latexEquationName); + + XmlNode latexImageFileFormat = document.CreateElement("format"); + latexImageFileFormat.InnerText = this.ImageFileFormat; + latex.AppendChild(latexImageFileFormat); + + XmlNode latexInlined = document.CreateElement("inline"); + latexInlined.InnerText = isInlined ? "1" : "0"; + latex.AppendChild(latexInlined); + + XmlNode latexImageDepth = document.CreateElement("depth"); + latexImageDepth.InnerText = Convert.ToString( + imageDepth, + CultureInfo.InvariantCulture); + + latex.AppendChild(latexImageDepth); + + this.WriteMessage(MessageLevel.Info, + string.Format( + CultureInfo.InvariantCulture, + "Node for LaTeX image {0}: \n {1}", + equationName, latex.OuterXml)); + + if (!isInlined) + { + if (isTopicConceptual) + { + XmlNode beforeMarkup = document.CreateElement("markup", + defaultConceptualNamespace); + beforeMarkup.AppendChild(document.CreateElement("br")); + beforeMarkup.AppendChild(document.CreateElement("br")); + + node.ParentNode.InsertBefore(beforeMarkup, node); + + XmlNode afterMarkup = document.CreateElement("markup", + defaultConceptualNamespace); + afterMarkup.AppendChild(document.CreateElement("br")); + afterMarkup.AppendChild(document.CreateElement("br")); + + node.ParentNode.InsertAfter(afterMarkup, node); + } + else + { + node.ParentNode.InsertBefore(document.CreateElement("br"), node); + node.ParentNode.InsertBefore(document.CreateElement("br"), node); + node.ParentNode.InsertAfter(document.CreateElement("br"), node); + node.ParentNode.InsertAfter(document.CreateElement("br"), node); + } + } + node.ParentNode.ReplaceChild(latex, node); + + #endregion + + EquationId++; + } + + } + + #endregion + + #region BuildComponentCore implementation + + /// + /// Initializes the build component. + /// + /// + /// The component configuration. + /// + public override void Initialize(XPathNavigator configuration) + { + if (configuration is null) + { + throw new ArgumentNullException(nameof(configuration)); + } + + this.WriteMessage(MessageLevel.Info, + "[{0}, version {1}]\r\n {2}", + "Novacta LaTeX Component", + AssemblyInfo.ProductVersion, + AssemblyInfo.Copyright); + + #region Configuration + + #region Additional preamble commands + + var additionalPreambleCommands = + configuration.SelectSingleNode("//additionalPreambleCommands"); + + this.AdditionalPreambleCommands = + (additionalPreambleCommands is null) + ? + new string[1] + { "% Paste here your additional preamble commands" } + : + GetAdditionalPreambleCommands( + configuration.SelectSingleNode("//additionalPreambleCommands")); + + var texBuilder = new StringBuilder(); + texBuilder.Append("\\documentclass[10pt]{article}\r\n"); + texBuilder.Append("\\usepackage{amsmath}\r\n"); + texBuilder.Append("\\usepackage{amsfonts}\r\n"); + texBuilder.Append("\\usepackage[active,textmath,displaymath]{preview}\r\n"); + texBuilder.Append("\\pagestyle{empty}\r\n"); + + for (int i = 0; i < this.AdditionalPreambleCommands.Length; i++) + { + texBuilder.AppendLine(this.AdditionalPreambleCommands[i]); + } + + texBuilder.Append("\\begin{document}\r\n"); + + this.initialTexDocument = texBuilder.ToString(); + + #endregion + + #region LaTeX default mode + + var latexDefaultMode = configuration.SelectSingleNode("//latexDefaultMode"); + this.LatexDefaultMode = + (latexDefaultMode is null) + ? + "display" + : + latexDefaultMode + .GetAttribute("value", String.Empty); + + #endregion + + #region Image file format + + var imageFormatNode = configuration.SelectSingleNode("//imageFileFormat"); + this.ImageFileFormat = imageFormatNode + .GetAttribute("value", String.Empty); + + this.isFileFormatPng = + (0 == String.CompareOrdinal(this.ImageFileFormat, "png")); + + #endregion + + #region Image depth correction + + var imageDepthCorrectionNode = configuration.SelectSingleNode("//imageDepthCorrection"); + + this.ImageDepthCorrection = Convert.ToInt32( + imageDepthCorrectionNode.GetAttribute("value", String.Empty), + CultureInfo.InvariantCulture); + + #endregion + + #region Image scale factor + + var imageScalePercentageNode = configuration.SelectSingleNode("//imageScalePercentage"); + + this.ImageScalePercentage = Convert.ToDouble( + imageScalePercentageNode.GetAttribute("value", String.Empty), + CultureInfo.InvariantCulture); + + #endregion + + #region Redirect file processors + + // redirectFileProcessors + + var redirectFileProcessorsNode = + configuration.SelectSingleNode("//redirectFileProcessors"); + + this.RedirectFileProcessors = Convert.ToBoolean( + redirectFileProcessorsNode.GetAttribute("value", String.Empty), + CultureInfo.InvariantCulture); + + #endregion + + #region LaTeX processor + + #region Working folder + + var basePathNode = configuration.SelectSingleNode("//basePath"); + + var basePath = basePathNode.GetAttribute("value", String.Empty) + + @"Help\Working\"; + + string workingFolder = basePath + "LaTeX"; + + this.WorkingFolder = workingFolder; + + if (!Directory.Exists(workingFolder)) + { + Directory.CreateDirectory(workingFolder); + } + + #endregion + + #region Bin folder + + // latexBinPath + + var latexBinPathNode = configuration.SelectSingleNode("//latexBinPath"); + var latexBinFolder = latexBinPathNode.GetAttribute("value", String.Empty); + + #endregion + + this.Latex = new LatexProcessor(latexBinFolder, workingFolder); + + string defaultPngResolution = Convert.ToString( + BasePngResolution, + CultureInfo.InvariantCulture); + if (this.ImageScalePercentage != 100.0) + { + defaultPngResolution = Convert.ToString( + Math.Ceiling(BasePngResolution * this.ImageScalePercentage / 100.0), + CultureInfo.InvariantCulture); + } + + this.DviPng = new DviPngProcessor(latexBinFolder, workingFolder, defaultPngResolution); + + #endregion + + #region DviSvgm processor + + // dvisvgmBinPath + + var dvisvgmBinPathNode = configuration.SelectSingleNode("//dvisvgmBinPath"); + + var dvisvgmBinFolder = dvisvgmBinPathNode.GetAttribute("value", String.Empty); + + string defaultSvgZoomFactor = Convert.ToString( + BaseSvgZoomFactor, + CultureInfo.InvariantCulture); + + if (this.ImageScalePercentage != 100.0) + { + defaultSvgZoomFactor = Convert.ToString( + BaseSvgZoomFactor * this.ImageScalePercentage / 100.0, + CultureInfo.InvariantCulture); + } + + this.DviSvgm = new DviSvgmProcessor( + dvisvgmBinFolder, + workingFolder, + defaultSvgZoomFactor, + this.RedirectFileProcessors); + + #endregion + + #region Documentation output folders + + var helpTypeNode = configuration.SelectSingleNode("//helpType"); + + var helpTypes = helpTypeNode.GetAttribute("value", String.Empty); + var types = helpTypes.Split(','); + + var outputFolders = new string[types.Length]; + + for (var i = 0; i < outputFolders.Length; i++) + { + var type = types[i].Trim(); + + string path; + if (type.Equals("HtmlHelp1", StringComparison.OrdinalIgnoreCase)) + { + path = @"Output\HtmlHelp1\media\"; + } + else if (type.Equals("Website", StringComparison.OrdinalIgnoreCase)) + { + path = @"Output\Website\media\"; + } + else if (type.Equals("MSHelpViewer", StringComparison.OrdinalIgnoreCase)) + { + path = @"Output\MSHelpViewer\media\"; + } + else + { + throw new InvalidOperationException( + String.Format( + CultureInfo.InvariantCulture, + "Help file format {0} is not supported " + + "by the Novacta Latex Tools.", type)); + } + outputFolders[i] = basePath + path; + } + + this.OutputFolders = outputFolders; + + #endregion + + #endregion + + #region Component configuration messages + + this.WriteMessage(MessageLevel.Info, + String.Format( + CultureInfo.InvariantCulture, + "{0}, version {1} - {2}.", + "Novacta LaTeX Component", + AssemblyInfo.ProductVersion, + AssemblyInfo.Copyright)); + + this.WriteMessage(MessageLevel.Info, "Additional preamble commands:"); + for (int i = 0; i < this.AdditionalPreambleCommands.Length; i++) + { + this.WriteMessage(MessageLevel.Info, + this.AdditionalPreambleCommands[i]); + } + + this.WriteMessage(MessageLevel.Info, + string.Format( + CultureInfo.InvariantCulture, + "Documentation working folder: {0}", + basePath)); + this.WriteMessage(MessageLevel.Info, + string.Format( + CultureInfo.InvariantCulture, + "Component working folder: {0}", + workingFolder)); + this.WriteMessage(MessageLevel.Info, + "Default LaTex mode: " + this.LatexDefaultMode); + this.WriteMessage(MessageLevel.Info, + "Image File Format: " + this.ImageFileFormat); + this.WriteMessage(MessageLevel.Info, + string.Format( + CultureInfo.InvariantCulture, + "Image depth correction: {0}", + this.ImageDepthCorrection)); + this.WriteMessage(MessageLevel.Info, + string.Format( + CultureInfo.InvariantCulture, + "Image scale percentage: {0}", + this.ImageScalePercentage)); + this.WriteMessage(MessageLevel.Info, + "Redirect file processors: " + + this.RedirectFileProcessors.ToString()); + this.WriteMessage(MessageLevel.Info, + string.Format( + CultureInfo.InvariantCulture, + "LaTeX binary folder: {0}", + latexBinFolder)); + this.WriteMessage(MessageLevel.Info, + string.Format( + CultureInfo.InvariantCulture, + "DviSvgm binary folder: {0}", + dvisvgmBinFolder)); + + #endregion + } + + /// + /// Performs the component tasks. + /// + /// + /// The XML document. + /// + /// + /// The key (member name) of the item being documented. + /// + public override void Apply(XmlDocument document, string key) + { + if (document is null) + { + throw new ArgumentNullException(nameof(document)); + } + + XPathNavigator root, navDoc = document.CreateNavigator(); + root = navDoc.SelectSingleNode(this.referenceRoot); + + // If root is not null, it's a reference (API) build. + // If null, it's a conceptual build. + if (root == null) + { + XmlNamespaceManager nsmgr = new XmlNamespaceManager(document.NameTable); + nsmgr.AddNamespace("ltx", "http://www.novacta.net/2018/XSL/ShfbLatexTools"); + + XmlNodeList list = document.SelectNodes("//ltx:latex", nsmgr); + Apply(document, "clatex_", list, true); + } + else + { + XmlNodeList list = document.SelectNodes("//latex"); + Apply(document, "latex_", list, false); + } + } + + #endregion + } +} diff --git a/src/Novacta.Shfb.LatexTools/LatexPlugIn.cs b/src/Novacta.Shfb.LatexTools/LatexPlugIn.cs new file mode 100644 index 0000000..c8a9f69 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/LatexPlugIn.cs @@ -0,0 +1,199 @@ +// Copyright (c) Giovanni Lafratta. All rights reserved. +// Licensed under the MIT license. +// See the LICENSE file in the project root for more information. + +using SandcastleBuilder.Utils.BuildComponent; +using SandcastleBuilder.Utils.BuildEngine; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Xml; +using System.Xml.Linq; + + +namespace Novacta.Shfb.LatexTools +{ + /// + /// Provides support in MS Help Viewer files for LaTeX content + /// represented via the SVG image format. + /// + [HelpFileBuilderPlugInExport( + id: "Novacta.Shfb.LatexPlugIn", + Version = AssemblyInfo.ProductVersion, + Copyright = AssemblyInfo.Copyright, + Description = "Provides support in MS Help Viewer files for LaTeX content " + + "represented via the SVG image format.")] + public sealed class LatexPlugIn : IPlugIn + { + #region State + + private List executionPoints; + + private BuildProcess builder; + + #endregion + + #region IPlugIn implementation + + /// + /// Returns a collection of execution points that define + /// when the plug-in should be invoked during the build process. + /// + public IEnumerable ExecutionPoints + { + get + { + if (this.executionPoints == null) + this.executionPoints = new List + { + new ExecutionPoint(BuildStep.CompilingHelpFile, ExecutionBehaviors.Before), + }; + + return this.executionPoints; + } + } + + /// + /// Initializes the plug-in at the start of the build process. + /// + /// + /// The current build process. + /// + /// + /// The configuration data that the plug-in should use to initialize itself. + /// + public void Initialize(BuildProcess buildProcess, XElement configuration) + { + builder = buildProcess; + + var metadata = (HelpFileBuilderPlugInExportAttribute)this.GetType() + .GetCustomAttributes( + typeof(HelpFileBuilderPlugInExportAttribute), false) + .First(); + + builder.ReportProgress("{0} Version {1}\r\n{2}", + metadata.Id, + metadata.Version, + metadata.Copyright); + } + + /// + /// Executes the plug-in during the build process. + /// + /// + /// The current execution context. + /// + public void Execute(ExecutionContext context) + { + if (this.builder.CurrentFormat == Sandcastle.Core.HelpFileFormats.MSHelpViewer) + { + this.TransformLaTeXEmbedTags(); + } + } + + /// + /// Transforms LaTeX img tags into embed tags. + /// + private void TransformLaTeXEmbedTags() + { + string basePath = this.builder.WorkingFolder + @"\Output\MSHelpViewer\html\"; + bool isFirstFile = true; + + foreach (string sourceFile in Directory.EnumerateFiles(basePath)) + { + + XmlDocument document = new XmlDocument(); + document.Load(sourceFile); + XmlNode root = document.DocumentElement; + + XmlNamespaceManager nsmgr = new XmlNamespaceManager(document.NameTable); + nsmgr.AddNamespace("ns", "http://www.w3.org/1999/xhtml"); + + XmlNodeList list = root.SelectNodes("//ns:img[@alt='LaTeX equation']", nsmgr); + + if (list.Count > 0) + { + foreach (XmlNode img in list) + { + XmlNode embed = document.CreateElement("embed"); + + XmlAttribute alt = document.CreateAttribute("alt"); + alt.Value = "LaTeX equation"; + embed.Attributes.Append(alt); + + XmlAttribute type = document.CreateAttribute("type"); + type.Value = "image/svg+xml"; + embed.Attributes.Append(type); + + XmlAttribute src = document.CreateAttribute("src"); + string imgSource = img.Attributes.GetNamedItem("src").Value; + string fileName, fileExtension; + int slashPosition = imgSource.IndexOf("/", StringComparison.OrdinalIgnoreCase); + int dotPosition = imgSource.LastIndexOf('.'); + fileName = imgSource.Substring(slashPosition + 1, dotPosition - slashPosition - 1); + fileExtension = imgSource.Substring(dotPosition + 1, imgSource.Length - dotPosition - 1); + + XmlNode imgStyle = img.Attributes.GetNamedItem("style"); + if (!(imgStyle is null)) + { + XmlAttribute style = document.CreateAttribute("style"); + style.Value = imgStyle.Value; + embed.Attributes.Append(style); + } + + if (isFirstFile) + { + if (string.CompareOrdinal(fileExtension, "svg") != 0) + { + // LaTeX equations are represented using a graphic format + // other than SVG + return; + } + isFirstFile = false; + } + + src.Value = string.Format( + CultureInfo.InvariantCulture, + @"ms-xhelp:///?method=asset&id=media\{0}.{1}&package={2}.mshc&topiclocale={3}", + fileName, + "svg", + this.builder.ResolvedHtmlHelpName, + this.builder.CurrentProject.Language.Name); + + embed.Attributes.Append(src); + + img.ParentNode.ReplaceChild(embed, img); + } + + document.Save(sourceFile); + } + } + } + + #endregion + + #region IDisposable implementation + + /// + /// Allows this instance to try to free resources and perform other + /// cleanup operations before it is reclaimed by garbage collection. + /// + ~LatexPlugIn() + { + this.Dispose(); + } + + /// + /// Performs application-defined tasks associated with freeing, + /// releasing, or resetting unmanaged resources. + /// + public void Dispose() + { + GC.SuppressFinalize(this); + } + + #endregion + } +} diff --git a/src/Novacta.Shfb.LatexTools/LatexProcessor.cs b/src/Novacta.Shfb.LatexTools/LatexProcessor.cs new file mode 100644 index 0000000..2bc89b4 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/LatexProcessor.cs @@ -0,0 +1,52 @@ +// Copyright (c) Giovanni Lafratta. All rights reserved. +// Licensed under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.IO; + +namespace Novacta.Shfb.LatexTools +{ + /// + /// Represents a LaTeX process. + /// + /// + /// instances convert TEX files + /// into DVI files. + /// + public class LatexProcessor : FileProcessor + { + /// + /// Initializes a new instance of the class. + /// + /// + /// The LaTeX bin folder. + /// + /// + /// The working folder. + /// + public LatexProcessor(string latexBinFolder, string workingFolder) + { + this.exe = latexBinFolder + Path.DirectorySeparatorChar + "latex.exe"; + this.workingFolder = workingFolder; + } + + private readonly string workingFolder; + private readonly string exe; + + /// + public override string WorkingDirectory { get { return this.workingFolder; } } + + /// + public override string Executable { get { return this.exe; } } + + /// + public override string Arguments(string fileName, string additionalInfo) + { + var arguments = "-quiet -disable-installer -interaction=batchmode -output-directory=" + "\"" + + this.workingFolder + "\"" + " " + "\"" + this.workingFolder + + Path.DirectorySeparatorChar + fileName + "\""; ; + + return arguments; + } + } +} diff --git a/src/Novacta.Shfb.LatexTools/Novacta.Shfb.LatexTools.csproj b/src/Novacta.Shfb.LatexTools/Novacta.Shfb.LatexTools.csproj new file mode 100644 index 0000000..d27b684 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/Novacta.Shfb.LatexTools.csproj @@ -0,0 +1,1222 @@ + + + + netstandard2.0 + False + False + False + true + AllEnabledByDefault + Novacta.Shfb.LatexTools + Novacta.Shfb.LatexTools + true + Novacta.Shfb.LatexTools + Novacta.Shfb.LatexTools + + Provides support for adding LaTeX content in reference XML comments and conceptual topics created with Sandcastle Help File Builder. + + 1.0.0 + Giovanni Lafratta + novacta + Novacta + + + https://github.com/Novacta/shfb-latex-tools + git + Novacta.Shfb.LatexTools LaTeX SHFB Sandcastle + + MIT + + true + $(NoWarn);NU5128 + tools\ + + Copyright © 2021, Giovanni Lafratta, All Rights Reserved. + + + + + True + + + + true + build\ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + + + + + + + + + + + true + tools\ + false + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Configuration/BuildAssembler.config b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Configuration/BuildAssembler.config new file mode 100644 index 0000000..0933433 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Configuration/BuildAssembler.config @@ -0,0 +1,547 @@ + + + + + + {@ComponentLocations} + + + + + + + + + + + + + + + + + + + {@TokenFiles} + + + + + + + + + + + {@CodeSnippetsFiles} + " + + + + + + + + {@HelpFormatOutputPaths} + + + + + + + + + + + + + + + {@SyntaxFilters} + + + + + + + + + + {@SyntaxFiltersDropDown} + + {@TransformComponentArguments} + + + + + + + + + + + + + + + + + + + + {@ResourceItemFiles} + + + + + + + + + + + + + + + + + {@ReferenceLinkNamespaceFiles} + + + + + + + + + + + + + + + + + {@SearchResultsDisplayVersion} + + + + + + + + + + {@ResourceItemFiles} + + + + + + + + + + + + + + + + + {@ReferenceLinkNamespaceFiles} + + + + + + + + + + + + + + + + + + + + + + + {@HtmlEncCopyrightInfo} + + + Beispiel anfordern + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/en-US.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/en-US.xml new file mode 100644 index 0000000..8eb7c47 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/en-US.xml @@ -0,0 +1,59 @@ + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + Your feedback is used to improve the documentation and the product. Your e-mail address will not be used for any other purpose and is disposed of after the issue you report is resolved. While working to resolve the issue that you report, you may be contacted via e-mail to get further details or clarification on the feedback you sent. After the issue you report has been addressed, you may receive an e-mail to let you know that your feedback has been addressed. + + + {@RootNamespaceTitle} + + Namespaces + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [This is preliminary documentation and is subject to change.]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/es-ES.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/es-ES.xml new file mode 100644 index 0000000..d27c8e6 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/es-ES.xml @@ -0,0 +1,59 @@ + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + Your feedback is used to improve the documentation and the product. Your e-mail address will not be used for any other purpose and is disposed of after the issue you report is resolved. While working to resolve the issue that you report, you may be contacted via e-mail to get further details or clarification on the feedback you sent. After the issue you report has been addressed, you may receive an e-mail to let you know that your feedback has been addressed. + + + {@RootNamespaceTitle} + + Espacio de nombres + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [Ésta es documentación preliminar y está sujeta a cambios.]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/fr-FR.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/fr-FR.xml new file mode 100644 index 0000000..a688842 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/fr-FR.xml @@ -0,0 +1,59 @@ + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + Vos remarques sont utilisées pour améliorer la documentation et le produit. Votre addresse e-mail ne sera pas utilisé à d'autres fins, et sera supprimée une fois que le problème que vous signalez sera résolu. Pendant la résolution du problème que vous signalez, il est possible que vous soyez contacté par e-mail pour obtenir des précisions ou des clarifications sur vos remarques. Une fois que le problème que vois signalez sera résolu, il est possible que vous receviez un e-mail pour vous en informer. + + + {@RootNamespaceTitle} + + Espaces de noms + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [Ceci est une documentation préliminaire, sous réserve de modification.]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/it-IT.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/it-IT.xml new file mode 100644 index 0000000..6d38023 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/it-IT.xml @@ -0,0 +1,59 @@ + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + Your feedback is used to improve the documentation and the product. Your e-mail address will not be used for any other purpose and is disposed of after the issue you report is resolved. While working to resolve the issue that you report, you may be contacted via e-mail to get further details or clarification on the feedback you sent. After the issue you report has been addressed, you may receive an e-mail to let you know that your feedback has been addressed. + + + {@RootNamespaceTitle} + + Spazio dei nomi + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [Documentazione preliminare soggetta a variazioni.]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/ja-JP.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/ja-JP.xml new file mode 100644 index 0000000..ecfe464 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/ja-JP.xml @@ -0,0 +1,60 @@ + + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + ドキュメント開発チームはドキュメントの品質向上にあなたのフィードバックを使用いたします。送信いただいたメールアドレスは他の用途に使用いたしません。問題が解決した後送信されたメールアドレスを破棄いたします。送信いただいた問題の処理において,詳細をお伺いする場合や問題の切り分けのためにコンタクトをとらせていただく場合がございます。 + + + {@RootNamespaceTitle} + + 名前空間 + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [これは仮のドキュメントであり、予告なく変更されます。]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/ko-KR.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/ko-KR.xml new file mode 100644 index 0000000..d815236 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/ko-KR.xml @@ -0,0 +1,59 @@ + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + Your feedback is used to improve the documentation and the product. Your e-mail address will not be used for any other purpose and is disposed of after the issue you report is resolved. While working to resolve the issue that you report, you may be contacted via e-mail to get further details or clarification on the feedback you sent. After the issue you report has been addressed, you may receive an e-mail to let you know that your feedback has been addressed. + + + {@RootNamespaceTitle} + + 네임스페이스 + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [This is preliminary documentation and is subject to change.]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/pt-BR.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/pt-BR.xml new file mode 100644 index 0000000..3d1229f --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/pt-BR.xml @@ -0,0 +1,59 @@ + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + Your feedback is used to improve the documentation and the product. Your e-mail address will not be used for any other purpose and is disposed of after the issue you report is resolved. While working to resolve the issue that you report, you may be contacted via e-mail to get further details or clarification on the feedback you sent. After the issue you report has been addressed, you may receive an e-mail to let you know that your feedback has been addressed. + + + {@RootNamespaceTitle} + + Espaços de Nome + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [Esta é uma documentação preliminar e está sujeita a alterações.]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/ru-RU.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/ru-RU.xml new file mode 100644 index 0000000..66ff1c2 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/ru-RU.xml @@ -0,0 +1,59 @@ + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + Ваш отзыв будет использован для улучшения качества документации и продукта в целом. Адрес вашей электронной почты не будет использован для других целей и будет удалён, после того как ваш отзыв будет обработан. До окончания работ по обработке вашего отзыва, вы можете связаться с автором для получения дополнительной информации. После его обработки, вы можете получить сообщение об окончании работ по вашему отзыву на указанный адрес электронной почты. + + + {@RootNamespaceTitle} + + Пространства имен + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [Это предварительная версия документации. API может измениться в будущем.]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/zh-CHS.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/zh-CHS.xml new file mode 100644 index 0000000..cd171ed --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/zh-CHS.xml @@ -0,0 +1,59 @@ + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + Your feedback is used to improve the documentation and the product. Your e-mail address will not be used for any other purpose and is disposed of after the issue you report is resolved. While working to resolve the issue that you report, you may be contacted via e-mail to get further details or clarification on the feedback you sent. After the issue you report has been addressed, you may receive an e-mail to let you know that your feedback has been addressed. + + + {@RootNamespaceTitle} + + 命名空间 + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [这是一个初步的说明文档有待于进一步改进。]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/zh-CN.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/zh-CN.xml new file mode 100644 index 0000000..5be1a53 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/SHFBContent/zh-CN.xml @@ -0,0 +1,59 @@ + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + Your feedback is used to improve the documentation and the product. Your e-mail address will not be used for any other purpose and is disposed of after the issue you report is resolved. While working to resolve the issue that you report, you may be contacted via e-mail to get further details or clarification on the feedback you sent. After the issue you report has been addressed, you may receive an e-mail to let you know that your feedback has been addressed. + + + {@RootNamespaceTitle} + + 命名空间 + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [本文档仅为初稿,以后可能会有变更。]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/codeTemplates.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/codeTemplates.xsl new file mode 100644 index 0000000..d5ae6c0 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/codeTemplates.xsl @@ -0,0 +1,458 @@ + + + + + + + + + + + + + + + HTML + + + batch + + + PShell + + + Python + + + SQL + + + VBScript + + + VisualBasicAndCSharp + + + XML + + + + XAML + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + +
    +
    + +
    +
    +
    + + + + + + +
    + + + + OH_CodeSnippetContainerTabSolo + + + OH_CodeSnippetContainerTabFirst + + + OH_CodeSnippetContainerTab + + + + + + + + + + + + + + +
    +
    +
    +
    + + + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    + + + + + + +
    + + + + display: block + + + display: none + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    + + + + + + + +
    + + + + +
    + + +
    + +
    +
    + +
    + +
    +
    +
    + + +
    + + + + OH_CodeSnippetContainerTabSolo + + + OH_CodeSnippetContainerTabDisabled + + + OH_CodeSnippetContainerTabDisabledNotFirst + + + OH_CodeSnippetContainerTabFirst + + + OH_CodeSnippetContainerTab + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + +
    +
    +
    +
    +
    +
    + +
    +
    + +
    + + +
    + + + + display: block + + + display: none + + + + + + + + +
    +
    +
    +
    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + +
    
    +          
    +            
    +              
    +            
    +            
    +            
    +              
    +            
    +          
    +        
    +
    +
    + + + + + + +
    +
    +
    +
    + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/conceptualMetadataHelp20.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/conceptualMetadataHelp20.xsl new file mode 100644 index 0000000..d146cda --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/conceptualMetadataHelp20.xsl @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + + + , + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/conceptualMetadataHelp30.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/conceptualMetadataHelp30.xsl new file mode 100644 index 0000000..adaabee --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/conceptualMetadataHelp30.xsl @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + + , + + + + + + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/conceptualTopicTypes.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/conceptualTopicTypes.xsl new file mode 100644 index 0000000..32effac --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/conceptualTopicTypes.xsl @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/globalTemplates.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/globalTemplates.xsl new file mode 100644 index 0000000..223f9d5 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/globalTemplates.xsl @@ -0,0 +1,844 @@ + + + + false + false + + + + + + + + + + + + + + + + ABCDEFGHIJKLMNOPQRSTUVWXYZ + abcdefghijklmnopqrstuvwxyz + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + + :: + . + + + + + + + + + + Nothing + nullptr + null + + + + + + + + + + + + + + + + + + Shared + static + + + + + + + + + + + + + + + + + + Overridable + virtual + + + + + + + + + + + + + + + + + + True + true + + + + + + + + + + + + + + + + + + False + false + + + + + + + + + + + + + + + + + + MustInherit + abstract + + + + + + + + + + + + + + + + + + NotInheritable + sealed + + + + + + + + + + + + + + + In + + in + + + + + + + + Out + + out + + + + + + + + + + + Async + async + + + + + + + + + + + + + + + + + + Await + let! + await + + + + + + + + + + + + + + + + + + Async + async + + / + + Await + let! + await + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + left + + + + +
    + + +

    + + + + + +

    +
    + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + {0} + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + +
    + + + {0} + + +
    +
    + + + + + + +
    + + + {0} + + +
    +
    + + + + + + +
    + + + {0} + + +
    +
    + +
    + + + + + + + + + + +
    + + + + + +
    + +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + +
    + + + + + + + + +
    + + + + + +
    + +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + +
    + + + + + +

    + + + + +

    + +
    + + + + + + + + + + alert_title_note + + + alert_title_tip + + + alert_title_caution + + + alert_title_security + + + alert_title_important + + + alert_title_visualBasic + + + alert_title_visualC# + + + alert_title_visualC++ + + + alert_title_visualJ# + + + text_NotesForImplementers + + + text_NotesForCallers + + + text_NotesForInheritors + + + alert_title_note + + + + + + + alert_altText_note + + + alert_altText_tip + + + alert_altText_caution + + + alert_altText_security + + + alert_altText_important + + + alert_altText_visualBasic + + + alert_altText_visualC# + + + alert_altText_visualC++ + + + alert_altText_visualJ# + + + alert_altText_note + + + + + + + alert_note.gif + + + alert_caution.gif + + + alert_security.gif + + + alert_caution.gif + + + alert_note.gif + + + alert_note.gif + + + alert_note.gif + + + alert_note.gif + + + alert_note.gif + + + +
    + + + + + + + +
    + + + + + + + + +   + +
    + + + + + + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/main_conceptual.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/main_conceptual.xsl new file mode 100644 index 0000000..ef3fafe --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/main_conceptual.xsl @@ -0,0 +1,442 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:call-template name="t_topicTitlePlain" /> + + + + + + + +
    +
    + + +
    +
    + + + + +
    + + + + , + + + + + + + + + + + + + + + + + + + + + +
    +
    + + +
    +
    +
    + + + + + + + + + + + + + + +
    + + + + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + subsection + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +

    +
    + +

    + +

    +
    + +

    + +

    +
    +
    + +
    +
    + + + +
  3. + + + + + + + + + + + +
    + +
    +
    +
  4. +
    +
    + + + + + + + + + + + + + + #cite[] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/main_sandcastle.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/main_sandcastle.xsl new file mode 100644 index 0000000..70cd38e --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/main_sandcastle.xsl @@ -0,0 +1,1284 @@ + + + + + + + + + + + + + + + + + + + + + + + +

    + +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + +

    + +

    +
    + + + + + + +
    + + + + + + + + +
    +
    + + + + + + + + + + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    +
    + + + + + + + + + + +
    + + +
    + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + +
    + + + + + + + + + + + +
    + + + +
    + + + +
    +
    +
    +
    +
    +
    + + + + + +
    + + + + + + + + + + + +
    + + + +
    + + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    + + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + This method is pure. + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +
    +
    +
    + + + + + + + + + + + + +
    + +
    +
    +
    +                
    +              
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + +
    + + Description: + + + +
    + + Inherited From: + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + Exception: + + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +
    +
    + + + + + + + +
    + + + +
    +
    + + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
      + +
    • + + + + + + + - + + + + + + + +
    • +
      +
    +
    + +
      + + + + + + +
    1. + + + + + + + - + + + + + + + +
    2. +
      +
    +
    + +
    + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    + +
    + +
    + +
    +
    + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {0} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {0} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _blank + + + + noopener noreferrer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #cite[] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + + + + + +
    +
    +
    +
    +
    +
    + + + + +
    \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/metadataHelp20.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/metadataHelp20.xsl new file mode 100644 index 0000000..fc27c7b --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/metadataHelp20.xsl @@ -0,0 +1,1012 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + + + , + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Members + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + http://schemas.microsoft.com/winfx/2006/xaml/presentation# + N:System.Windows.Controls#N:System.Windows.Documents#N:System.Windows.Shapes#N:System.Windows.Navigation#N:System.Windows.Data#N:System.Windows#N:System.Windows.Controls.Primitives#N:System.Windows.Media.Animation#N:System.Windows.Annotations#N:System.Windows.Annotations.Anchoring#N:System.Windows.Annotations.Storage#N:System.Windows.Media#N:System.Windows.Media.Animation#N:System.Windows.Media.Media3D#N: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/metadataHelp30.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/metadataHelp30.xsl new file mode 100644 index 0000000..519770e --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/metadataHelp30.xsl @@ -0,0 +1,729 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ctor + + + + + + + + + + + + + `` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ctor + + + + + `` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + + , + + + + + + + + + + + + + , + + + + + + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/novacta_latex_tools.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/novacta_latex_tools.xsl new file mode 100644 index 0000000..28b8487 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/novacta_latex_tools.xsl @@ -0,0 +1,110 @@ + + + + + LaTeX equation + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/seealso_dduexml.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/seealso_dduexml.xsl new file mode 100644 index 0000000..5b2c3f8 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/seealso_dduexml.xsl @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    +
    +
    +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/skeleton.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/skeleton.xml new file mode 100644 index 0000000..1a171e3 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/skeleton.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/skeleton_conceptual.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/skeleton_conceptual.xml new file mode 100644 index 0000000..90ef0c7 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/skeleton_conceptual.xml @@ -0,0 +1,4 @@ + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/utilities_bibliography.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/utilities_bibliography.xsl new file mode 100644 index 0000000..1ca2c28 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/utilities_bibliography.xsl @@ -0,0 +1,36 @@ + + + + + + + + +
    + + cite + [] + + + , + + + , + + + + , + + + _blank + + noopener noreferrer + + + + +
    +
    +
    + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/utilities_dduexml.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/utilities_dduexml.xsl new file mode 100644 index 0000000..be31a66 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/utilities_dduexml.xsl @@ -0,0 +1,1847 @@ + + + + + + + + + + + + + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + tt_ + + + + + + + + + + + + + + + + + + + + + + + + + + + + | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + + + + + + +

    +
    + + +
    +
    +
    +
    +
    + + + + + + + + +

    + +

    +
    + + + + +
    + +
    +
    +
    + + +

    + + + +

    + +
    + + +

    + + + +

    + +
    + + +

    + + + +

    + +
    + + + +

    + + + + + + + + , + + + + + + +

    +
    +
    + + + + + + + + + + + +
    +
    +
    + + +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + +

    + + + + + + +

    +
    +
    + + + + + + + +
    +
    + + + + + + + + +
      + +
    +
    + +
      + +
    +
    +
    + +
      + +
    +
    +
    +
    + + +
  5. + + + + + + +
  6. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +

    + +
    +
    + + + + + + +

    + +

    +
    + + + +

    + +

    + +
    +
    + + + +

    + +

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + +
    + +

    + +

    + + no + +
    + +

    +
    +
    +
    + + + + + + +
    + +

    +
    +
    + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
    +
    + +
      + + + + + + +
    +
    + +
      + +
    +
    +
    +
    + + +
  7. + + + + + + +
  8. +
    + + +
    + +
    + +
    +
    + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    + + +
    + + + + + + +
    +
    + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +

    +
    +
    + + + + + + + + + + + + +
    + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + +
    + + + ps_mediaCenter + + + ps_mediaFar + + + ps_mediaNear + + + +
    + + + : + + + +
    +
    + + +
    + + + : + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _blank + + + + + noopener noreferrer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + +

    + + + + + +

    +
    + + + +

    + + + + + +

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +

    +
    + + + +
    + + + + + + + + + + + + + + + | + + + + +
    + + +
    + +
    + +
    +
    +
    + + +
    + + + + + + +

    + +

    +
    +
    + + + +
    + + + +
    +
    + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + , + + +
    +
    + + + +
    +   + + + + + + + + , + + +
    +
    +
    +
    + + + + + +
    +

    + + + + +

    +
    + + + +
    +
    +
    + + + +
    + + + + + +
    +
    + + + + + + + + + + + + + + + | + + + + + + + + | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/utilities_metadata.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/utilities_metadata.xsl new file mode 100644 index 0000000..de9e955 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/utilities_metadata.xsl @@ -0,0 +1,319 @@ + + + + + + + . + + + + ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %3C + + %3E + + + + + (Of + + ) + + + + + + + + + %2C + + + + + + + + + + + + + + + + + + + + + + + + + [ + , + ] + + + + ( + , + ) + + + + + + * + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + to + + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/utilities_reference.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/utilities_reference.xsl new file mode 100644 index 0000000..38c2109 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Transforms/utilities_reference.xsl @@ -0,0 +1,2622 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:call-template name="t_topicTitlePlain"> + <xsl:with-param name="p_qualifyMembers" select="true()" /> + </xsl:call-template> + + + + + + + + + +
    +
    + + +
    +
    + + + + +
    + + + + +
    +
    + + +
    +
    +
    + + + + + + + + topicTitle_ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + + + , + + + + , ... + + ) + + + + + + + ( + + + + + + to + + + + + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + . + + + + + + + + + + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + topicTitle_ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + + + , + + + + , ... + + ) + + + + + + + ( + + + + + + to + + + + + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + Narrowing + + + Widening + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default_namespace + + + + default_namespace + + + + + + + unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    +   + + + + + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + constructor + + + + + + property + + + + + + method + + + + + + event + + + + + + operator + + + + + + field + + + + + + attachedProperty + + + + + + attachedEvent + + + + + + extensionMethod + + + + + + explicitInterfaceImplementation + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +   + + + + +
    + +
    + + + + + + + genericExposedMembersTableText + exposedMembersTableText + + +

    + + + + + + + + +

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +   + + + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + prot + priv + pub + + + + + + ; public + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CFW.gif + + + + + + + + + xna.gif + + + + + + + + + slMobile.gif + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + public; + + + protected; + + + private; + + + explicit; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + public; + + + protected; + + + private; + + + explicit; + + + static; + + + declared; + + + inherited; + + + netcfw; + + + xnafw; + + + silverlight; + + + silverlight_mobile; + + + notNetfw; + + + + + + + ; + + + + + + + + + pub + prot + priv + pub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CodeExample.png + + + + + + + + + + + + + + + + + + method + + + + + operator + + + extension + + + method + + + + + + + + + + + + + + pubinterface.gif + + + + + + + + + + + + + + + + + + + + + + + + + + + + static.gif + + + + + + + + + + CFW.gif + + + + + + + + + + xna.gif + + + + + + + + + + slMobile.gif + + + + + + + + + + CodeExample.png + + + + + + + + + + + + + + + + + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    + + + + + + unsupported + + + + + + + + + + + + + + + + supported + + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + yes + + + + + + + + +

    + +   + +
    + + + + + + +
    + + + + + + + , + + + + + + + + + + +
    +
    +
    + + + + + + +    + + + +
    +
    +
    + + +   + + +
    +
    + + + + + + + + + + + + + + dll + + + exe + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +

    +
    + +

    + + + + , + + +

    + +

    + +

    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +

    + +

    + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    + + + + + + + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + #L + + + + + noopener noreferrer + + + + + + + + + + + + + +
    + +
    + + + + + (Optional) + +
    +
    + + + + + + + +
    + + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + false + + + true + + + + true + + + + + + + + + + + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + < + + (Of + + < + <' + ( + + + + + , + + + + > + ) + > + > + ) + + + + + ( + + + + , + + + ) + + + + + < + + (Of + + < + <' + ( + + + + + , + + + + > + ) + > + > + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + array< + + + + + + + + , + + + > + + + ( + , + ) + + + [ + , + ] + + + + + + + [ + , + ] + + + + + array< + + + + + + , + + + > + + + ( + , + ) + + + [ + , + ] + + + + + + + + + + + + * + + + + + * + + + + + + + * + + + + + + + + + + + + + % + + + + + + + + + + + % + + + + + + + + + + + + true + + + + + + + true + + + + + + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/CloseSearch.png b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/CloseSearch.png new file mode 100644 index 0000000000000000000000000000000000000000..3777d67bb5ae66c54db181e1b3a500d10754b119 GIT binary patch literal 629 zcmV-*0*d{KP)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGmbN~PnbOGLGA9w%&0p3YOK~y+TWBmXBKLe=%sOR&x zj~zHCT)Q4#yRC=7)1gCXcyZU7KHP4{>lZ+AaX_jX$$$POTWH@)e@ifM1A)V^xV zeOaFdL@%o1p{P9OMS0Bg!jPvKo)06<4>>78^}K4%dONl5Rcp?Riuh;wp+NLB-3x-A zBsc)k<7lf#5oQlU3=g@gLiGTh^r|iAMRn5i{II8KUO@CD&JKbeg`0p-pw6QJ?FWIn zhuzemdY%`Ayr@ZfQ5y3sClDwE1dpRFAqc{KxR zy-2l&pqB}TK=dj?`DK8_Gk3vL7Q9e<9(bz(L-t9E%hMF+XUTRz^gO{7f?mdG1JSE6 zg;%~J&m1{V8nQt3+;)(>=d1Z3+~gq$83NJcP%Q|08l((F&wM1Fx$r);VmYME2-S15 zK4Y($=mA@q19q~9Y^8zdu&o3HowODLA#>gnMr?<57|)f(L-n8qE#36YXd39;vjb?hIQv;UIIBR>5jgR3=A9l zx&I`x0{NT;9+AZi3_>L!%y=(Nz5*yHRpJ^^5}cn_Ql40p$`Fv4nOCCc=Nh6=W~^tb zXK3jD*~uKJs?yWNF+?Lc`N!|~_d8efuS(B7+S;(m!IVe9)jzJDp~yfmKt`kb9b|Nk;GXm6OFpsf8w3g`$1Pgg&ebxsLQ E0FDP(*Z=?k literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Collapsed.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Collapsed.gif new file mode 100644 index 0000000000000000000000000000000000000000..108d492386d7ee4cb692637beff6c88c59d52086 GIT binary patch literal 838 zcmZ?wbhEHba}ave*XOV_wV2T|Nk?Lg3%Bd;vt{|az7|9FmPxysB_48 t1Sl}Dva;%BI4C4Ca`Fg?$QUR#H8gQ3@l*tSXkcXLWOnfIFj8Q!1_0$!Io|*P literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Expanded.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Expanded.gif new file mode 100644 index 0000000000000000000000000000000000000000..f774d9bb6589737768a8bf788046a8bbe53ca902 GIT binary patch literal 837 zcmZ?wbhEHb + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/FillNode.php b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/FillNode.php new file mode 100644 index 0000000..9429a03 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/FillNode.php @@ -0,0 +1,52 @@ +load('WebTOC.xml'); +$xpath = new DOMXPath($toc); +$id = $_GET["Id"]; +$nodes = $xpath->query("//HelpTOCNode[@Id='$id']/*"); +if ($nodes->length == 0) +{ +?> + TOC node not found! +getAttribute("Id"); + $url = $node->getAttribute("Url"); + $title = $node->getAttribute("Title"); + if (empty($url)) + { + $url = "#"; + $target = ""; + } + else + { + $target = " target=\"TopicContent\""; + } + + if ($node->hasChildNodes()) + { +?> +
    + + > + +
    + +
    + + > +
    + \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Index.aspx b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Index.aspx new file mode 100644 index 0000000..57c6290 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Index.aspx @@ -0,0 +1,152 @@ +<%@ Page Language="C#" EnableViewState="False" %> + + + + + +{@HtmlEncHelpTitle} - Table of Content + + + + + + +
    + +
    + + + + + + + + + + + +
    + +
    + +
    + +
    + + + +
    + + + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Index.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Index.gif new file mode 100644 index 0000000000000000000000000000000000000000..35ab04764b2cff6315a3a280c2c042be07ff55cb GIT binary patch literal 902 zcmc(eyK0qD5QUeJcmv^pm6dqI6iMS0-kK?!()<5A*ED(H28TPU$%d%?Hh=4UT;RO*kvkGj$n5LaN51epM_iBYK z<{sf0UM(0Nlp{UUtMx;R?kLalYCCWXd+-ATP>e)0Ap+LWgcn5E3^dq)F-<#l9yl3M zZ6yj>%sn%zokcJ_C}%~r(ZoUy7?0Cfi + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/LoadIndexKeywords.php b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/LoadIndexKeywords.php new file mode 100644 index 0000000..d7a8101 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/LoadIndexKeywords.php @@ -0,0 +1,68 @@ +load("WebKI.xml"); + $xpath = new DOMXPath($ki); + $nodes = $xpath->query("/HelpKI/*"); + $startIndexParam = $_GET["StartIndex"]; + $startIndex = 0; + if (!empty($startIndexParam)) + $startIndex = intval($startIndexParam) * 128; + $endIndex = $startIndex + 128; + + if ($endIndex > $nodes->length) + $endIndex = $nodes->length; + + if($startIndex > 0) + { + ?> + + item($startIndex); + $url = $node->getAttribute("Url"); + $title = $node->getAttribute("Title"); + $target = " target=\"TopicContent\""; + + if (empty($url)) + { + $url = "#"; + $target = ""; + } +?> +
    +  > + query("./HelpKINode", $node); + foreach($subNodes as $subNode) + { + $subUrl = $subNode->getAttribute("Url"); + $subTitle = $subNode->getAttribute("Title"); + ?> +
    + +
    + + +
    +length) + { + ?> +
    +  Next page >> +
    + \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Search.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Search.gif new file mode 100644 index 0000000000000000000000000000000000000000..b4151e0d91293ef1108d753aece5c38d06bf3623 GIT binary patch literal 971 zcmb_be@IhN6h6;3*(`L-EmldX7+6N7C>kX#NHZFw)E|ootrROYgDK8@&Zo{=DYmDG z3YAVbn`vYsCfXlMGNVQ+YMM*a*$<2|iJ_*ice(?izxvPbaxVAY@4MeQ_rf`LJT~gU zc?n2h34x4jx(6Dj`Ks2Oa;fHKRkwNU+x^jR)wb#M97|f3X?SF2p2sr#lBQ$9(7$Av z>NLeIDz;9vG2>zY+bYVR$KK1ukHBJGr#IWbRs^RoYUkr zRSd24y7)oFMMMr!U)h<@+FIv0JK_N16ygfWGCZ4dxfWXvetm7qz41s>-27x{cZ;8TtVQ(|!XHOnYNxPe8c&sx#&SoC+=19CBF_r04niNrx*MxPEQyJd35+ia8 zdieS$x`16Ywe0CgWK8XU8MXWxi% + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/SearchHelp.inc.php b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/SearchHelp.inc.php new file mode 100644 index 0000000..ec21bc5 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/SearchHelp.inc.php @@ -0,0 +1,169 @@ +filename = $file; + $this->pageTitle = $title; + $this->rank = $rank; + } +} + + +/// +/// Split the search text up into keywords +/// +/// The keywords to parse +/// A list containing the words for which to search +function ParseKeywords($keywords) +{ + $keywordList = array(); + $words = preg_split("/[^\w]+/", $keywords); + + foreach($words as $word) + { + $checkWord = strtolower($word); + $first = substr($checkWord, 0, 1); + if(strlen($checkWord) > 2 && !ctype_digit($first) && !in_array($checkWord, $keywordList)) + { + array_push($keywordList, $checkWord); + } + } + + return $keywordList; +} + + +/// +/// Search for the specified keywords and return the results as a block of +/// HTML. +/// +/// The keywords for which to search +/// The file list +/// The dictionary used to find the words +/// True to sort by title, false to sort by +/// ranking +/// A block of HTML representing the search results. +function Search($keywords, $fileInfo, $wordDictionary, $sortByTitle) +{ + $sb = ""; + $matches = array(); + $matchingFileIndices = array(); + $rankings = array(); + + $isFirst = true; + + foreach($keywords as $word) + { + if (!array_key_exists($word, $wordDictionary)) + { + return "Nothing found"; + } + $occurrences = $wordDictionary[$word]; + + $matches[$word] = $occurrences; + $occurrenceIndices = array(); + + // Get a list of the file indices for this match + foreach($occurrences as $entry) + array_push($occurrenceIndices, ($entry >> 16)); + + if($isFirst) + { + $isFirst = false; + foreach($occurrenceIndices as $i) + { + array_push($matchingFileIndices, $i); + } + } + else + { + // After the first match, remove files that do not appear for + // all found keywords. + for($idx = 0; $idx < count($matchingFileIndices); $idx++) + { + if (!in_array($matchingFileIndices[$idx], $occurrenceIndices)) + { + array_splice($matchingFileIndices, $idx, 1); + $idx--; + } + } + } + } + + if(count($matchingFileIndices) == 0) + { + return "Nothing found"; + } + + // Rank the files based on the number of times the words occurs + foreach($matchingFileIndices as $index) + { + // Split out the title, filename, and word count + $fileIndex = explode("\x00", $fileInfo[$index]); + + $title = $fileIndex[0]; + $filename = $fileIndex[1]; + $wordCount = intval($fileIndex[2]); + $matchCount = 0; + + foreach($keywords as $words) + { + $occurrences = $matches[$word]; + + foreach($occurrences as $entry) + { + if(($entry >> 16) == $index) + $matchCount += $entry & 0xFFFF; + } + } + + $r = new Ranking($filename, $title, $matchCount * 1000 / $wordCount); + array_push($rankings, $r); + } + + // Sort by rank in descending order or by page title in ascending order + if($sortByTitle) + { + usort($rankings, "cmprankbytitle"); + } + else + { + usort($rankings, "cmprank"); + } + + // Format the file list and return the results + foreach($rankings as $r) + { + $f = $r->filename; + $t = $r->pageTitle; + $sb .= "
    \r\n" . + "" . + "$t\r\n
    \r\n"; + } + + // Return the keywords used as well in a hidden span + $k = implode(" ", $keywords); + $sb .= "$k"; + + return $sb; +} + +function cmprank($x, $y) +{ + return $y->rank - $x->rank; +} + +function cmprankbytitle($x, $y) +{ + return strcmp($x->pageTitle, $y->pageTitle); +} + +?> \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/SearchHelp.php b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/SearchHelp.php new file mode 100644 index 0000000..ed698fd --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/SearchHelp.php @@ -0,0 +1,58 @@ + + Nothing found + $val) + { + $wordDictionary[$ftiWord] = $val; + } + } + } + } + + // Perform the search and return the results as a block of HTML + $results = Search($keywords, $fileList, $wordDictionary, $sortByTitle); + echo $results; +?> \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Splitter.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Splitter.gif new file mode 100644 index 0000000000000000000000000000000000000000..f052c6aff1d1e3879ef518e32d28829c82ebdd1d GIT binary patch literal 880 zcmZ?wbhEHbk literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/SyncTOC.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/SyncTOC.gif new file mode 100644 index 0000000000000000000000000000000000000000..892fe676c19e30eacc9138bc3c672075d33b6299 GIT binary patch literal 1056 zcmeH`T}u>E0EQ`P0AgF-~n}}$O+LnQ2T!`@`nnNGc zwt`KfOEbmhR4&b4Y>XF4#|vZ3w#H~-G&VWeUYrXrMiQFrKXlpi10HxEc$-=p>s%d9 z!bw;JVJ%^tLU2;CEz4f9R)G_W6k?UIXjxdFRP`wpBV^mQF|An`8*vCHG;p$ebt98EZ#;qiOe{HF>J5c7~AG7GE+KAVKr$$<8fO4vjx+cV_j!wS!70S;1~v>L)Jqrn99`2iS` zM8V+0fD}lYApxV}CF~jW(LsU@15wri1NlJ^h=^Jo(lQNRuu4=4L`gWQk_^qtfMiJ5 ziJF?@HEc)AW&i&9ioh+<~r>{*hWcPiHOvd zRudt8PD2Q*GFGPp`UKYF2I-}M;Pd!ty2o>{!^MXJ)F5Tfn#6zpMS-1vC4av_IBa5# zV{7xPVK;XMj5@p@hWpaXcU*3scs1YMpIvODWcJJZ3!fa6Nf1CredaHWOd9A;>p}*`=W#E3z1xMe(-TOvohDX-*SDfAc zBRDUomt?;_OvJ{XrsZwO5vm6w7u$>LF8!=^mOHra)R&i6*Kn1af^PoH`Sm47hq~&C Gy?+4M?v@$= literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/TOC.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/TOC.css new file mode 100644 index 0000000..a219886 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/TOC.css @@ -0,0 +1,141 @@ +/* File : TOC.css +// Author : Eric Woodruff (Eric@EWoodruff.us) +// Updated : 01/26/2014 +// +// Style sheet for the table of contents +*/ + +* { + margin: 0px 0px 0px 0px; + padding: 0px 0px 0px 0px; +} + +body { + font-family: Verdana, Arial, sans-serif; + font-size: 9pt; + background-color: #6699CC; + color: White; + overflow: hidden; +} + +input { + font-size: 8.5pt; +} + +img { + border: 0; + margin-left: 5px; + margin-right: 2px; +} + +img.TreeNodeImg { + cursor: pointer; +} + +img.TOCLink { + cursor: pointer; + margin-left: 0; + margin-right: 0; +} + +a.SelectedNode, a.UnselectedNode { + color: black; + text-decoration: none; + padding: 1px 3px 1px 3px; + white-space: nowrap; +} + +a.SelectedNode { + background-color: #ffffff; + border: solid 1px #999999; + padding: 0px 2px 0px 2px; +} + +a.UnselectedNode:hover, a.SelectedNode:hover { + background-color: #cccccc; + border: solid 1px #999999; + padding: 0px 2px 0px 2px; +} + +.Visible { + display: block; + margin-left: 14px; +} + +.Hidden { + display: none; +} + +.Tree { + background-color: #ffffff; + color: Black; + width: 300px; + overflow: auto; +} + +.TreeNode, .TreeItem { + white-space: nowrap; + margin: 2px 2px 2px 2px; +} + +.TOCDiv { + position: relative; + float: left; + width: 300px; + height: 100%; +} + +.TOCSizer { + clear: none; + float: left; + width: 10px; + height: 100%; + background-color: #6699CC; + background-image: url("Splitter.gif"); + background-position: center center; + background-repeat: no-repeat; + position: relative; + cursor: w-resize; +} + +.TopicContent { + position: relative; + float: right; + background-color: white; + height: 100%; +} + +.SearchOpts { + padding: 5px 5px 0px 5px; + background-color: #d3d3d3; + color: black; + width: 300px; +} + +.NavOpts { + padding: 5px 5px 0px 5px; + background-color: #d3d3d3; + color: black; + width: 300px; +} + +.IndexOpts { + padding: 5px 5px 0px 5px; + background-color: #d3d3d3; + color: black; + width: 300px; +} + +.IndexItem { + white-space: nowrap; + margin: 2px 2px 2px 2px; +} + +.IndexSubItem { + white-space: nowrap; + margin: 2px 2px 2px 12px; +} + +.PaddedText { + margin: 10px 10px 10px 10px; +} diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/TOC.js b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/TOC.js new file mode 100644 index 0000000..9cf5209 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/TOC.js @@ -0,0 +1,906 @@ +//=============================================================================================================== +// System : Sandcastle Help File Builder +// File : TOC.js +// Author : Eric Woodruff (Eric@EWoodruff.us) +// Updated : 03/26/2014 +// Note : Copyright 2006-2014, Eric Woodruff, All rights reserved +// +// This file contains the methods necessary to implement a simple tree view for the table of content with a +// resizable splitter and Ajax support to load tree nodes on demand. It also contains the script necessary to do +// full-text searches. +// +// This code is published under the Microsoft Public License (Ms-PL). A copy of the license should be +// distributed with the code and can be found at the project website: https://GitHub.com/EWSoftware/SHFB. This +// notice, the author's name, and all copyright notices must remain intact in all applications, documentation, +// and source files. +// +// Version Date Who Comments +// ============================================================================================================== +// 1.3.0.0 09/12/2006 EFW Created the code +// 1.4.0.2 06/15/2007 EFW Reworked to get rid of frame set and to add support for Ajax to load tree nodes on +// demand. +// 1.5.0.0 06/24/2007 EFW Added full-text search capabilities +// 1.6.0.7 04/01/2008 EFW Merged changes from Ferdinand Prantl to add a website keyword index. Added support +// for "topic" query string option. +// 1.9.4.0 02/21/2012 EFW Merged code from Thomas Levesque to show direct link and support other page types +// like PHP. +// 1.9.5.0 07/25/2012 EFW Made changes to support IE 10. +// 1.9.8.0 07/26/2013 EFW Merged changes from Dave Dansey to sync to TOC when the topic URL parameter is used +//=============================================================================================================== + +// IE and Chrome flags +var isIE = (navigator.userAgent.indexOf("MSIE") >= 0); +var isIE10OrLater = /MSIE 1\d\./.test(navigator.userAgent); +var isChrome = (navigator.userAgent.indexOf("Chrome") >= 0); + +// Page extension +var pageExtension = ".aspx"; + +// Minimum width of the TOC div +var minWidth = 100; + +// Elements and sizing info +var divTOC, divSizer, topicContent, divNavOpts, divSearchOpts, divSearchResults, divIndexOpts, divIndexResults, + divTree, docBody, maxWidth, offset, txtSearchText, chkSortByTitle; + +// Last node selected +var lastNode, lastSearchNode, lastIndexNode; + +// Last page with keyword index +var currentIndexPage = 0; + +// XML Doc of the TOC +var xmlTOCDoc + +//============================================================================ + +// Initialize the tree view and resize the content. Pass it the page extension to use (i.e. ".aspx") +// for loading TOC element, index keywords, searching, etc. +function Initialize(extension) +{ + docBody = document.getElementsByTagName("body")[0]; + divTOC = document.getElementById("TOCDiv"); + divSizer = document.getElementById("TOCSizer"); + topicContent = document.getElementById("TopicContent"); + divNavOpts = document.getElementById("divNavOpts"); + divSearchOpts = document.getElementById("divSearchOpts"); + divSearchResults = document.getElementById("divSearchResults"); + divIndexOpts = document.getElementById("divIndexOpts"); + divIndexResults = document.getElementById("divIndexResults"); + divTree = document.getElementById("divTree"); + txtSearchText = document.getElementById("txtSearchText"); + chkSortByTitle = document.getElementById("chkSortByTitle"); + + // Set the page extension if specified + if(typeof(extension) != "undefined" && extension != "") + pageExtension = extension; + + // The sizes are bit off in FireFox + if(!isIE) + divNavOpts.style.width = divSearchOpts.style.width = divIndexOpts.style.width = 292; + + ResizeTree(); + SyncTOC(); + + topicContent.onload = SyncTOC; + + // Use an alternate default page if a topic is specified in the query string + var queryString = document.location.search; + + if(queryString != "") + { + var idx, options = queryString.split(/[\?\=\&]/); + + for(idx = 0; idx < options.length; idx++) + if(options[idx] == "topic" && idx + 1 < options.length) + { + // Don't allow javascript, or references outside the current site + if(options[idx + 1].match(/^\w[\w\/.-]*$/)) + topicContent.src = options[idx + 1]; + break; + } + } +} + +//============================================================================ +// Navigation and expand/collapse code + +// Synchronize the table of content with the selected page if possible +function SyncTOC() +{ + var idx, anchor, base, href, url, anchors, treeNode, saveNode; + + base = window.location.href; + base = base.substr(0, base.lastIndexOf("/") + 1); + + if(base.substr(0, 5) == "file:" && base.substr(0, 8) != "file:///") + base = base.replace("file://", "file:///"); + + url = GetCurrentUrl(); + + if(url == "") + return false; + + if(url.substr(0, 5) == "file:" && url.substr(0, 8) != "file:///") + url = url.replace("file://", "file:///"); + + while(true) + { + anchors = divTree.getElementsByTagName("A"); + anchor = null; + + for(idx = 0; idx < anchors.length; idx++) + { + href = anchors[idx].href; + + if(href.substring(0, 7) != 'http://' && href.substring(0, 8) != 'https://' && + href.substring(0, 7) != 'file://') + href = base + href; + + if(href == url) + { + anchor = anchors[idx]; + break; + } + } + + if(anchor == null) + { + // If it contains a "#", strip anything after that and try again + if(url.indexOf("#") != -1) + { + url = url.substr(0, url.indexOf("#")); + continue; + } + + LoadTOC(url); + return; + } + + break; + } + + // If found, select it and find the parent tree node + SelectNode(anchor); + saveNode = anchor; + lastNode = null; + + while(anchor != null) + { + if(anchor.className == "TreeNode") + { + treeNode = anchor; + break; + } + + anchor = anchor.parentNode; + } + + // Expand it and all of its parents + while(anchor != null) + { + Expand(anchor); + + anchor = anchor.parentNode; + + while(anchor != null) + { + if(anchor.className == "TreeNode") + break; + + anchor = anchor.parentNode; + } + } + + lastNode = saveNode; + + // Scroll the node into view + var windowTop = lastNode.offsetTop - divTree.offsetTop - divTree.scrollTop; + var windowBottom = divTree.clientHeight - windowTop - lastNode.offsetHeight; + + if(windowTop < 0) + divTree.scrollTop += windowTop - 30; + else + if(windowBottom < 0) + divTree.scrollTop -= windowBottom - 30; +} + +// Search an array to see if it contains the given object +function Contains(a, obj) +{ + for(var i = 0; i < a.length; i++) + if(a[i] === obj) + return true; + + return false; +} + +// Get the parent TOC IDs from the TOC XML file +function GetParentTOCIds(target) +{ + if(xmlTOCDoc == null) + { + // Load the TOC XML + try + { + var xmlhttp = GetXmlHttpRequest(); + xmlhttp.open("GET", "WebTOC.xml", false); + xmlhttp.send(); + + xmlTOCDoc = xmlhttp.responseXML; + } + catch(e) + { +// alert(e.message); + } + + if(xmlTOCDoc == null) + return new Array(); + } + + // Get all TOC nodes + x = xmlTOCDoc.getElementsByTagName("HelpTOCNode"); + + // Iterate nodes looking for the target + var targetNode = null; + + for(i = 0; i < x.length; i++) + { + var id = x[i].getAttribute('Url'); + + if(id != null) + { + id = id.substring(id.lastIndexOf("/") + 1, id.length - (id.length - id.lastIndexOf("."))); + + if(id == target) + { + targetNode = x[i]; + break; + } + } + } + + // Build an array of parent ids of the target node + var ids = new Array(); + + if(targetNode != null) + { + var index = 0; + + while(targetNode.parentNode.tagName == "HelpTOCNode") + { + targetNode = targetNode.parentNode; + ids[index] = targetNode.getAttribute('Id'); + index = index + 1; + } + } + + return ids +} + +// Load the TOC and expand all parent nodes down to the given entry +function LoadTOC(url) +{ + // Extract the target id from the url + var target = url.substring(url.lastIndexOf("/") + 1, url.length - (url.length - url.lastIndexOf("."))); + + // Get an array of parent id's + var idList = GetParentTOCIds(target); + + var divIdx, childIdx, img, divs = document.getElementsByTagName("DIV"); + var childNodes, child, div; + + // Loop through all DIV tags, looking for the next one to lazy-load + for(divIdx = 0; divIdx < divs.length; divIdx++) + if(divs[divIdx].className == "Hidden" || divs[divIdx].className == "Visible") + { + childNodes = divs[divIdx].parentNode.childNodes; + + for(childIdx = 0; childIdx < childNodes.length; childIdx++) + { + child = childNodes[childIdx]; + + if(child.className == "TreeNodeImg") + img = child; + + if(child.className == "Hidden" || child.className == "Visible") + { + div = child; + break; + } + } + + if(div.className == "Hidden" && Contains(idList,div.id)) + { + div.className = "Visible"; + img.src = "Expanded.gif"; + + if(div.innerHTML == "") + FillNodeAndTrySyncTOC(div) + } + } +} + +// Lazy load the child TOC nodes and re-try to SyncTOC afterwards (if the TOC still can't be synced the process +// will run again to expand the next parent down). +function FillNodeAndTrySyncTOC(div) +{ + var xmlHttp = GetXmlHttpRequest(), now = new Date(); + + if(xmlHttp == null) + { + div.innerHTML = "XML HTTP request not supported!"; + return; + } + + div.innerHTML = "Loading..."; + + // Add a unique hash to ensure it doesn't use cached results + xmlHttp.open("GET", "FillNode" + pageExtension + "?Id=" + div.id + "&hash=" + now.getTime(), true); + + xmlHttp.onreadystatechange = function() + { + if(xmlHttp.readyState == 4) + { + div.innerHTML = xmlHttp.responseText; + + SyncTOC(); + } + } + + xmlHttp.send(null) +} + +// Get the currently loaded URL from the IFRAME +function GetCurrentUrl() +{ + var base, url = ""; + + try + { + url = window.frames["TopicContent"].document.URL.replace(/\\/g, "/"); + } + catch(e) + { + // If this happens the user probably navigated to another frame set that didn't make itself the topmost + // frame set and we don't have control of the other frame anymore. In that case, just reload our index + // page. + base = window.location.href; + base = base.substr(0, base.lastIndexOf("/") + 1); + + // Chrome is too secure and won't let you access frame URLs when running from the file system unless + // you run Chrome with the "--disable-web-security" command line option. + if(isChrome && base.substr(0, 5) == "file:") + { + alert("Chrome security prevents access to file-based frame URLs. As such, the TOC will not work " + + "with index.html. Either run this website on a web server, run Chrome with the " + + "'--disable-web-security' command line option, or use FireFox or Internet Explorer."); + + return ""; + } + + if(base.substr(0, 5) == "file:" && base.substr(0, 8) != "file:///") + base = base.replace("file://", "file:///"); + + // Use lowercase on name for case-sensitive servers + if(base.substr(0, 5) == "file:") + top.location.href = base + "index.html"; + else + top.location.href = base + "index" + pageExtension; + } + + return url; +} + +// Expand or collapse all nodes +function ExpandOrCollapseAll(expandNodes) +{ + var divIdx, childIdx, img, divs = document.getElementsByTagName("DIV"); + var childNodes, child, div, link, img; + + for(divIdx = 0; divIdx < divs.length; divIdx++) + if(divs[divIdx].className == "Hidden" || divs[divIdx].className == "Visible") + { + childNodes = divs[divIdx].parentNode.childNodes; + + for(childIdx = 0; childIdx < childNodes.length; childIdx++) + { + child = childNodes[childIdx]; + + if(child.className == "TreeNodeImg") + img = child; + + if(child.className == "Hidden" || child.className == "Visible") + { + div = child; + break; + } + } + + if(div.className == "Visible" && !expandNodes) + { + div.className = "Hidden"; + img.src = "Collapsed.gif"; + } + else + if(div.className == "Hidden" && expandNodes) + { + div.className = "Visible"; + img.src = "Expanded.gif"; + + if(div.innerHTML == "") + FillNode(div, true) + } + } +} + +// Toggle the state of the specified node +function Toggle(node) +{ + var i, childNodes, child, div, link; + + childNodes = node.parentNode.childNodes; + + for(i = 0; i < childNodes.length; i++) + { + child = childNodes[i]; + + if(child.className == "Hidden" || child.className == "Visible") + { + div = child; + break; + } + } + + if(div.className == "Visible") + { + div.className = "Hidden"; + node.src = "Collapsed.gif"; + } + else + { + div.className = "Visible"; + node.src = "Expanded.gif"; + + if(div.innerHTML == "") + FillNode(div, false) + } +} + +// Expand the selected node +function Expand(node) +{ + var i, childNodes, child, div, img; + + // If not valid, don't bother + if(GetCurrentUrl() == "") + return false; + + if(node.tagName == "A") + childNodes = node.parentNode.childNodes; + else + childNodes = node.childNodes; + + for(i = 0; i < childNodes.length; i++) + { + child = childNodes[i]; + + if(child.className == "TreeNodeImg") + img = child; + + if(child.className == "Hidden" || child.className == "Visible") + { + div = child; + break; + } + } + + if(lastNode != null) + lastNode.className = "UnselectedNode"; + + div.className = "Visible"; + img.src = "Expanded.gif"; + + if(node.tagName == "A") + { + node.className = "SelectedNode"; + lastNode = node; + } + + if(div.innerHTML == "") + FillNode(div, false) + + return true; +} + +// Set the style of the specified node to "selected" +function SelectNode(node) +{ + // If not valid, don't bother + if(GetCurrentUrl() == "") + return false; + + if(lastNode != null) + lastNode.className = "UnselectedNode"; + + node.className = "SelectedNode"; + lastNode = node; + + return true; +} + +//============================================================================ +// Ajax-related code used to fill the tree nodes on demand + +function GetXmlHttpRequest() +{ + var xmlHttp = null; + + // If IE7, Mozilla, Safari, etc., use the native object. Otherwise, use the ActiveX control for IE5.x and IE6. + if(window.XMLHttpRequest) + xmlHttp = new XMLHttpRequest(); + else + if(window.ActiveXObject) + xmlHttp = new ActiveXObject("MSXML2.XMLHTTP.3.0"); + + return xmlHttp; +} + +// Perform an AJAX-style request for the contents of a node and put the contents into the empty div +function FillNode(div, expandChildren) +{ + var xmlHttp = GetXmlHttpRequest(), now = new Date(); + + if(xmlHttp == null) + { + div.innerHTML = "XML HTTP request not supported!"; + return; + } + + div.innerHTML = "Loading..."; + + // Add a unique hash to ensure it doesn't use cached results + xmlHttp.open("GET", "FillNode" + pageExtension + "?Id=" + div.id + "&hash=" + now.getTime(), true); + + xmlHttp.onreadystatechange = function() + { + if(xmlHttp.readyState == 4) + { + div.innerHTML = xmlHttp.responseText; + + if(expandChildren) + ExpandOrCollapseAll(true); + } + } + + xmlHttp.send(null) +} + +//============================================================================ +// Resizing code + +// Resize the tree div so that it fills the document body +function ResizeTree() +{ + var y, newHeight; + + if(self.innerHeight) // All but IE + y = self.innerHeight; + else // IE - Strict + if(document.documentElement && document.documentElement.clientHeight) + y = document.documentElement.clientHeight; + else // Everything else + if(document.body) + y = document.body.clientHeight; + + newHeight = y - parseInt(divNavOpts.style.height, 10) - 6; + + if(newHeight < 50) + newHeight = 50; + + divTree.style.height = newHeight; + + newHeight = y - parseInt(divSearchOpts.style.height, 10) - 6; + + if(newHeight < 100) + newHeight = 100; + + divSearchResults.style.height = newHeight; + + newHeight = y - parseInt(divIndexOpts.style.height, 10) - 6; + + if(newHeight < 25) + newHeight = 25; + + divIndexResults.style.height = newHeight; + + // Resize the content div + ResizeContent(); +} + +// Resize the content div +function ResizeContent() +{ + // IE 10 sizes the frame like FireFox and Chrome + if(isIE && !isIE10OrLater) + maxWidth = docBody.clientWidth - 1; + else + maxWidth = docBody.clientWidth - 4; + + topicContent.style.width = maxWidth - (divSizer.offsetLeft + divSizer.offsetWidth); + maxWidth -= minWidth; +} + +// This is called to prepare for dragging the sizer div +function OnMouseDown(event) +{ + var x; + + // Make sure the splitter is at the top of the z-index + divSizer.style.zIndex = 5000; + + // The content is in an IFRAME which steals mouse events so hide it while resizing + topicContent.style.display = "none"; + + if(isIE) + x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft; + else + x = event.clientX + window.scrollX; + + // Save starting offset + offset = parseInt(divSizer.style.left, 10); + + if(isNaN(offset)) + offset = 0; + + offset -= x; + + if(isIE) + { + document.attachEvent("onmousemove", OnMouseMove); + document.attachEvent("onmouseup", OnMouseUp); + window.event.cancelBubble = true; + window.event.returnValue = false; + } + else + { + document.addEventListener("mousemove", OnMouseMove, true); + document.addEventListener("mouseup", OnMouseUp, true); + event.preventDefault(); + } +} + +// Resize the TOC and content divs as the sizer is dragged +function OnMouseMove(event) +{ + var x, pos; + + // Get cursor position with respect to the page + if(isIE) + x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft; + else + x = event.clientX + window.scrollX; + + left = offset + x; + + // Adjusts the width of the TOC divs + pos = (event.clientX > maxWidth) ? maxWidth : (event.clientX < minWidth) ? minWidth : event.clientX; + + divTOC.style.width = divSearchResults.style.width = divIndexResults.style.width = divTree.style.width = pos; + + if(!isIE) + pos -= 8; + + divNavOpts.style.width = divSearchOpts.style.width = divIndexOpts.style.width = pos; + + // Resize the content div to fit in the remaining space + ResizeContent(); +} + +// Finish the drag operation when the mouse button is released +function OnMouseUp(event) +{ + if(isIE) + { + document.detachEvent("onmousemove", OnMouseMove); + document.detachEvent("onmouseup", OnMouseUp); + } + else + { + document.removeEventListener("mousemove", OnMouseMove, true); + document.removeEventListener("mouseup", OnMouseUp, true); + } + + // Show the content div again + topicContent.style.display = "inline"; +} + +//============================================================================ +// Search code + +function ShowHideSearch(show) +{ + if(show) + { + divNavOpts.style.display = divTree.style.display = "none"; + divSearchOpts.style.display = divSearchResults.style.display = ""; + } + else + { + divSearchOpts.style.display = divSearchResults.style.display = "none"; + divNavOpts.style.display = divTree.style.display = ""; + } +} + +// When enter is hit in the search text box, do the search +function OnSearchTextKeyPress(evt) +{ + if(evt.keyCode == 13) + { + PerformSearch(); + return false; + } + + return true; +} + +// Perform a keyword search +function PerformSearch() +{ + var xmlHttp = GetXmlHttpRequest(), now = new Date(); + + if(xmlHttp == null) + { + divSearchResults.innerHTML = "XML HTTP request not supported!"; + return; + } + + divSearchResults.innerHTML = "Searching..."; + + // Add a unique hash to ensure it doesn't use cached results + xmlHttp.open("GET", "SearchHelp" + pageExtension + "?Keywords=" + txtSearchText.value + + "&SortByTitle=" + (chkSortByTitle.checked ? "true" : "false") + + "&hash=" + now.getTime(), true); + + xmlHttp.onreadystatechange = function() + { + if(xmlHttp.readyState == 4) + { + divSearchResults.innerHTML = xmlHttp.responseText; + + lastSearchNode = divSearchResults.childNodes[0].childNodes[1]; + + while(lastSearchNode != null && lastSearchNode.tagName != "A") + lastSearchNode = lastSearchNode.nextSibling; + + if(lastSearchNode != null) + { + SelectSearchNode(lastSearchNode); + topicContent.src = lastSearchNode.href; + } + } + } + + xmlHttp.send(null) +} + +// Set the style of the specified search result node to "selected" +function SelectSearchNode(node) +{ + if(lastSearchNode != null) + lastSearchNode.className = "UnselectedNode"; + + node.className = "SelectedNode"; + lastSearchNode = node; + + return true; +} + +//============================================================================ +// KeyWordIndex code + +function ShowHideIndex(show) +{ + if(show) + { + PopulateIndex(currentIndexPage); + + divNavOpts.style.display = divTree.style.display = "none"; + divIndexOpts.style.display = divIndexResults.style.display = ""; + } + else + { + divIndexOpts.style.display = divIndexResults.style.display = "none"; + divNavOpts.style.display = divTree.style.display = ""; + } +} + +// Populate keyword index +function PopulateIndex(startIndex) +{ + var xmlHttp = GetXmlHttpRequest(), now = new Date(); + var firstNode; + + if(xmlHttp == null) + { + divIndexResults.innerHTML = "XML HTTP request not supported!"; + return; + } + + divIndexResults.innerHTML = "Loading keyword index..."; + + // Add a unique hash to ensure it doesn't use cached results + xmlHttp.open("GET", "LoadIndexKeywords" + pageExtension + "?StartIndex=" + startIndex + + "&hash=" + now.getTime(), true); + + xmlHttp.onreadystatechange = function() + { + if(xmlHttp.readyState == 4) + { + divIndexResults.innerHTML = xmlHttp.responseText; + + if(startIndex > 0) + { + firstNode = divIndexResults.childNodes[1]; + + if(firstNode != null && !firstNode.innerHTML) + firstNode = divIndexResults.childNodes[2]; + } + else + firstNode = divIndexResults.childNodes[0]; + + if(firstNode != null) + lastIndexNode = firstNode.childNodes[0]; + + while(lastIndexNode != null && lastIndexNode.tagName != "A") + lastIndexNode = lastIndexNode.nextSibling; + + if(lastIndexNode != null) + { + SelectIndexNode(lastIndexNode); + topicContent.src = lastIndexNode.href; + } + + currentIndexPage = startIndex; + } + } + + xmlHttp.send(null) +} + +// Set the style of the specified keyword index node to "selected" +function SelectIndexNode(node) +{ + if(lastIndexNode != null) + lastIndexNode.className = "UnselectedNode"; + + node.className = "SelectedNode"; + lastIndexNode = node; + + return true; +} + +// Changes the current page with keyword index forward or backward +function ChangeIndexPage(direction) +{ + PopulateIndex(currentIndexPage + direction); + + return false; +} + +// Show a direct link to the currently displayed topic +function ShowDirectLink() +{ + var url = GetCurrentUrl(); + var base = window.location.href; + + if(base.indexOf("?") > 0) + base = base.substr(0, base.indexOf("?") + 1); + + base = base.substr(0, base.lastIndexOf("/") + 1); + + var relative = url.substr(base.length); + + // Using prompt lets the user copy it from the text box + prompt("Direct link", base + "?topic=" + relative); +} diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Web.Config b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Web.Config new file mode 100644 index 0000000..f0f3e6c --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/Web.Config @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/favicon.ico b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..2b9963f814281f0b1b7bb661be8d579191b59a42 GIT binary patch literal 25094 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 literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/html/GeneralError.htm b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/html/GeneralError.htm new file mode 100644 index 0000000..a47b756 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/html/GeneralError.htm @@ -0,0 +1,24 @@ + + + + + + + + + General Error + + + + + +

    +

    + {@HtmlEncProductTitle} +

    + +

    We're sorry, a general error has occurred.

    +

    Please try to load the page again. If the error persists, please contact the site administrator.

    +
    + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/html/PageNotFound.htm b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/html/PageNotFound.htm new file mode 100644 index 0000000..e982542 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/html/PageNotFound.htm @@ -0,0 +1,25 @@ + + + + + + + + + Page Not Found + + + + + +
    +

    + {@HtmlEncProductTitle} +

    + +

    We're sorry, the page you requested cannot be found.

    +

    The URL might be misspelled or the page you are looking for is no longer available. If you entered +the web address, check that it doesn't contain a typo.

    +
    + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/index.html b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/index.html new file mode 100644 index 0000000..78440bc --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/index.html @@ -0,0 +1,66 @@ + + + + +{@HtmlEncHelpTitle} - Table of Content + + + + + + +
    + +
    + + + + + + + + + + + +
    +{@HtmlTOC} +
    + +
    + +
    + + + +
    + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/index.php b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/index.php new file mode 100644 index 0000000..ba39e1e --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/index.php @@ -0,0 +1,110 @@ + + + + +{@HtmlEncHelpTitle} - Table of Content + + + + + + +
    + +
    + + + + + + + + + + + +
    +load('WebTOC.xml'); +$xpath = new DOMXPath($toc); +$nodes = $xpath->query("/HelpTOC/*"); +foreach($nodes as $node) +{ + $id = $node->getAttribute("Id"); + $url = $node->getAttribute("Url"); + $title = $node->getAttribute("Title"); + if (empty($url)) + { + $url = "#"; + $target = ""; + } + else + { + $target = " target=\"TopicContent\""; + } + + if ($node->hasChildNodes()) + { +?> +
    + + > + +
    + +
    + + > +
    + +
    + +
    + +
    + + + +
    + + + + \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/scripts/clipboard.min.js b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/scripts/clipboard.min.js new file mode 100644 index 0000000..580433f --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/Web/scripts/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v1.5.12 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Clipboard=t()}}(function(){var t,e,n;return function t(e,n,o){function i(a,c){if(!n[a]){if(!e[a]){var s="function"==typeof require&&require;if(!c&&s)return s(a,!0);if(r)return r(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var u=n[a]={exports:{}};e[a][0].call(u.exports,function(t){var n=e[a][1][t];return i(n?n:t)},u,u.exports,t,e,n,o)}return n[a].exports}for(var r="function"==typeof require&&require,a=0;ao;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],i=[];if(o&&e)for(var r=0,a=o.length;a>r;r++)o[r].fn!==e&&o[r].fn._!==e&&i.push(o[r]);return i.length?n[t]=i:delete n[t],this}},e.exports=o},{}],8:[function(e,n,o){!function(i,r){if("function"==typeof t&&t.amd)t(["module","select"],r);else if("undefined"!=typeof o)r(n,e("select"));else{var a={exports:{}};r(a,i.select),i.clipboardAction=a.exports}}(this,function(t,e){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=n(e),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},a=function(){function t(t,e){for(var n=0;nbw-vBLDh*rjvI{K}%vsHm@h_?tw;Z7`jJPwSdcxnw$~gG!RFk%*O*|I1~?_r=Vw zW31k*ZJTPZXD-TrHg274%78fS{q4kPEz6ow%IwOa&Zb~yd6;xJgr$h)xL?S8H^*){ zp<^_vpM8wGik;1zgtUU`!F9`^RlDZ8o2#KvOh%~ItUx<8m&TTvYdD#5KgoSI$$&Y` zo>9tvHrAF=$caVbrC^oCleOlxnP@f1x`BYNevGeAzwg4P)T&`vMTm%qrD-ymZaeFe zLb8BL$&X25Vq(gVN10|b$9Xr%dpF$l+yDRn000000000000000A^8LW004UcEC2ui z01yBW000N6fO~>_1}SLPB)mW!_w<;6q)BF&{is;nBp+15yFz aYzYIwMwU7PNbLy_pn!w|0x}K?1OPh{BoK)J literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/CodeExample.png b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/CodeExample.png new file mode 100644 index 0000000000000000000000000000000000000000..a3b9fba4cc5f29460d711dddb32b79b85783af9a GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!AMUR#}EtuMf8pRk0XW?`S;ryG~}Z?XkE$(i7NV%yAs7l(t? nuW2~*F(>VD=(TZ|HfE5{S-0gp>+@4UOBg&|{an^LB{Ts5mnuH4 literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/alert_caution.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/alert_caution.gif new file mode 100644 index 0000000000000000000000000000000000000000..a3139226d6d333a00a096d7e633d2973b44c7ed4 GIT binary patch literal 519 zcmZ?wbhEHb77CO2`xuY~_+O&ec>af{O+#esg9o!=7;ljJHKk)y5=7>nH&rej}ACsuf(@oEu z_WuvZ?URiE|1m`SqoqcDM@`T#3?>`v6 z-{<`OZQK8s46~+fTF~p+Qdf57l*orGY=3?n_oPJqY4y1)y=S!(cD8#fEtun0@3u$ifQ**deb=*Tk2a5{SFDRUc$SeSdt@!CtWvfBxAFtane UDwrDaS&2HR37F_hH!@fQ0P@Y4+5i9m literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/alert_note.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/alert_note.gif new file mode 100644 index 0000000000000000000000000000000000000000..3393af356494b91fbbe6a6bc54591a05bca980f6 GIT binary patch literal 123 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 literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/footer_slice.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/footer_slice.gif new file mode 100644 index 0000000000000000000000000000000000000000..c3e2da35a92ec9c1e629331f258ed7dc1dd61145 GIT binary patch literal 146 zcmZ?wbhEHbWMt4}IKsg2>eZ{~&!2z!^5y&Y?;k#X`2FY4yLaz?|Ni~*<*V1PU;p^= zpaYTx*~P#ruHecl b#H2Fep+N5j9)uy!FjxZsYBfp* literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privclass.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privclass.gif new file mode 100644 index 0000000000000000000000000000000000000000..0939694ce08ad44508f6f017b68e46f0f22377b9 GIT binary patch literal 621 zcmZ?wbhEHb6krfwc;?UW|NsB|hUt&r{rL9oM)d3(_aDFd`{wV%RU+Tt-(Iu*bdPSY zqjyAO5)Xs%%*W4OT}r)t^1|KQ1$X{_`1|40mlNl1p1OGN*VKPj>%-QMrvoZ0aqv=U>zv((uk1Z`&AIsGhXbbm$u+t4({AM4 zoUwe*+pV&@k6t-)=GK>oZB<oaqPkBNogHUHno4%^Ngbh!J5dZ96zXj&rOBmSr#rWBn`?Qta4AyNBlN99gXZF;U z(BWY`VYPQZo4>HAqB^H51EW8i_+6gJ+{k9ar8DD%q6<$7gRGgrgar((tRfl{0+c)& nCbWOC3iz+epk2~OYT literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privdelegate.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privdelegate.gif new file mode 100644 index 0000000000000000000000000000000000000000..d3aa8a65ef5277c6682f106de956da036c50d363 GIT binary patch literal 1045 zcmZ?wbhEHb6krfw_&$x{|NsBD3-0`y@q4k|5=ZZdhfm);e)ek3_S5^0UpsN`=JQu? zFQs0-|M=CZi}!XMxOD0IqaNMfjl0hJCs*%1c5Tz{a|>10-$^W=rQx9>k+>ALFmyU(xQe4H?EgI8Snr_bMJEZ?*H@RcuL ze=OZ_+&{Ty;o2jswjSAiIO7^wyn6fTZ3ixeXEp6UdL_BEH>IrC+CTH&qnA?_ zZr-r_?BoSIFQ;Fbx_Ik^d0S4LzjJZVqo>#39XfGw&#H^BC%mcZTCnHn)n99Wox5`H z=da%fPF&x-_rl%7FP}Vr9h%+{U)V8w*_Mra&Odl`_2jZ^p&5-&p1+&CaMzAQm*=cF zU=x^q`R1Lk-+rv!ekLNjxp&UC=}Y#m-gbJC-Qv>LIg{q^j4SB0@XI)R`PRnW=VJ5Q zXDr?K;^v1fd(Y(7PdmEh)~oK}Z+;!hSv z28L-2Iv@i;d4hrC6N4_N%!&qId44W7EtMCGCW#wQIi?e0vCxHsp-kl9Op6K4Vs;D+ zcRp^uaCVY-@DqoX8Ynj67>A_%qWsZWPnuD}Kw%&~mCC`=#izx;#2uhqQ1RGQZ~`_sezFVAOg+I?={@oQh6&3J#O_0`3qcQ@)kJ)ZdG+03e*WmVnF z^Bd>vIB@CF#g+GVc;49Hc?*VhX^eEL$_I;S?t z;q-yc?{Bw0JskD*+0M2c_oqi=CRPT;=C|KGzkX&z#JAUn!n2y*T&c`&nEqh9%hwnC zj-0t!6=(DDL0?K)@6G+0dyidvbv}Rpw$;g{y)%~Yxxd46$H7ahx1WA_Dm}e?LT>%E z=ORU|^GzS5cL1XHZiY5LXoA)t{s+AtlYi9Tz=Gm|uiP)WbllqpPP+ z)n1a1MVG-Qb@J5dGyP4i^w=yDcg>x@Fn~iQhRG>ed)KlRqDdT#Ok55L&0)4WTUh+8 zU7DCIG@4uk%^kgCje~tTIqkw(n`EO*4C6yN8JXA^6cbM@GzwzkiQs5z?rCOXl94EQ h;J~8BE~;=s>7Yl8atNQ8$3hiOG3k^KQ#n}}tN|oJ0crpM literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privevent.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privevent.gif new file mode 100644 index 0000000000000000000000000000000000000000..30db46df766c1b49bf86b168eaae03052ce8f292 GIT binary patch literal 580 zcmZ?wbhEHb6krfwcoxC%u)XR2<5$m5ME<&1wr2ZjNAHM}7w(?Ac<;oyoByBGKYsS= z!>2EQo@`jK`p~A`=l*@Vx#Pg4eaEjod-~|o^+*5z|L>^sdbOcGw|?5!19>l>J$(7} z{;?esvXVR|%-eGJOka3b)BFnAZ|^Vv{PMV`DW&#T9hkzICOvb-pxf=`s=6a*ZoWIz zncpzIeag~^VDI;PCrob+ez~A=_t7iqfi@{+eH(Y3%?r|f{`lU39rK<(ymj|z)7mD5 zrw^`IbuB!xslq?GCb_hC@3CvEx1X-eaXWu-;f{ls(#t3KCsj|)mk0WVVIY9wPZmZ7 zh6n~7kmaB_VPId_5Yg1!(%ROnB&Vz4>1!6;9>K)JX=TD-E7GpT#LsNOAR{z!GP4+i z=;C(8xe^TKMzh+PI5{=#92lIWnz-2oTv$x)gOr&WT)msw8CiG(d?KWetLrp#Tk1El zSi2t&_h{jAlx1VncGhE1P;F&n{J)Pg~o YNt8WsjZ2WhW2dPS@^dsgL^v3%0lNU+2mk;8 literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privextension.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privextension.gif new file mode 100644 index 0000000000000000000000000000000000000000..51dd267f0f7fa11a657ef51a69cb9159ced8775f GIT binary patch literal 608 zcmZ?wbhEHb6krfwc$Uj>|M9Ey9p}}Y>Kwfz)@(n0{n3wKGk%}Cc< z_}MGFi~}D&eOa*j(7xl>E?s|g`Sz<#yU*=7aOue|7!l#yEE=pbuCOO>kH3nI&$V# zjc)DB39o7_8sE)*uj)OkMz7}o|NlqM+G+UdKH=Bu-=(c{a_gsQ z1uU2rG~KoM((a>IdQJQC8>WYKecrh1?6QF6Z*RPfE9eZ(Xq;m+*QfS@Z~c=GS3ax^ zTJ>w@@5E{UcO1MFKjq)+iEn)CAJ^&CP4Jue`SIu17hjhcRQy`^J9g6Fcl+M0-hSFY zsoJCbCeRHGWC6vWEQ|~cxePiW-Jm#OVBg!2+mtK9sNLMr*(%AH(%Bisn3JRM%%x*_Q%!)u8UTgK6xaX& literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privfield.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privfield.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbf70f7a3fc3875ee62d9a4dacf3a088e60f2eff GIT binary patch literal 574 zcmZ?wbhEHb6krfwcoxXOU_A5w<5$tMZ>-sV+R-~==Gp&`pS{|2ck;sB zs9D$d9ly5Yz@<&Q&uu;O@WZDsC9Cc&SbgZy^+%N(9`8MN?Z}y%6XtD6FP{*e)in3~ zzufw1b5DMnaOB&iXFs-|e^#^Q<&J}w)?fS6ec;Rd3;%W>y&~tgvS#!1OV55@eerwW z>8D3;f7FcHFk|_i)!R>>ef+a_)6>Nl|83lLHm;y^;^B`~T?=Do-)Ne+#58$p#rnq@ z;p=xFzH;Qut;^4U{r>&u-rHZLt#eY!di|5Cv#KYq*?aHM%@6qv)B6s6UU=bOMceF@ zvc9J6ue$cWTYU13e{xOrrl-$8{{H{}Kf|B_ia%Kx85jZ?bU-cw#R&uZ?1sRm=9bpB zHaUZU_EvpM9})YWCR<-wR(BDN9!-B`R#p!gogQ@)DOMGBHHIERZ+1g=D~7d!0-U@? z%mRW;3Q87Rw{bEu3yGSVF)U@oS6M zA3Ad8=A4!LcOSW$UOu6=Z^@K}JJxPL8J*X*|M-=-g3j&xFKyU)V)>?{I}TpXZ~<8FFA!5q?GmgC)b2$HO1z)FWq>|KdHLBV_s-R-W7qZ^xtdtqH)rL+s;-4+F5gKh>zlEBk85Oca%u1E75ir{-(B0g{Nd9# zy|Xv%K71v)w13l{a|_oV*|_WMw*9Ab>!+2r&Z+KNvj6DiBWG>_y~!{@K=CIFBLhP? zgAT}kP@FKZFKY;IYHn$5Yvu6MkYR3b=1}JKwsGk75|9;ZQRHQ1XO;2{7vK;Tv@llE zQ8i=dV%PEww-YrK_mH=CRq&t38YmJjCMfRI!tAads%9?~&cq`ez{u3h9AYkVE}Vyf zQNq@-@4U1N7Z;=E)pj;hOKxsmXSP0WhVKk~l5TxI3@i+?J`E2w7#dhugj6aV4hyoe bg&D1>Sm4~I%pAO=LgC{f*1gV+3=Gx);f>!6 literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privmethod.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privmethod.gif new file mode 100644 index 0000000000000000000000000000000000000000..71f882264291eb056bc55dce1c73f9b7cae1aa4a GIT binary patch literal 603 zcmZ?wbhEHb6krfwc$UHN|NsB{k6)edIDhH-BS-IuHQP_0ICpc??sJcyy*hRA-iJ?L ze$DuO^1|H}0V}UwUGr|~``!6_zJFLf1uPs=8=+o^_@AkcWyykJKdg;o5 zRcp4cO)Tnsaq-2=r>kFIe7)n~r6Xr+a6D*XPzhEogdr`Gor$?uTbJUCqDx;p&H8)4r=Su0A{SY{rsxbq4hpvo3Yb zTvysUr$(=)P^IYQgjc<@*Zx}f``z64DP_I$ZRY>}{pZ*0-%~B7olZY9f7R|9-P$kD zzFf+_TyN0u`SIt=H*SBp^5M;;Hxv9OR%uuJC)eygd}Z&kYjFjgZ*RQ)wfgsm#~*U* zr=^tj{hIlEj?LUh>mU7^|NHgCHwTZbSrxH*!n`dPb1zkO%w4_xbbkF5V7M_*11SDv zVPs&)V9)^>28t5~_8kowP0cN0Opz^}&217)zFjT;OyUj+rW!4Rd|Flv25}MG+;&V} z3=@(B_+7bU)B_m=<@ge%%`?eE&*(~qUwlq@F(Tx>i;Nlc!XZ6ca;`P?Fa5nK| z;ACVKW%g*2m2wwy3o_2xq2V9{v&NLh ymNqX2CINOIi^Cfn7?@djBrFazCbqIDYBX3REMswIvEH(0gHSS;U|S;tgEasMh7D{0 literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privproperty.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privproperty.gif new file mode 100644 index 0000000000000000000000000000000000000000..b1e8074654b3fc0601b0302f1be7b39f5bf5eb7b GIT binary patch literal 1054 zcmZ?wbhEHb6krfw_&$T-|NsAs)*t!*_xJtBuWIMsU$g!6|JQkr-VrCx-Te0d|C%NJ z|KDc#`iGpnaQD>3dpizXdi?CwzT?+6?LK$##HE5n?}9|H1*;ETy8h_kiHi+|F+YC) zd+_viY3rPnvfkYKX@^c;e);mzk;$UQ>Y{gVUU{=ZaB^$$wHr64wgkWb^84*^@73E+ zf4QE%Zbro0!wx@w{k?ZEv8rpKe^T|Gy&(BuL?`9o2b8GLhYo9Mg{CZU6pIo!!;H4vHZhpI+=@Sqfn$b98`JViS z>9P6kH|{<=asK9nd0XypGDaQ4Lh`rPOfGiB|kYwkSxG`b>k*`oNO7)Rg0u+B-# z18g0q&0TV2$JD1!?uTbJ)z&xlObBqCXS85iLwZ6`cTr$+Y44wZ{}xYgc=YVeuU$%d zicHs5>iJt4eERnH>E*U%2iKiDb?DLAsx@mjMEZuOl=c1m{r~U3e{*)seD~}B)7PJ$ zz59LO_{HV>mT0EQ{QLiZegvM@3* z%wW&~X$9p829DnhhMY%Cj-2iAu6$vlInmK)kpr_~;3LCh4M#P#Q*QiBR9>`Hk~>1; z#zz(RF58Sgfryzdj{U;ie_|$HYU1RyEas3fT)cpz)v;7;1EaHA3%^t7xQ zt(lQk$EC6HC36DtS^a6kC&EH94>aBumn&dwYH7?jjd&y?(eQwQiA89WOHal@#wi@3Dl0lR)+n&> P$sO`(a%OdMV6X-N?RS8o literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privstructure.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/privstructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..ed6d1ef68f8736e5c05137be2af0ff7714ddb85b GIT binary patch literal 630 zcmZ?wbhEHb6krfwc$UZT|NsB{k6(RzcjN2h?jGIVhpR-szrX#Y;OUy}ryac`8k2Z_ z@BIDv-H#LJZvJ}l`*!M`Qy1@@ym0sat*<9$h(CVz>ir&_-|zqIIB@CG^+(RdC-)t{ zwqW%k2IHCEUeEn_%=zsWiC@ouZ`ytC_q#uzZe4l1S>nT|FQu(>er^Bt?bY0GYrb7d zy*#gi@9oUD{z=t$my4#9^~M!+KB#{9Vd2N!hp%khb@t2cQqTF1cOShHo8O*N)>pXg zHH@xPxjsT^kdVHrL_XzU(fST zu9>&-#=*NkLo*uhoIn5Zxbw$14}LsZ{^>%@yZhUJzFe1EKP^0~>Dz{HpKp~Oxc4o+ ze8Q^qrg}0wC#Qc1@2^f+LqyxpDEQ|~cc?>!rt)MtzV87gu*Tlfa%EZvr*_GGAsv#WQ z(cRoC%WNv#-qY2a!kl66Ka)XhQXUiQw9FtmQ57yG_N7gFp3D(BYvs9=`MKGZIy{&| zas!=qE3_;~z{nwOo0cu4rD^0GYsjLS9HY&}k>n#O z<^9_#Rm)yEerz82^S71ck}Y`NGQz`RA_YP5iejl$gyCd w0t=&*O2!2Rm&vL;0yA$hJnU(cRXnwYAz4e1RXB9Zfenj}c%OG^WMHrc0AYACZvX%Q literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protclass.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protclass.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f9294292a9b5f94a281de7657b5555d06bb4a96 GIT binary patch literal 600 zcmZ?wbhEHb6krfwc;>?J|NsBT?|$SrO#k-o#@{!8qi5gvaUU(s18H{JnJp2FehrhQA?)+N&>)iqU6Enm=U(5M5fY;zXP32Fyxl50uY&Kx0h7BEa_ z?`}`~_jQeF^42G}kG*|#swZ3i{XYG#uh+de5exJS!%zc?KUo+V7+e^1Kn@4R2?P7q z2A3um22KuUhUTv3Rt|a5j-IYweO2iRO$>saEp2LIin69W%r1i5vwPJSD61@SVc{0$ zW?}BrkT%y`zfo9Rh>wBUOiR|0hv}r@z5^@__Ply>21}VX=$>`4;I(99Gf{H6wt-Kg ziPy=-fn9;?QL_XqqYJM!8#}wmyT^>I0@{ov6%2_E_j}6!DimmZXz1u?W)nFfFy+ks jL+qbB9IhJYjEY8z0)sUGw};FY literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protdelegate.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protdelegate.gif new file mode 100644 index 0000000000000000000000000000000000000000..b209f2d816d78188dbcd93907917d7a0ef34eaa9 GIT binary patch literal 1041 zcmZ?wbhEHb6krfw_&$N*|NsBD3+~+A6ZPXp#$vlAiyQQQ&G>zJNB#3xZ!e`@es@5B z!P>(;y1i#F-}-;v$UnLI#LD>oJSE4_{Mix^8B4gbm`4|&u-s;K7H|8YyZs6doR3x z_j&TdT|a;QzPRU+cYNjj^Xpc+uA07N@6j!{KD@sF_1lk==kIRVefIw2S1Y%i+_-M) z-ecE}pSyD{_tJ!U8y49u{fPP+3%f) zFMoJ(?Q;5+wL8vCUa)iavMt*WUINA!!ziF$2q^w!VPs&Kz@P&%5|k$xINmWRa>{fl zaL=>hVAE3JU}|3=V-}|qvSL}Us7ElH;!KMVf^0?;7;-c>3bamE^yxBiI-JPZ%5C1D zlgXgT(lA?dhsMfcr2~9UzGi0{Ltdygs2goj;e4RvFx{n0&S6)vf3EF6*!Fv!K9+hCZoKv#l4gfF7O*r}nJDO8B1BdLL*QL>%yjiiD@LlaY-SSZH> z@l#x!T?!Tw1r}#TG8VDV9AMK_f%j88HWS`1}G*;p8?0XW=!tN;K2 literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protenumeration.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protenumeration.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc96bb635982abc9d306f219ebdd71d29f95757c GIT binary patch literal 583 zcmZ?wbhEHb6krfwcoxO*cwfNXJyAbyWGrsbORt)`XI}KX1Nx8l`hR;p|JB8!{ye2m zk0*Y4Hsj0lneXqkzPnNX_FB!CXEVRQJ^%Vr>BoDW-`_5)>RI;bVSiQk^1Q~`_jY(b zy0~)tH18W596!9ie`%$~|MNy?78$<2Sp4<%g8arg54O9UKCt=oqt(k=EpDFOI=>_C z^~1B@UY)qPKlAC~sLu~q&1{HRGO_gO(U`_G=gmtdytz{O{&s73q0h$$edSS>Z8`2O znXX@-?fm*?)7KaKUYv;i_jS$9BQxKh=+*iB+9Zb^Gs7O8ZGCe4*rPpu?{7E1 zJe@hOGymnO^yk+$KR=Q3;`Xc`Z%*Ie;n|Zd|Lygmm*=Xh;%pvX-v0XbmZyg!|NsBb zKwqHvlZBCiA&NlUeGH<Cw3dOhd6|LdLB1d>tfmE9rf=H=>LCGe_~~Pf1c9Y zN2i`Wee~h={r~5U{yf?6e(!{TpKh+3o^ba}-}A@!UM^@{)@m^|U;ggVrVlT!J-L1C z-R)^#-)ySPar^!2$G7*FzkmPs?oj7~Znt-@?)5aqoY+)xdVOiOzvlA`ookyEUYv-% zee250RdruquX}!d^YrH6Z=YVqxf{HEdVl$pglFeFPwkt3Y{!I%VDAH)`d=)qdHV2H zN0rz4gA0FtdAw$N*6YVto?c$vlP%wqq4enP)mIzppFX($@9UaRXQte{ac+Kv?2pg) zvXVT$9>{z7?BR!Flm7qz&oIb<;!hSv1_ply9gw>~al*hpvBAHoxuvzO*;ZJ?L_*ch zrrn>JpF`1-!Cax;i&>CWhryd?;$&7A2J6M`@^gI{l(Z*K;^1%>5M?klYT{;7<8%+3`kU9um%8i0?sP{ literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protextension.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protextension.gif new file mode 100644 index 0000000000000000000000000000000000000000..dcd07f5e1a673de3120e3f82e6f8c24f8bcd723b GIT binary patch literal 589 zcmZ?wbhEHb6krfwc$Ua;zT^Cl8yR=^L@jR6yZ-3MV_iN9!Lg_h0dD?)!JI?*07!^J4C$ zcekf`l;3>)@T_a`r57h+f6e|~XHfs-_OS_m6My~sRi$11?bFL;trl$?{)cpY`0(P| z)%>dtImdfV`@X)}RHIk(Y{v7RZ21pYKGf;e?J3w>yyX9{b-&}M{F`Gl_uamCv6KFK zRNVBffAV_bo3O6WH&)F1@c6^Dpy{RRr6o)MKVI`#)q9p!z=9gx+OMzI`P4l;y}s19 z{_#|cX}?zgUKX%?zRmo*GwwY*^UOSc!>^gYUtfHkIPL$3s~`S-UE@>x;Pd0ppB{Yv z^6X2WTmSa1mX$%Pe$D@VG3(O*|Nj|i1{8m?FfuSCGU$M80L2Ld`>KY-rbJ!_hvtsX zRu_iI&Q2o+OEX)BsQzXKQC|)Y5r*g)iGDm>3LL=(%8SILmd1-a>Mx2*&^8H(u`pKg zv~q6dWA);!TW$=&E7f#Oe`l$Rxz<6f%QVnvsc#lR2=N-PEp0 zi(iQGm23xlsCTmx6C<+(o1{U3LTkHh1k2B0^Nc1&4w;G#3JX3QZsO>Wahl*1IH9w< MpF`rM1P6mP0LI|@H~;_u literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protfield.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protfield.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ae6833e0821dae813c941500d1e12a88c7c334f GIT binary patch literal 570 zcmZ?wbhEHb6krfwc;>;tU_A5x|NlR3WZc~owYWhqdiIT(XaB!DpnrKs{iYkgqh?)y zetq+ocMndijNf|XVSk>|hu8NjH$0wu^3#VG*J`%B{P^up-=WVH>mS!{dTN@y_21Vu zPp@u~^IO@q_ubdm>$(qo`S$7MlMla}w>;W@{@MRqDVk9m-o3illPzDl;mP8Q{~o;i zGvUa$|L2XqzS%VQ*xT1%{w%!k@5PDO)9XtQ-TW~B!oPR7r#(B<)Vk%-vrm7Tw!eDv z@z2rQA15CExbO7SHGA)Ags-pO^mOj|e=)OftiSf>^~1AIZXa9LYH{h=PoSq5h5}Ih z$->CM;K85+ax5rL7}%#bcr-P)crdnhG&3qnh_-h&F=~m+3hMWFFj{G7vxy11Pq1*1 zXJa!EQk|e@39u6a3Zboxf5ogJLn-A(TF}ZO&v9g|F zu=S9ZlTv5aVNvF~wvVrg!<31cnVrSMnCoe?Fs};JTbCwl2D?^QW+sjq4K62+*_N}g T@^*Y=aB^}~kW%AeVXy`OyDG~U literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protinterface.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protinterface.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1b96d2c6a0b681cb6d65d30f8e212a3c2d29081 GIT binary patch literal 562 zcmZ?wbhEHb6krfwc;?OU<3`5aJyDAr^e*qHzj623`;VWm+%v`?v$?aqRzOH$9d)n96>o)Bhta8)1|Mi^~NxQF@vOm zFpg~@_}FOOyjstQ&;S4bA^8LW000jFEC2ui01*HX000DJ@X1NvaHVQ_1K!j%1YSl7 z!f_N1>3$&4x&a`esrtx(3nZYOW9aw+9|nSwFt7k*i6}5BU@#N{&QsbXpcV~;Vlpr` lA6`ZyJSHd3NCJW(HUuSx#?^k8=*4}04GVmI1%!PO06U9(O_u-w literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protoperator.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protoperator.gif new file mode 100644 index 0000000000000000000000000000000000000000..2cb75ab8b05d4b8d65401c5270ae31836ce04f9b GIT binary patch literal 547 zcmZ?wbhEHb6krfwc*el+|Ns9VH!|+-iCWyCcX>zsy94@eC70hmI`!t=#}BXX|37bZ zVrBfD`%n7wl)S3$oi{TqY?_(4!sFfTX;-}6{(W6jyEikvaza4Ui(`_)xl^8eeY5H7 z>vatWa<`xT8M)A|CtH5zwojcaUd`L~!Z)!hWtF#W`d-U~El+MAtK5~6TR*k)SVdBC zw@-X!Y1^C+FRn#4U3bhm@$S{V*!+%NTUVJzuYUdTY-s1F=hrt!_y0V-zBFO#f8&T{ znd<^isVOXLwRmwNHax4@J*u>DOEkmK1d2adzz){|k)SwXU~gz(Xlib0ZRXKz>tYb# zXp!h<5NolW$Y9jRz~5wLVJ6PU*6zq4JZ*U!JBuZ^v8;k5n}MpDi8aG2DMm&+^NB3d zBJxaJ%=?8HnV49am6~OmbQ$!xxfsuwwrDhKGpI8$G8;B)i8`ssF*r0mIHRcFY}2g# S#-5k6Rj^5?<@@qR25SJ^#+_vV literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protproperty.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protproperty.gif new file mode 100644 index 0000000000000000000000000000000000000000..55473d16e1321bc3e4cbcb5a165f51a55f9f07a0 GIT binary patch literal 1039 zcmZ?wbhEHb6krfw_}<0v|Ns9*>yP~Z`}@a@jJtcH7B}eC&b@zmNB#fTdA|N3?+)m% zS;^7aopc;aF~qSuL)@dr;_n%Q4680UFSixNI0mLUEZ?`} z#fjKI|NeP<``x{HCBWA4%k}hc51ZeA`ThNF*3aMnPp>b1vqEsyu3Ha3{O_ETIk~lX z-HeEP2NTm1f({(NxOUx|ohP4OIC1FT*EMe*ukg1r@C^+6_UWZhKrk1(z|V(8pU#J+ zhWY<`z2U@6*`93qx38c7dQ^1w#Qx{kHwUkAytY!$e!8Z#0Qaw5N-tkNdUUob(l^}4 zKd3%8`p({vmeRPNkL%z3{BNu-dg$ck?WaC|z7%m}$JFA|njgRZww`HSJiX!D?aX6m zj_D~fEtuBu_OQdJSDO-IVqZTz`|9S@2e(daUDkNw{LN3_{{H>2Wa z5)tO9PzZ2J_GH&-Ss@Y8nantYm#1ru=I3P>cwO3fRJb-d9AnnClQ?kWF^jXjXc*6g z$c9Ia99*{BJ_t@;!YeGKpvG|G(^D1(UXfKXou3^abO}bWaxgF~Xq_k0z;|QC1jh&b z3|Wj1J{Gi}W3*sq`!jP<22TS6qn83-LBoj&>MSxM0V#~@8yqsyc&rT485o(k)WY3j zk_{(t@v*f`TYRGLDcgp_PZFFH92y0f&hPLzaGOJjGe+eKpX|mT4oo^q4hDIDIzBZr IGBQ{L0HyC{fdBvi literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protstructure.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/protstructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..af356a1db0b8e8821d2f6c94734b98354875e85d GIT binary patch literal 619 zcmZ?wbhEHb6krfwc$UoY|Ns9VH!{AxyYcwl4+i6ziyQQMbbBAJ67ih>_({Rj@9%G4 z-ckScarf_?zZ;Wy?(T{D{rb=STVGGi5Px?-|90w~Z?ETmJm&o8{h#-HbUxj>Qn>Bo z+bt6Pc}gc%#yc0E{D0o)*}2x=@BaLH{`>3eb$8C6fAjR(+szV3uHFA~tK`G$`;jYO zo_X;3?aa5^raC;Re)xImr+;79EUgtdc=Pp#7uW7C7yW!b?c;Ih&lh4oUyOO$@%+V! z*k!F2ukX$Le5>Ty%{}+ZA3SM!viAD_d&T$O-JUkjbbj>g8^7Kkt=jqK$EF|OUd?^` z=+xFD_rBaN{d6Jb)r41q|f1D*d+M+lPf8BUilmaDT_QSMz?o*$)gT1{wgxpDc_F49N^SAhSVn!oYr_ zA-Rcxi=By~sk1A&h22vqqNBUHRg}j^sJ*AFH<8EI!fYmk_@rbe_GucvViIb6Oq@%b zOoDl0%-2fuNs91tDs~tKxdkSf?v~`_<@FFb$fV01Et|lnaym3tUq?jAi`#~g(b~>c z&_66L(o&C&TiGCrU!K)bPSC~A!JbWt+nLFx!eAkT2=5Ob4nqdU13i55Od>XgPq~?x zm?e~$0vx!9%B@<;gKug_44ZM@5qqv}A&K6gC{1vdDqK8UQ3G B8EpUn literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubclass.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubclass.gif new file mode 100644 index 0000000000000000000000000000000000000000..1a968ab633207f47ec5e3130ec676f0d43598bb0 GIT binary patch literal 368 zcmZ?wbhEHb6krfwxN5}k|NsAQ?`}lTzVZ0okG0#6JX|I6_s!pL?{8g7z5Mo8Mbf(8r2 zp(R0XIx!l@Rf3{yHW~z|JTT0ir6tMRSy-d6W0S){R=L^}M$Ar41`Kl)d3;!=d+P}E z3NrF(N$K-&bt%+03NkRT^J(+3Gq4n@_Qg(`W;COaS31~v-h5AKCe0;2o(q_n1avjl otTWmmAj8DX?Cr$DwQ<*;tzL4nyP1!AF&G}%w~yhJrz3+k0J6oL{{R30 literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubdelegate.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubdelegate.gif new file mode 100644 index 0000000000000000000000000000000000000000..0a43eb261adccddee2206769150a9e2d964ed136 GIT binary patch literal 1041 zcmeH`{WFsR0LLG0>%7DvcU^bR#jQK%xKkV}(m0l0*4uHXy30!^gj%}Nd&*TyI9D<@ zvNh&y4`a+Q^=w|YC(LZ@1(C@%8_USsGcV;o=nv@o`{$R>=e{RT;ju>(oB$_ajSB4S z?2Hp9kP-_cv{GkSkR{361hPEe{IHnYgYvO@Za)p|{=Kq({`%wgZh2`S#V}j1RIsSn zG6dOdruCn`mi0N5A?Rh5*9uh`YLGWTss0+9mJ@aLUVa%@B$>cnO6Lh=jK;n?4p`kJ z(i_ZMTifYRixe5MrRCKb-9m56SjfdRc<6idjpwCR4Tg6{G6U4i&QHx4wEAB^W{d(@ zB^hF^tga&b4!;L5-Z7-T}_>mGjR`LrsAj0w1HTP=p6nY#WHr%q^+gG;Pa{2b1CXc-3NLHr%U>g(W;)*VhPC+v6*Ex zP-FXG@p~?n*#fqLNE2dST9qe{EH14un??M(;rA8oGL@#YXLNgeyP6|jUE82A8x~B< zYwL(sQ*W_s7JgzEGx!hQR!Byshxr;~;r!UGaRIEPgFWJ*i7Oee*qwt-{2`-h`HM&~ ztk68lrOhf$H?j(2lC!yx%rI}Jh0yC-d%kzi6_j&pBkOoVxk|~ZZGnvoOI2)95uMZB z$I8s1C?>T0-ch}Jk(f>XsWXoM&_`ar`!^`?fB$U2V*_Oc093$dm)QLTU}FM;Y~7-u zZ!RvVJ>D3S82*SOKk|uQ$4DFjJjJUNE5%{l03dpr?X=G|;1!ZWM5S82cE}uf5XFY^ zQ9x=zr60x%=XpFVoTrMO)1vk~^FfQ9X$3hR4uJ=NMeS?HzyRy)X^(@D9XcY=$|_zs zSmNS;LFEkHcP@3L@-V5Gxqf>ev^C`97msuIrMf~1QhX%SKhcEJKTffKNw}%Nk%$Qq zd7kJadkcv;8xp}&xLFhSR`TXVl3grTdMLMuVDApotZUHj_$OW=i!UNB787i>XOA5w W!S3M>-YMZwV($I|X%HF(1pfiQ@~q|n literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubenumeration.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubenumeration.gif new file mode 100644 index 0000000000000000000000000000000000000000..46888adef937f09868b1aff485010ad847625183 GIT binary patch literal 339 zcmV-Z0j&N(Pbf!&&RmbLYrp^5KtqjHc?* za^l2s<;7g>)_nBlnc}@q=gfSDY)AL)rrf+_?%03v-ihkZZ{W8?^yiuK(X`h>z|#7Zt2TuZ-Jcm?a$@ITH?{E>B?vC+=aBHilvcv^yZk%qA_}lr+8dCZh@Qc z+k=5-L-F8_pNL-BziE|zWSN9&dR{ztS~=^`gneQ_?9_R@tdifjNurK)@7sl*iE#h_ z{{R30A^8LW002G!EC2ui01yBW000JXK%a0(EE!iiKn z4i!jX__&S%6r$8nkQg@~(+QQv5-foTK=WC#T3itp2L%roH9i4gVq_mXCIcrPD;kPw lY;FuaM>a1!czOUcM>;JygoYO~M-8eVBIr#a7&Z+tGuQt>#pOO#}?0x>=!f)>{|M-0G_pcwfZ(ZrA@_Mnf=Gpnq zmrw66=yp4>bIF?NS=s)YSxFvu&-Bf&kUg=fq9;S?<*K@;53avl(D?lEy|qmWUk~J+ z+Bg61(Wa*lZ~gr8_}GpKpUzCF%yD~nsPq4m`d=5zo}Y+(*xvO2|9=J?K=CIFBLjmu zgAPa@MKlJCh@8yFl7ixFRNZ06KZzOwPN+z zv<(MOw%xcR)*I23_It(+G5s19o*Z-S8h+h27B({_t~PU7W=)Mr<}8BjGt3=_Q{DAPKYq>lt?WK&MZn5;OW*I#-&3bo_v!Yh%ePmOK&_XZeGp5`ugJQ8r@p0fCbZnrk_qf<6Hlv&#nK%)epr> z{uingwQcx+G3(OH39sU({EMCR*Qf5`lT%MVJpS`{L6a^97CgNFGw z^IuPVb20bQulc`y>mR?{_b#mKvrp{<89)!|G(D#{&3~PuhqXFt$#GZ zZ{k#oX?JJbD^)N3^x(63{D%Mk|1%64p!k!8k%1wQK?md_P@FKZw=@Jc1#&W&G0fUL<3?)XqgsXpxwn5}&UoFGrw} zp=^gSE5D_rwY18jKnW>z4j)miKxbWpepgm2Kjl-+3OeG=EZUBDAGz5-V`O9zlv8v% Z#l^^Np~1s+_cM3E&u2`ke^{9qtN|Sl$x;9S literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubfield.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubfield.gif new file mode 100644 index 0000000000000000000000000000000000000000..5aed17576f4493ccfdb12f7a8a55fa2cbd74041c GIT binary patch literal 311 zcmZ?wbhEHb6krfwxT?dzU_3K=_Klfm|8KhSJ8IVTsr#N)Zg{-)$iwF!e=of7Z{p#P z_ul^M+WW3)`>Uh3Kh|z~su8|^-|45`C41!jR$hMoYyGu9l^dR1diL|uvmbqjKJU8z z@&Et-hi-nj`r>!@fiGtt|J;A$y=n5+`4|4pJ^5+Ek#CDH{;OF3xMuV7x#$1I%)U{x z<>i{a_kda$$OVc&Sr{1@bbt^DKz?Fi3vrlM;GrYc@1gXp(Sy%ktu684k_eBco`+3u zGHjR}lT;k%iD)!t7%(bu_c~@WFz)DYZCE9=iP_9ulaaBGLC`~irKODBPllz(&xwyg Nd(!k7GhG}RtO2HXg;M|k literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubinterface.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubinterface.gif new file mode 100644 index 0000000000000000000000000000000000000000..c38a4c46a9a7603bc498664c294c7c06a713e555 GIT binary patch literal 314 zcmZ?wbhEHb6krfwxN5|3ZVUQpY+eD{&7vsdijaq#l?{g*cFIk#xtz9|cLB$xCr-*j~8#$(6M z-8^&oPXD~kdyZV)fBed}{il;l`>VT_0BvC)4k-R)VPs%1V$cC82lE)~P;Pd*c`+O~Z`kDLHZ`GDkm))4&({9xIoBQn2?6teCjWv##q^{)3yhlKQmSzza_!jd?!NB&pZmx!AK(QVR|IF|6^@a~=O^W*cU zPpJB?`{m-RrckHo(dc?Bd*+zuoTskl%;w{)5%GwFo3C0s(vtkd@g)-Cw0$= z&;S4bA^8LW002J#EC2ui01yBR000JNz@KnPMEF$1LIW=%7c@T_3Mdpi3m6Y) bKQTH02`MrHm_Hv1IXxz!LKYr1LO}pKPRg(M literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/puboperator.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/puboperator.gif new file mode 100644 index 0000000000000000000000000000000000000000..0ebe10a7ec532625741cc8668b1126f2553cdc9c GIT binary patch literal 310 zcmZ?wbhEHb6krfwxXQrr|Nnols(WwVeRM0i9NPIQy8maw)c<$xKM81hkzP3=w|;8n zu9VpPj#Fw1>9hZrw#_+jW|+Ayuy9Ls{=)w$tGs;^tFCyvC9d#rk1DlH*wSzy_n4$` zQgL@-(@dZEO5=!S;aSa*3+-&v_nJnpcFZ}^d90##ZzcovfZ|UUuwgnN667ZawqS>b z0uLQ7ey+tr7X$^&y&alvbTCQyF}P%C2naMD{LsJ{u_oi`k&A!ZJQtmLF?n6|?Szd1 l$~7_D1)D@O#GT~o%bXk;tN}%7Un2kj literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubproperty.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/pubproperty.gif new file mode 100644 index 0000000000000000000000000000000000000000..dfad7b43006984b0d27846a9c6d23d9bfb94ec95 GIT binary patch literal 609 zcmV-n0-pUxNk%w1VGsZi0OoxFqOZjN|NsB}`$kSweVyO`>u#*1kM{rn|Ltf^PgLme z{K3f4!N}5ZVMGba^OtU*~#SN;C}nU8wy>*wOldhGfC z-?B2qlNCRgDag;+-oar{IxyDd|Io<7(&G5ItfO0aS?~1wb9H=)lBYqQGU~fAU|e1H z+i8`AQ-Et%&dS31i;r~82J1CqnCh$bzU0~3xIK4DP|np>HmqGY1XMO=I;CB?f-vmTl3Ob zwWfhgP*e8dgO;77(Bl94x+41PunGqd`1<`&JwatwPwmG`u9#ST!Em?A@zv`8`r>l@ z{{E(-U;O_6j$#x`PEp?J`mC+6`TPHJTtULg)AG+&+`UxY+0;u*PN0^6jF3?6!$9=c zXSvDci*ixKxRuk{FMI-(}u{I9ZgYI|Ii=*|Nj6000000A^8LW004aeEC2ui z01yBW000NRfPI34goTAAb!|{YZy0w+I6hs3BUVlYm|${jbV@vg87~N21rtDPTUBBe z1g$p)F)j!pEl+VPKX57pIdcY54;nTISsZ#DWI7%MUIuv&DGeYNd=ys^S|&mZ0eD3+ z0Wb|qMl4f;J4oCD0s#SGXK8j#1B5jJ>;V@;Gztny^#-X40001lf(S(f6vP0ZfH7E3 vFfl`d%ECSk3!*_-aK^Am}xe((G}uY&L6G3OIA#BZnGdAnKS{;jW_hkyQl{pal#iQn)3e7+F# zey`4-_kX^eH{!7h~?6KmX}M%-b)&zODK8`Bv%2V=k|!ynfp8 ze4gq2kH?)qEd2O(=Gz~eetcf~>GQ3U$dxanR=jvn{qR!i&%1CPg|qcFzfuSnN3rm2{>v z$jq9|;iMv{Ai~7RyQIn8jYC~(l?0QVFh8$khXseZl!o*UIbME#ec^qK0!o6?Ym`q| zI~(W;%X?Z1IIiJi6E#)S)zmU!Z92#Fkc&rD+sxLL^>!2AJ2B1=tS+qLCcFj<667bb vva>O?uq!GFSrunAz6B literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/slMobile.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/slMobile.gif new file mode 100644 index 0000000000000000000000000000000000000000..5edc31f94c61a7a50c3285ef00dcbe86e8690974 GIT binary patch literal 909 zcmZ?wbhEHb6krfw_|Cw<&~QMZ;eZ1WEjW;{;6MWq9XPP;)QA7SKm7myA1FTxMnhm2 zhky>qZ=k%uz){2?%pv2kVSxi92Q!O8!-mAe%}h)j784dUxU@4Vuq~MJz`>+3{L1~0m@lAUkDoRe1;9$K%)+a)R?z+epkVS_+3 literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/static.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/static.gif new file mode 100644 index 0000000000000000000000000000000000000000..33723a92be0a7b2b9fc8057fb6f9a2a3ee729a7e GIT binary patch literal 879 zcmZ?wbhEHb;QNUQFEiC% z7n}SzyY0{GNB_QlU>F6XAuzl`K=CIFBLf3JgAT}Bpgh6A;lm)$!85^uv7wn=Tt*;+ zVd3FsMix6AfdU-G@X(%_T}Ddd!H4*UE^*nk5DkXp WqkU4gZ89qh7Q0SVHDqI9um%9oiYb@? literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/xna.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/icons/xna.gif new file mode 100644 index 0000000000000000000000000000000000000000..9e6a9d4bd9ecdc3baf35f6c5a0266e74229bd901 GIT binary patch literal 549 zcmZ?wbhEHb6krfwcoxm@{@uIIu8E&Ne{S!Z^Zxz&wyrrxlI0F=TmS0S%h&M?FJHb~ z)t+}?+q$jG=Dbd3y%Nj4J5}psyjW-Ng7uT?>zk*vw)JdXGPApH;j#U@kM7;k+&W>y z^wuAltPk$pT~`~kchkxZQyRXfGPHEeZ0eYOFP8aU0_X7)rxq_>)-z%8ruFMDoj-H> z^qK2dF6~Uw+p%NUy!ne7dzQ|dzj*Jy{qIs)>l%8FB+6~*F05{x+}7UT(%Sp$*RQVL z1$(z`+`VV-`swY5cWvHL=&-5K`^3RLyVou`apL5QScdH>+WX>V>l%9-nkN1E^JnSO z73=bxUcUi?x988Dd;aX{#Okt|hW@>K_pi-%S+;WB%NNhr<-4qD%f55_c6Z-`|Ns9p z&=Dy9WMO1rh-T0M*$Ijh2KJ_gNS5f9*0wel8;SOwRxe)eu-;y0H~Yyw>~``!!FopR zvOZc2t?JC;`aM?e!YwYI){K*##LWDIqD=f|C@AVGi)hb?W)k3Z3_TL97O1MibA-#o zAjFl8V}^y0xu&Uc#AHKeR_|zOK7O4ZTP2On(E)-oa_vl_QkK50k`CbvjSLLd0ER== A(*OVf literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/scripts/branding.js b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/scripts/branding.js new file mode 100644 index 0000000..f61f2aa --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/scripts/branding.js @@ -0,0 +1,623 @@ +// The IDs of all code snippet sets on the same page are stored so that we can keep them in synch when a tab is +// selected. +var allTabSetIds = new Array(); + +// The IDs of language-specific text (LST) spans are used as dictionary keys so that we can get access to the +// spans and update them when the user changes to a different language tab. The values of the dictionary +// objects are pipe separated language-specific attributes (lang1=value|lang2=value|lang3=value). The language +// ID can be specific (cs, vb, cpp, etc.) or may be a neutral entry (nu) which specifies text common to multiple +// languages. If a language is not present and there is no neutral entry, the span is hidden for all languages +// to which it does not apply. +var allLSTSetIds = new Object(); + +// Help 1 persistence support. This code must appear inline. +var isHelp1; + +var curLoc = document.location + "."; + +if(curLoc.indexOf("mk:@MSITStore") == 0) +{ + isHelp1 = true; + curLoc = "ms-its:" + curLoc.substring(14, curLoc.length - 1); + document.location.replace(curLoc); +} +else + if(curLoc.indexOf("ms-its:") == 0) + isHelp1 = true; + else + isHelp1 = false; + +// The OnLoad method +function OnLoad(defaultLanguage) +{ + var defLang; + + if(typeof(defaultLanguage) == "undefined" || defaultLanguage == null || defaultLanguage == "") + defLang = "vb"; + else + defLang = defaultLanguage; + + // This is a hack to fix the URLs for the background images on certain styles. Help Viewer 1.0 doesn't + // mind if you put the relative URL in the styles for fix up later in script. However, Help Viewer 2.0 will + // abort all processing and won't run any startup script if it sees an invalid URL in the style. As such, we + // put a dummy attribute in the style to specify the image filename and use this code to get the URL from the + // Favorites icon and then substitute the background image icons in the URL and set it in each affected style. + // This works in either version of the help viewer. + var iconPath = undefined; + + try + { + var linkEnum = document.getElementsByTagName("link"); + + for(var idx = 0; idx < linkEnum.length; idx++) + { + var link = linkEnum[idx]; + + if(link.rel.toLowerCase() == "shortcut icon") + iconPath = link.href.toString(); + } + } + catch(e) { } + finally { } + + if(iconPath) + { + try + { + var styleSheetEnum = document.styleSheets; + + for(var idx = 0; idx < styleSheetEnum.length; idx++) + { + var styleSheet = styleSheetEnum[idx]; + + // Ignore sheets at ms-help URLs + if(styleSheet.href != null && styleSheet.href.substr(0, 8) == "ms-help:") + continue; + + // Ignore errors (Help Viewer 2). styleSheet.rules is inaccessible due to security restrictions + // for all style sheets not defined within the page. + try + { + // Get sheet rules + var rules = styleSheet.rules; + + if(rules == null) + rules = styleSheet.cssRules; + + if(rules != null) + if(rules.length != 0) + for(var ruleNdx = 0; ruleNdx != rules.length; ruleNdx++) + { + var rule = rules.item(ruleNdx); + + var selectorText = rule.selectorText.toLowerCase(); + + // The selector text may show up grouped or individually for these + if(selectorText == ".oh_codesnippetcontainertableftactive, .oh_codesnippetcontainertableft, .oh_codesnippetcontainertableftdisabled" || + selectorText == ".oh_codesnippetcontainertableftactive" || + selectorText == ".oh_codesnippetcontainertableft" || + selectorText == ".oh_codesnippetcontainertableftdisabled") + { + rule.style.backgroundImage = "url(" + iconPath.replace("favicon.ico", "tabLeftBG.gif") + ")"; + } + + if(selectorText == ".oh_codesnippetcontainertabrightactive, .oh_codesnippetcontainertabright, .oh_codesnippetcontainertabrightdisabled" || + selectorText == ".oh_codesnippetcontainertabrightactive" || + selectorText == ".oh_codesnippetcontainertabright" || + selectorText == ".oh_codesnippetcontainertabrightdisabled") + { + rule.style.backgroundImage = "url(" + iconPath.replace("favicon.ico", "tabRightBG.gif") + ")"; + } + + if(selectorText == ".oh_footer") + { + rule.style.backgroundImage = "url(" + iconPath.replace("favicon.ico", "footer_slice.gif") + ")"; + } + } + } + catch(e) { } + finally { } + } + } + catch(e) { } + finally { } + } + + // In MS Help Viewer, the transform the topic is ran through can move the footer. Move it back where it + // belongs if necessary. + try + { + var footer = document.getElementById("OH_footer") + + if(footer) + { + var footerParent = document.body; + + if(footer.parentElement != footerParent) + { + footer.parentElement.removeChild(footer); + footerParent.appendChild(footer); + } + } + } + catch(e) { } + finally { } + + var language = GetLanguageCookie("CodeSnippetContainerLanguage", defLang); + + // If LST exists on the page, set the LST to show the user selected programming language + UpdateLST(language); + + // If code snippet groups exist, set the current language for them + if(allTabSetIds.length > 0) + { + var i = 0; + + while(i < allTabSetIds.length) + { + var tabCount = 1; + + // The tab count may vary so find the last one in this set + while(document.getElementById(allTabSetIds[i] + "_tab" + tabCount) != null) + tabCount++; + + tabCount--; + + // If not grouped, skip it + if(tabCount > 1) + SetCurrentLanguage(allTabSetIds[i], language, tabCount); + + i++; + } + } +} + +// This function executes in the OnLoad event and ChangeTab action on code snippets. The function parameter +// is the user chosen programming language. This function iterates through the "allLSTSetIds" dictionary object +// to update the node value of the LST span tag per the user's chosen programming language. +function UpdateLST(language) +{ + for(var lstMember in allLSTSetIds) + { + var devLangSpan = document.getElementById(lstMember); + + if(devLangSpan != null) + { + // There may be a carriage return before the LST span in the content so the replace function below + // is used to trim the whitespace at the end of the previous node of the current LST node. + if(devLangSpan.previousSibling != null && devLangSpan.previousSibling.nodeValue != null) + devLangSpan.previousSibling.nodeValue = devLangSpan.previousSibling.nodeValue.replace(/\s+$/, ""); + + var langs = allLSTSetIds[lstMember].split("|"); + var k = 0; + var keyValue; + + while(k < langs.length) + { + keyValue = langs[k].split("="); + + if(keyValue[0] == language) + { + devLangSpan.innerHTML = keyValue[1]; + + // Help 1 and MS Help Viewer workaround. Add a space if the following text element starts + // with a space to prevent things running together. + if(devLangSpan.parentNode != null && devLangSpan.parentNode.nextSibling != null) + { + if(devLangSpan.parentNode.nextSibling.nodeValue != null && + !devLangSpan.parentNode.nextSibling.nodeValue.substring(0, 1).match(/[.,);:!/?]/) && + (isHelp1 || devLangSpan.innerHTML == '>' || devLangSpan.innerHTML == ')')) + { + devLangSpan.innerHTML = keyValue[1] + " "; + } + } + break; + } + + k++; + } + + // If not found, default to the neutral language. If there is no neutral language entry, clear the + // content to hide it. + if(k >= langs.length) + { + if(language != "nu") + { + k = 0; + + while(k < langs.length) + { + keyValue = langs[k].split("="); + + if(keyValue[0] == "nu") + { + devLangSpan.innerHTML = keyValue[1]; + + // Help 1 and MS Help Viewer workaround. Add a space if the following text element + // starts with a space to prevent things running together. + if(devLangSpan.parentNode != null && devLangSpan.parentNode.nextSibling != null) + { + if(devLangSpan.parentNode.nextSibling.nodeValue != null && + !devLangSpan.parentNode.nextSibling.nodeValue.substring(0, 1).match(/[.,);:!/?]/) && + (isHelp1 || devLangSpan.innerHTML == '>' || devLangSpan.innerHTML == ')')) + { + devLangSpan.innerHTML = keyValue[1] + " "; + } + } + break; + } + + k++; + } + } + + if(k >= langs.length) + devLangSpan.innerHTML = ""; + } + } + } +} + +// Get the selected language cookie +function GetLanguageCookie(cookieName, defaultValue) +{ + if(isHelp1) + { + try + { + var globals = Help1Globals; + + var value = globals.Load(cookieName); + + if(value == null) + value = defaultValue; + + return value; + } + catch(e) + { + return defaultValue; + } + } + + var cookie = document.cookie.split("; "); + + for(var i = 0; i < cookie.length; i++) + { + var crumb = cookie[i].split("="); + + if(cookieName == crumb[0]) + return unescape(crumb[1]) + } + + return defaultValue; +} + +// Set the selected language cookie +function SetLanguageCookie(name, value) +{ + if(isHelp1) + { + try + { + var globals = Help1Globals; + + globals.Save(name, value); + } + catch(e) + { + } + + return; + } + + var today = new Date(); + + today.setTime(today.getTime()); + + // Set the expiration time to be 60 days from now (in milliseconds) + var expires_date = new Date(today.getTime() + (60 * 1000 * 60 * 60 * 24)); + + document.cookie = name + "=" + escape(value) + ";expires=" + expires_date.toGMTString() + ";path=/"; +} + +// Add a language-specific text ID +function AddLanguageSpecificTextSet(lstId) +{ + var keyValue = lstId.split("?") + + allLSTSetIds[keyValue[0]] = keyValue[1]; +} + +var clipboardHandler; + +// Add a language tab set ID +function AddLanguageTabSet(tabSetId) +{ + allTabSetIds.push(tabSetId); + + // Create the clipboard handler on first use + if(clipboardHandler == null && typeof (Clipboard) == "function") + { + clipboardHandler = new Clipboard('.OH_copyCodeSnippet', + { + text: function (trigger) + { + // Get the code to copy to the clipboard from the active tab of the given tab set + var i = 1, tabSetId = trigger.id; + var pos = tabSetId.indexOf('_'); + + if(pos == -1) + return ""; + + tabSetId = tabSetId.substring(0, pos); + + do + { + contentId = tabSetId + "_code_Div" + i; + tabTemp = document.getElementById(contentId); + + if(tabTemp != null && tabTemp.style.display != "none") + break; + + i++; + + } while(tabTemp != null); + + if(tabTemp == null) + return ""; + + return document.getElementById(contentId).innerText; + } + }); + } +} + +// Switch the active tab for all of other code snippets +function ChangeTab(tabSetId, language, snippetIdx, snippetCount) +{ + SetLanguageCookie("CodeSnippetContainerLanguage", language); + + SetActiveTab(tabSetId, snippetIdx, snippetCount); + + // If LST exists on the page, set the LST to show the user selected programming language + UpdateLST(language); + + var i = 0; + + while(i < allTabSetIds.length) + { + // We just care about other snippets + if(allTabSetIds[i] != tabSetId) + { + // Other tab sets may not have the same number of tabs + var tabCount = 1; + + while(document.getElementById(allTabSetIds[i] + "_tab" + tabCount) != null) + tabCount++; + + tabCount--; + + // If not grouped, skip it + if(tabCount > 1) + SetCurrentLanguage(allTabSetIds[i], language, tabCount); + } + + i++; + } +} + +// Sets the current language in the specified tab set +function SetCurrentLanguage(tabSetId, language, tabCount) +{ + var tabIndex = 1; + + while(tabIndex <= tabCount) + { + var tabTemp = document.getElementById(tabSetId + "_tab" + tabIndex); + + if(tabTemp != null && tabTemp.innerHTML.indexOf("'" + language + "'") != -1) + break; + + tabIndex++; + } + + if(tabIndex > tabCount) + { + // Select the first non-disabled tab + tabIndex = 1; + + if(document.getElementById(tabSetId + "_tab1").className.indexOf("OH_CodeSnippetContainerTabDisabled") != -1) + { + tabIndex++; + + while(tabIndex <= tabCount) + { + var tab = document.getElementById(tabSetId + "_tab" + tabIndex); + + if(tab.className.indexOf("OH_CodeSnippetContainerTabDisabled") == -1) + { + tab.className = "OH_CodeSnippetContainerTabActiveNotFirst"; + document.getElementById(tabSetId + "_code_Div" + j).style.display = "block"; + break; + } + + tabIndex++; + } + + // Disable left most image if first tab is disabled + document.getElementById(tabSetId + "_tabimgleft").className = "OH_CodeSnippetContainerTabLeftDisabled"; + } + } + + SetActiveTab(tabSetId, tabIndex, tabCount); + + // Disable right most image if last tab is disabled + if(document.getElementById(tabSetId + "_tab" + tabCount).className.indexOf("OH_CodeSnippetContainerTabDisabled") != -1) + document.getElementById(tabSetId + "_tabimgright").className = "OH_CodeSnippetContainerTabRightDisabled"; +} + +// Set the active tab within a tab set +function SetActiveTab(tabSetId, tabIndex, tabCount) +{ + var i = 1; + + while(i <= tabCount) + { + var tabTemp = document.getElementById(tabSetId + "_tab" + i); + + if(tabTemp.className == "OH_CodeSnippetContainerTabActive") + tabTemp.className = "OH_CodeSnippetContainerTabFirst"; + else + if(tabTemp.className == "OH_CodeSnippetContainerTabActiveNotFirst") + tabTemp.className = "OH_CodeSnippetContainerTab"; + else + if(tabTemp.className.indexOf("OH_CodeSnippetContainerTabDisabled") != -1) + { + tabTemp.firstChild.style.color = "#a8a8a8"; + tabTemp.firstChild.style.fontWeight = "normal"; + } + + var codeTemp = document.getElementById(tabSetId + "_code_Div" + i); + + if(codeTemp.style.display != "none") + codeTemp.style.display = "none"; + + i++; + } + + if(document.getElementById(tabSetId + "_tab" + tabIndex).className.indexOf("OH_CodeSnippetContainerTabDisabled") == -1) + { + if(tabIndex == 1) + document.getElementById(tabSetId + "_tab" + tabIndex).className = "OH_CodeSnippetContainerTabActive"; + else + document.getElementById(tabSetId + "_tab" + tabIndex).className = "OH_CodeSnippetContainerTabActiveNotFirst"; + } + else + { + document.getElementById(tabSetId + "_tab" + tabIndex).firstChild.style.color = "black"; + document.getElementById(tabSetId + "_tab" + tabIndex).firstChild.style.fontWeight = "bold"; + } + + document.getElementById(tabSetId + "_code_Div" + tabIndex).style.display = "block"; + + // Change the CSS of the first/last image div according the currently selected tab + if(tabIndex == 1 && document.getElementById(tabSetId + "_tab" + tabIndex).className.indexOf("OH_CodeSnippetContainerTabDisabled") == -1) + document.getElementById(tabSetId + "_tabimgleft").className = "OH_CodeSnippetContainerTabLeftActive"; + else + if(document.getElementById(tabSetId + "_tabimgleft").className != "OH_CodeSnippetContainerTabLeftDisabled") + document.getElementById(tabSetId + "_tabimgleft").className = "OH_CodeSnippetContainerTabLeft"; + + if(tabIndex == tabCount && document.getElementById(tabSetId + "_tab" + tabIndex).className.indexOf("OH_CodeSnippetContainerTabDisabled") == -1) + document.getElementById(tabSetId + "_tabimgright").className = "OH_CodeSnippetContainerTabRightActive"; + else + if(document.getElementById(tabSetId + "_tabimgright").className != "OH_CodeSnippetContainerTabRightDisabled") + document.getElementById(tabSetId + "_tabimgright").className = "OH_CodeSnippetContainerTabRight"; +} + +// Copy the code from the active tab of the given tab set to the clipboard +function CopyToClipboard(tabSetId) +{ + var tabTemp, contentId; + var i = 1; + + if(typeof (Clipboard) == "function") + return; + + do + { + contentId = tabSetId + "_code_Div" + i; + tabTemp = document.getElementById(contentId); + + if(tabTemp != null && tabTemp.style.display != "none") + break; + + i++; + + } while(tabTemp != null); + + if(tabTemp == null) + return; + + if(window.clipboardData) + { + try + { + window.clipboardData.setData("Text", document.getElementById(contentId).innerText); + } + catch(e) + { + alert("Permission denied. Enable copying to the clipboard."); + } + } + else if(window.netscape) + { + try + { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + + var clip = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance( + Components.interfaces.nsIClipboard); + + if(!clip) + return; + + var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance( + Components.interfaces.nsITransferable); + + if(!trans) + return; + + trans.addDataFlavor("text/unicode"); + + var str = new Object(); + var len = new Object(); + var str = Components.classes["@mozilla.org/supports-string;1"].createInstance( + Components.interfaces.nsISupportsString); + + var copytext = document.getElementById(contentId).textContent; + + str.data = copytext; + trans.setTransferData("text/unicode", str, copytext.length * 2); + + var clipid = Components.interfaces.nsIClipboard; + + clip.setData(trans, null, clipid.kGlobalClipboard); + } + catch(e) + { + alert("Permission denied. Enter \"about:config\" in the address bar and double-click the \"signed.applets.codebase_principal_support\" setting to enable copying to the clipboard."); + } + } +} + +// Help 1 persistence object. This requires a hidden input element on the page with a class of "userDataStyle" +// defined in the style sheet that implements the user data binary behavior: +// +var Help1Globals = +{ + UserDataCache: function() + { + var userData = document.getElementById("userDataCache"); + + return userData; + }, + + Load: function(key) + { + var userData = this.UserDataCache(); + + userData.load("userDataSettings"); + + var value = userData.getAttribute(key); + + return value; + }, + + Save: function(key, value) + { + var userData = this.UserDataCache(); + userData.setAttribute(key, value); + userData.save("userDataSettings"); + } +}; diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-Help1.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-Help1.css new file mode 100644 index 0000000..5b6544e --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-Help1.css @@ -0,0 +1,14 @@ +/* Define the userData cache persistence mechanism for Help 1 files */ +.userDataStyle { + behavior: url(#default#userdata); +} + +/* Style adjustments for Help 1*/ +.OH_outerContent { + /* _width is some sort of hack for IE6 and earlier. It does prevent a problem with the tabs shifting + oddly in some cases in Help 1 files. (i.e. the syntax section grows because it contains more lines) */ + _width: 99.9%; +} +.OH_CodeSnippetToolBarText { + top: -14px; +} diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-HelpViewer.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-HelpViewer.css new file mode 100644 index 0000000..26e3b67 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-HelpViewer.css @@ -0,0 +1,8 @@ +/* Style adjustments for Help Viewer */ +.OH_CodeSnippetToolBarText { + top: -10px; +} +span.keyword { + color: #0000ff; + font-weight: normal; +} diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-cs-CZ.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-cs-CZ.css new file mode 100644 index 0000000..f38de74 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-cs-CZ.css @@ -0,0 +1,3 @@ +/* Start CS-CZ locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-de-DE.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-de-DE.css new file mode 100644 index 0000000..4cf80ba --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-de-DE.css @@ -0,0 +1,3 @@ +/* Start DE-DE locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-en-US.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-en-US.css new file mode 100644 index 0000000..248cbe5 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-en-US.css @@ -0,0 +1,3 @@ +/* Start EN-US locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-es-ES.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-es-ES.css new file mode 100644 index 0000000..4a7ebbd --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-es-ES.css @@ -0,0 +1,3 @@ +/* Start ES-ES locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-fr-FR.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-fr-FR.css new file mode 100644 index 0000000..d924dec --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-fr-FR.css @@ -0,0 +1,3 @@ +/* Start FR-FR locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-it-IT.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-it-IT.css new file mode 100644 index 0000000..36c6b22 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-it-IT.css @@ -0,0 +1,3 @@ +/* Start IT-IT locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-ja-JP.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-ja-JP.css new file mode 100644 index 0000000..403aa6d --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-ja-JP.css @@ -0,0 +1,18 @@ +/* Start JA-JP locale-specific CSS */ +body +{ + font-family: Segoe UI, Verdana, Arial, MS Pゴシック; +} +pre +{ + font-family: Consolas, Courier, monospace, MS ゴシック; +} +span.tt +{ + font-family: Consolas, Courier, monospace, MS ゴシック; +} +span.code +{ + font-family: Consolas, Courier, monospace, MS ゴシック; +} +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-ko-KR.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-ko-KR.css new file mode 100644 index 0000000..2b46e92 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-ko-KR.css @@ -0,0 +1,19 @@ +/* Start KO-KR locale-specific CSS */ +body +{ + font-family: Malgun Gothic, Segoe UI, Verdana, Arial; + font-size: 0.75em; /*9pt*/ +} +pre +{ + font-family: Consolas, Courier, monospace, 돋움체; +} +span.tt +{ + font-family: Consolas, Courier, monospace, 돋움체; +} +span.code +{ + font-family: Consolas, Courier, monospace, 돋움체; +} +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-pl-PL.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-pl-PL.css new file mode 100644 index 0000000..19e9810 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-pl-PL.css @@ -0,0 +1,3 @@ +/* Start PL-PL locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-pt-BR.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-pt-BR.css new file mode 100644 index 0000000..a0683b0 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-pt-BR.css @@ -0,0 +1,3 @@ +/* Start PT-BR locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-ru-RU.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-ru-RU.css new file mode 100644 index 0000000..c31f83a --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-ru-RU.css @@ -0,0 +1,3 @@ +/* Start RU-RU locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-tr-TR.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-tr-TR.css new file mode 100644 index 0000000..81ca462 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-tr-TR.css @@ -0,0 +1,3 @@ +/* Start TR-TR locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-zh-CN.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-zh-CN.css new file mode 100644 index 0000000..87e7090 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-zh-CN.css @@ -0,0 +1,18 @@ +/* Start ZH-CN locale-specific CSS */ +body +{ + font-family: "Microsoft YaHei UI","Microsoft YaHei","SimSun","Segoe UI","Lucida Grande",Verdana,Arial,Helvetica,sans-serif +} +pre +{ + font-family: Consolas, Courier, monospace!important; +} +span.tt +{ + font-family: Consolas, Courier, monospace; +} +span.code +{ + font-family: Consolas, Courier, monospace; +} +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-zh-TW.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-zh-TW.css new file mode 100644 index 0000000..eab654f --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding-zh-TW.css @@ -0,0 +1,18 @@ +/* Start ZH-TW locale-specific CSS */ +body +{ + font-family: MS JhengHei, MingLiU, Segoe UI, Verdana, Arial; +} +pre +{ + font-family: Consolas, Courier, monospace, 細明體; +} +span.tt +{ + font-family: Consolas, Courier, monospace, 細明體; +} +span.code +{ + font-family: Consolas, Courier, monospace, 細明體; +} +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding.css new file mode 100644 index 0000000..c0e27f7 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010/styles/branding.css @@ -0,0 +1,803 @@ +body { + font-family: Segoe UI, Verdana, Arial; + font-size: 0.85em; /*10pt*/ + color: #000; + margin: 0px; + padding: 0px 0px 0px 5px; + min-width: 600px; + background-color: #fff; +} + +a { + color: #1364c4; + text-decoration: none; +} + +a:link { + color: #1364c4; +} +a:visited { + color: #960bb4; +} + +a:hover, a:active { + color: #960bb4; +} + +a img { + border: none; +} + +a.button, a.button:active, a.button:hover { + float: right; + background-color: #0080c0; + color: white; + padding: 6px 12px; + font-size: 14px; + border: 1px solid transparent; + border-radius: 4px; + margin-left: 6px; + margin-top: 6px; +} + +a.button:link, a.button:visited { + color: white; +} + +pre { + font-family: Consolas, Courier, monospace; + overflow: hidden; +} + +div.OH_outerContent table { + width: 100%; + border-collapse: collapse; + border-color: #bbb; + border-width: 1px; + border-style: solid; +} + +div.OH_outerContent table th { + border-color: #bbb; + border-width: 1px; + border-style: solid; + height: 21px; + text-align: left; + color: #000; + padding: 4px; + font-style: normal; + font-weight: bold; + background-color: rgb(229,229,229); +} + +div.OH_outerContent table td { + border-color: #bbb; + border-width: 1px; + border-style: solid; + margin: 1px; +} + +div.OH_outerContent table.TitleTable { + width: 100%; + border-collapse: collapse; + border-width: 0px; +} + +div.OH_outerContent table.TitleTable td { + border-width: 0px; +} + +.OH_tdTitleColumn { + padding: 0px; + padding-left: 10px; + text-align: left; +} + +.OH_tdRunningTitleColumn { + padding: 0px; + padding-top: 11px; + padding-right: 13px; + padding-bottom: 12px; + vertical-align: middle; + text-align: right; +} + +.OH_tdLogoColumn { + padding: 0px; + padding-top: 11px; + padding-left: 5px; + padding-right: 5px; + padding-bottom: 12px; + vertical-align: middle; + width: 1px; +} + +.OH_tdLogoColumnAbove { + padding: 0px; + padding-top: 5px; + padding-left: 10px; + padding-right: 10px; + vertical-align: middle; +} + +.target { + font-weight: bold; +} + +table p { + margin-top: 0; +} + +table.header { + width: 100%; +} + +td.header { + padding: 0px 0px 0px 16px; +} + +h1 { + font-size: 1.5em; /*18pt*/ + font-weight: 400; + margin-top: 0px; +} + +h1.heading { + font-size: 1.2em; /*14pt*/ + font-family: Segoe UI, Verdana, Arial; + font-weight: bold; + line-height: 120%; +} + +h2 { + font-size: 1.15em; /*13.5pt*/ + font-weight: bold; +} + +h2.subtitle { + font-size: 1.8em; /*22pt*/ + font-weight: 400; + margin-bottom: 0.6em; +} +h3 { + font-size: 1.1em; /*13pt*/ + font-weight: bold; +} +.heading { + font-size: 0.85em; /*10pt*/ + font-family: Segoe UI, Verdana, Arial; + font-weight: bold; + margin: 0px; + margin-top: 18px; +} +h4.subHeading { + margin-top: 10px; + font-size: 1em; /*12pt*/ +} + +h4.subHeading, .subHeading { + font-size: 0.85em; /*10pt*/ + font-family: Segoe UI, Verdana, Arial; + font-weight: bold; + margin: 0px; +} +dl { + margin-top: 0px; + margin-bottom: 10px; +} +dt { + font-style: normal; + margin: 0px; +} +dd { + margin-left: 20px; + margin-bottom: 5px; +} +dd p { + margin-top: 0; +} +li { + margin-bottom: 3px; + margin-left: 0; +} +ol { + line-height: 140%; + list-style-type: decimal; + margin-bottom: 15px; +} +ol ol { + line-height: 140%; + list-style-type: lower-alpha; + margin-bottom: 4px; + margin-top: 3px; +} + +ol ol ol { + line-height: 140%; + list-style-type: lower-roman; + margin-bottom: 4px; + margin-top: 3px; +} + +ol ul, ul ol { + line-height: 140%; + margin-bottom: 15px; + margin-top: 15px; +} + +p { + margin: 12px 0px 12px 0px; +} + +div.section p { + margin-bottom: 15px; + margin-top: 0; +} + +ul { + line-height: 140%; + list-style-type: disc; + margin-bottom: 15px; +} + +ul ul { + line-height: 140%; + list-style-type: circle; + margin-bottom: 4px; + margin-top: 3px; +} + +div#mainSection { + padding-left: 10px; + padding-top: 10px; + padding-bottom: 15px; + padding-right: 10px; +} + +div.OH_outerContent div#mainSection table { + border-collapse: collapse; + border: 1px solid #bbbbbb; + margin-bottom: 5px; + margin-top: 5px; + margin-right: 13px; + padding: 0px; + width: 97%; +} + +div.OH_outerContent div#mainSection table th { + font-family: Segoe UI, Verdana, Arial; + font-size: 0.85em; /*10pt*/ + border: 1px solid #bbbbbb; + color: #000000; + background-color: #e5e5e5; + padding-left: 13px; + padding-right: 13px; + vertical-align: middle; + text-align: left; + font-weight: bold; +} + +div.OH_outerContent div#mainSection table td { + font-family: Segoe UI, Verdana, Arial; + font-size: 0.85em; /*10pt*/ + border: 1px solid #bbbbbb; + color: #000000; + padding: 5px; + overflow: visible; + vertical-align: top; +} + +div.OH_outerContent div#mainSection table td p { + padding: 5px 5px 0px 5px; +} + +div.OH_outerContent div#mainSection table td.imageCell { + white-space: nowrap; +} + +div.OH_outerContent div#mainSection table td img { + margin-top: 3px; + margin-bottom: 3px; +} + +div.OH_outerContent div#mainSection table table td { + border-right: 0px; +} + +.media img { + vertical-align: top; +} + +div#mainBody div.alert, div#mainBody div.code { + width: 98.9%; +} + +div#mainBody div.alert { + padding-bottom: 0.82em; /*9px*/ +} + +div#mainBody div.alert table { + width: 100%; +} + +span.selflink { + font-weight: bold; +} + +div.preliminary { + margin-top: 1em; + margin-bottom: 1em; + font-weight: bold; + color: #333333; +} + +div.caption { + font-weight: bold; + font-size: 1em; /*12pt*/ + color: #003399; +} + +.procedureSubHeading { + font-size: 1.1em; /*13.5pt*/ + font-weight: bold; +} + +/* added for new spans that replace sub, sup, big and small tags */ +span.sub { + vertical-align: sub; +} +span.sup { + vertical-align: super; +} +span.big { + font-size: larger; +} +span.small { + font-size: smaller; +} +span.tt { + font-family: Consolas, Courier, monospace; +} + +.OH_regiontitle { + font-size: 1.3em; /*15pt*/ + font-family: Segoe UI, Verdana, Arial; + font-weight: bold; + color: #000000; + float: left; + background-color: #FFFFFF; + margin-top: 13px; + margin-bottom: 5px; + padding-right: 7px; + z-index: 2; +} + +.OH_CollapsibleAreaRegion { + z-index: 100; +} + +.OH_CollapsibleArea_HrDiv { + padding-top: 18px; +} + +.OH_CollapsibleArea_Hr { + margin-left: 4px; + color: #e5e5e5; + border-top-style: none; + border-bottom: #e5e5e5 1px solid; + border-right-style: none; + border-left-style: none; +} + +.OH_CodeSnippetContainer { + clear: both; + margin-top: 10px; + line-height: normal; + width: 100%; +} + +.OH_CodeSnippetContainerTabs { + position: relative; + top: 2px; + float: left; + background-color: Transparent; + vertical-align: middle; + cursor: default; + margin: 0px; + padding: 0px; + z-index: 2; +} + +.OH_CodeSnippetContainerTab, .OH_CodeSnippetContainerTabLeft, .OH_CodeSnippetContainerTabRight, .OH_CodeSnippetContainerTabFirst, .OH_CodeSnippetContainerTabActive, .OH_CodeSnippetContainerTabLeftActive, .OH_CodeSnippetContainerTabRightActive, .OH_CodeSnippetContainerTabActiveNotFirst, .OH_CodeSnippetContainerTabDisabled, .OH_CodeSnippetContainerTabLeftDisabled, .OH_CodeSnippetContainerTabRightDisabled, .OH_CodeSnippetContainerTabDisabledNotFirst, .OH_CodeSnippetContainerTabSolo { + float: left; + font-size: 0.8em; + margin: 0px; + padding: 0px; + height: 20px; +} + +.OH_CodeSnippetContainerTabSolo { + padding: 0px 5px 0px 5px; +} + +.OH_CodeSnippetContainerTab, .OH_CodeSnippetContainerTabFirst, .OH_CodeSnippetContainerTabActive, .OH_CodeSnippetContainerTabActiveNotFirst, .OH_CodeSnippetContainerTabDisabled, .OH_CodeSnippetContainerTabDisabledNotFirst, .OH_CodeSnippetContainerTabSolo { + border-top: solid 1px #bbbbbb; +} + +.OH_CodeSnippetContainerTab, .OH_CodeSnippetContainerTabLeft, .OH_CodeSnippetContainerTabRight, .OH_CodeSnippetContainerTabFirst, .OH_CodeSnippetContainerTabDisabled, .OH_CodeSnippetContainerTabLeftDisabled, .OH_CodeSnippetContainerTabRightDisabled, .OH_CodeSnippetContainerTabDisabledNotFirst { + border-bottom: solid 1px #d0d2d2; +} + +.OH_CodeSnippetContainerTab, .OH_CodeSnippetContainerTabActiveNotFirst, .OH_CodeSnippetContainerTabDisabledNotFirst { + border-left: solid 1px #bbbbbb; +} + +.OH_CodeSnippetContainerTab, .OH_CodeSnippetContainerTabLeft, .OH_CodeSnippetContainerTabRight, .OH_CodeSnippetContainerTabFirst { + background-color: #eff5ff; +} + +.OH_CodeSnippetContainerTabDisabled, .OH_CodeSnippetContainerTabLeftDisabled, .OH_CodeSnippetContainerTabRightDisabled, .OH_CodeSnippetContainerTabDisabledNotFirst { + background-color: #f5f5f5; +} + +.OH_CodeSnippetContainerTabActive, .OH_CodeSnippetContainerTabLeftActive, .OH_CodeSnippetContainerTabRightActive, .OH_CodeSnippetContainerTabActiveNotFirst, .OH_CodeSnippetContainerTabSolo { + background-color: white; + font-weight: bold; +} + +.OH_CodeSnippetContainerTab a, .OH_CodeSnippetContainerTab a:link, .OH_CodeSnippetContainerTab a:visited, .OH_CodeSnippetContainerTab a:active, .OH_CodeSnippetContainerTab a:hover, .OH_CodeSnippetContainerTabFirst a, .OH_CodeSnippetContainerTabFirst a:link, .OH_CodeSnippetContainerTabFirst a:visited, .OH_CodeSnippetContainerTabFirst a:active, .OH_CodeSnippetContainerTabFirst a:hover { + padding: 0px 5px 0px 5px; + color: #1364c4; + text-decoration: none; + cursor: pointer; +} + +.OH_CodeSnippetContainerTab a:link, .OH_CodeSnippetContainerTab a:visited, .OH_CodeSnippetContainerTabFirst a:link, .OH_CodeSnippetContainerTabFirst a:visited { + color: #1364c4; +} + +.OH_CodeSnippetContainerTab a:active, .OH_CodeSnippetContainerTab a:hover, .OH_CodeSnippetContainerTabFirst a:active, .OH_CodeSnippetContainerTabFirst a:hover { + color: #250c58; +} + +.OH_CodeSnippetContainerTabActive a, .OH_CodeSnippetContainerTabActive a:link, .OH_CodeSnippetContainerTabActive a:visited, .OH_CodeSnippetContainerTabActive a:active, .OH_CodeSnippetContainerTabActive a:hover, .OH_CodeSnippetContainerTabActiveNotFirst a, .OH_CodeSnippetContainerTabActiveNotFirst a:link, .OH_CodeSnippetContainerTabActiveNotFirst a:visited, .OH_CodeSnippetContainerTabActiveNotFirst a:active, .OH_CodeSnippetContainerTabActiveNotFirst a:hover { + padding: 0px 5px 0px 5px; + background-color: white; + color: #250c58; + text-decoration: none; + cursor: pointer; +} + +.OH_CodeSnippetContainerTabDisabled a, .OH_CodeSnippetContainerTabDisabledNotFirst a { + padding: 0px 5px 0px 5px; + color: #a8a8a8; + text-decoration: none; +} + +.OH_CodeSnippetContainerTabLeftActive, .OH_CodeSnippetContainerTabLeft, .OH_CodeSnippetContainerTabLeftDisabled, .OH_CodeSnippetContainerTabRightActive, .OH_CodeSnippetContainerTabRight, .OH_CodeSnippetContainerTabRightDisabled { + width: 5px; + float: left; +} + +.OH_CodeSnippetContainerTabLeftActive, .OH_CodeSnippetContainerTabLeft, .OH_CodeSnippetContainerTabLeftDisabled { + /* background-image: url(tabLeftBG.gif); Added by script */ + background-repeat: no-repeat; +} + +.OH_CodeSnippetContainerTabRightActive, .OH_CodeSnippetContainerTabRight, .OH_CodeSnippetContainerTabRightDisabled { + /* background-image: url(tabRightBG.gif); Added by script */ + background-repeat: no-repeat; +} + +.OH_CodeSnippetToolBar { + width: 100%; + border-top: solid 1px #e5e5e5; +} + +.OH_CodeSnippetToolBarText { + float: right; + position: relative; + background-color: white; + z-index: 100; + width: auto; + margin-right: 13px; + top: -8px; +} + +.OH_CodeSnippetToolBarText a:link, .OH_CodeSnippetToolBarText a:visited, .OH_CodeSnippetToolBarText a:active, .OH_CodeSnippetToolBarText a:hover { + font-size: 0.8em; + padding-left: 3px; + padding-right: 3px; + text-decoration: none; +} + +.OH_CodeSnippetToolBarText a:link, .OH_CodeSnippetToolBarText a:visited, .OH_CodeSnippetToolBarText a:active { + color: #1364c4; +} + +.OH_CodeSnippetToolBarText a:hover { + color: #e66a38; +} + +.OH_CodeSnippetContainerCodeCollection { + border-left: solid 1px #e5e5e5; + border-right: solid 1px #e5e5e5; + border-bottom: solid 1px #e5e5e5; + clear: both; + width: 99%; +} + +.OH_CodeSnippetContainerCode { + width: 100%; + border-right-width: 0px; + margin: 0px; + padding-left: 10px; +} + +.OH_copyCodeSnippet { +} + +.members { + border-collapse: collapse; + border-spacing: 0; +} + +.members td { + border: 1px solid #DDDDDD; +} + +.members th { + background: #CCCCCC none repeat scroll 0 0; +} + +.ps_iconColumn { +} + +.OH_outerDiv { + background-color: #ffffff; +} + +.OH_outerContent { + overflow: visible; + border-left: 1px solid #bbb; +} + +.OH_footer { + clear: both; + border-top: solid 1px #bbb; + padding: 0px 10px 5px 10px; /* background-image: url(footer_slice.gif); Added by script */ + background-position: top; + background-repeat: repeat-x; +} + +.OH_footer p { + margin: 0; +} + +.OH_feedbacklink { + font-family: Segoe UI, Verdana, Arial; + font-size: 0.8em; /*10pt*/ + padding-left: 0px; +} + +.OH_clear { + clear: both; +} + +/*Start of colorization*/ +div.seeAlsoStyle { + padding-top: 5px; +} + +span.code, span.command { + font-size: 105%; + color: #000066; + font-family: Consolas, Courier, monospace; + background-color: #f4f4f4; +} +span.ui { + font-weight: bold; +} +span.math { + font-style: italic; +} +span.input { + font-weight: bold; +} +span.term { + font-style: italic; +} +span.label { + font-weight: bold; +} +span.foreignPhrase, span.phrase { + font-style: italic; +} +span.placeholder { + font-style: italic; +} +span.typeparameter { + font-style: italic; +} +span.identifier { +} +span.keyword { + color: #0000ff; +} +span.parameter { + font-style: italic; +} +span.literal, span.literalValue { + color: #cc0000; +} +span.comment { + color: #006633; +} +span.introStyle { + color: #a9a9a9; +} +/*End of colorization*/ + +/* Various *******************************************************************/ + +q { + font-style: italic; +} + +dl.authored dt { + font-weight: bold; + margin-top: 5px; +} + +dl.authored dd { + margin-left: 20px; + margin-bottom: 5px; +} + +span.nolink { + font-weight: bold; +} + +ul.autoOutline { +} + +li.outlineSectionEntry { +} + +div.outlineSectionEntrySummary { +} + +/* Media *********************************************************************/ + +div.ps_mediaNear { + text-align: left; + margin-top: 1em; + margin-bottom: 1em; +} + +div.ps_mediaFar { + text-align: right; + margin-top: 1em; + margin-bottom: 1em; +} + +div.ps_mediaCenter { + text-align: center; + margin-top: 1em; + margin-bottom: 1em; +} + +span.ps_captionLead { + font-weight: bold; + margin-right: .5em; +} + +/* Glossary ******************************************************************/ + +div.clsTooltip { + border: 1px solid black; + padding: 2px; + position: absolute; + top: 0; + left: 0; + display: none; + background-color: #FFFFAA; + color: black; + font-size: 8pt; + font-family: Arial; +} + +h1.ps_glossaryTitle { + color: #000000; + font-size: 140%; + margin-top: 10px; + margin-bottom: 10px; +} + +div.ps_glossaryDiv { +} + +h2.ps_glossaryDivHeading { + color: Black; + font-size: 115%; + margin-top: 1em; + margin-bottom: 0px; +} + +div.ps_glossaryLetterBar { + font-size: 90%; +} + +hr.ps_glossaryRule { + text-align: left; + color: Black; +} + +h3.ps_glossaryGroupHeading { + font-size: 120%; + color: Gray; + margin: 5px 0 5px 0; +} + +div.ps_glossaryGroup { +} + +dl.ps_glossaryGroupList { + margin: 0; + color: Black; +} + +dt.ps_glossaryEntry { + font-weight: bold; + margin-left: 2em; +} + +dd.ps_glossaryEntry { + margin-left: 2em; + margin-bottom: 2em; +} + +dd.ps_glossaryEntry p { + margin-top: 0; +} + +div.ps_relatedEntry { + margin-bottom: 4px; +} + +/* Bibliography***************************************************************/ + +div.bibliographStyle { + padding-top: 5px; +} + +span.bibliographyNumber { +} + +span.bibliographyAuthor { + font-weight: bold; +} + +span.bibliographyTitle { + font-style: italic; +} + +span.bibliographyPublisher { +} + +sup.citation a:link a:visited a:active { + text-decoration: none; +} + +/* Placeholder for the Help 1 user data style class */ +.userDataStyle { +} + + + +.missing +{ + color: #dc143c; + font-size: 8.5pt; + font-weight: bold; +} diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010WithLatex.cs b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010WithLatex.cs new file mode 100644 index 0000000..8b947c9 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2010WithLatex.cs @@ -0,0 +1,118 @@ +// Copyright (c) Giovanni Lafratta. All rights reserved. +// Licensed under the MIT license. +// See the LICENSE file in the project root for more information. + +using Sandcastle.Core; +using Sandcastle.Core.PresentationStyle; +using System; +using System.IO; +using System.Reflection; + +namespace Novacta.Shfb.LatexTools.PresentationStyles +{ + ///

    + /// Represents a VS2010-based presentation style that supports + /// LaTeX formatted formulas in reference XML comments and conceptual content topics. + /// + [PresentationStyleExport( + id: "Novacta.Shfb.LatexTools.VS2010", + title: "VS2010 + LaTeX", + Version = AssemblyInfo.ProductVersion, + Copyright = AssemblyInfo.Copyright, + Description = "VS2010 with LaTeX content.")] + public sealed class VS2010WithLatex : PresentationStyleSettings + { + /// + public override string Location => ComponentUtilities.AssemblyFolder(Assembly.GetExecutingAssembly()); + + /// + /// Initializes a new instance of the class. + /// + public VS2010WithLatex() + { + // The base path of the presentation style files relative to the assembly's location. If your + // assembly will reside in the same folder as the presentation style content, you can remove this + // property setting. If adding multiple presentation styles to the assembly, set this to the name + // of the sub-folder that contains the presentation style content folders. + this.BasePath = Path.Combine("PresentationStyles", "VS2010"); + + this.SupportedFormats = + HelpFileFormats.HtmlHelp1 | HelpFileFormats.MSHelpViewer | HelpFileFormats.Website; + + this.SupportsNamespaceGrouping = this.SupportsCodeSnippetGrouping = true; + + // If relative, these paths are relative to the base path + this.ResourceItemsPath = "Content"; + this.ToolResourceItemsPath = "SHFBContent"; + + this.DocumentModelApplicator = new StandardDocumentModel(); + this.ApiTableOfContentsGenerator = new StandardApiTocGenerator(); + + this.BuildAssemblerConfiguration = @"Configuration\BuildAssembler.config"; + + // Note that UNIX based web servers may be case-sensitive with regard to folder and filenames so + // match the case of the folder and filenames in the literals to their actual casing on the file + // system. + this.ContentFiles.Add(new ContentFiles(this.SupportedFormats, @"icons\*.*")); + this.ContentFiles.Add(new ContentFiles(this.SupportedFormats, @"scripts\*.*")); + this.ContentFiles.Add(new ContentFiles(this.SupportedFormats, @"styles\*.*")); + + // By default, this will use the standard web file content from the Sandcastle Help File Builder + this.ContentFiles.Add(new ContentFiles(HelpFileFormats.Website, null, @"Web\*.*", + String.Empty, new[] { ".aspx", ".html", ".htm", ".php" })); + + // Define the transform component arguments + this.TransformComponentArguments.Add(new TransformComponentArgument("logoFile", true, true, null, + "An optional logo file to insert into the topic headers. Specify the filename only, omit " + + "the path.\r\n\r\nImportant: Add a folder called \"icons\\\" to the root of your help file " + + "builder project and place the logo file in the icons\\ folder. Set the Build Action property " + + "to Content on the logo file's properties.\r\n\r\nIf blank, no logo will appear in the topic " + + "headers. If building website output and your web server is case-sensitive, be sure to match " + + "the case of the folder name in your project with that of the presentation style. The same " + + "applies to the logo filename itself.")); + this.TransformComponentArguments.Add(new TransformComponentArgument("logoHeight", true, true, null, + "An optional logo height. If left blank, the actual logo image height is used.")); + this.TransformComponentArguments.Add(new TransformComponentArgument("logoWidth", true, true, null, + "An optional logo width. If left blank, the actual logo image width is used.")); + this.TransformComponentArguments.Add(new TransformComponentArgument("logoAltText", true, true, null, + "Optional logo alternate text. If left blank, no alternate text is added.")); + this.TransformComponentArguments.Add(new TransformComponentArgument("logoPlacement", true, true, + "left", "An optional logo placement. Specify left, right, or above. If not specified, the " + + "default is left.")); + this.TransformComponentArguments.Add(new TransformComponentArgument("logoAlignment", true, true, + "left", "An optional logo alignment when using the 'above' placement option. Specify left, " + + "right, or center. If not specified, the default is left.")); + this.TransformComponentArguments.Add(new TransformComponentArgument("maxVersionParts", false, true, + null, "The maximum number of assembly version parts to show in API member topics. Set to 2, " + + "3, or 4 to limit it to 2, 3, or 4 parts or leave it blank for all parts including the " + + "assembly file version value if specified.")); + this.TransformComponentArguments.Add(new TransformComponentArgument("defaultLanguage", true, true, + "cs", "The default language to use for syntax sections, code snippets, and a language-specific " + + "text. This should be set to cs, vb, cpp, fs, or the keyword style parameter value of a " + + "third-party syntax generator if you want to use a non-standard language as the default.")); + this.TransformComponentArguments.Add(new TransformComponentArgument("includeEnumValues", false, true, + "true", "Set this to 'true' to include the column for the numeric value of each field in " + + "enumerated type topics. Set it to 'false' to omit the numeric values column.")); + this.TransformComponentArguments.Add(new TransformComponentArgument("baseSourceCodeUrl", false, true, + null, "If you set the Source Code Base Path property in the Paths category, specify the URL to " + + "the base source code folder on your project's website here. Some examples for GitHub are " + + "shown below.\r\n\r\n" + + "Important: Be sure to set the Source Code Base Path property and terminate the URL below with " + + "a slash if necessary.\r\n\r\n" + + "Format: https://github.com/YourUserID/YourProject/blob/BranchNameOrCommitHash/BaseSourcePath/ \r\n\r\n" + + "Master branch: https://github.com/JohnDoe/WidgestProject/blob/master/src/ \r\n" + + "A different branch: https://github.com/JohnDoe/WidgestProject/blob/dev-branch/src/ \r\n" + + "A specific commit: https://github.com/JohnDoe/WidgestProject/blob/c6e41c4fc2a4a335352d2ae8e7e85a1859751662/src/")); + this.TransformComponentArguments.Add(new TransformComponentArgument("requestExampleUrl", false, true, + null, "To include a link that allows users to request an example for an API topic, set the URL " + + "to which the request will be sent. This can be a web page URL or an e-mail URL. Only include " + + "the URL as the parameters will be added automatically by the topic. For example:\r\n\r\n" + + "Create a new issue on GitHub: https://github.com/YourUserID/YourProject/issues/new \r\n" + + "Send via e-mail: mailto:YourEmailAddress@Domain.com")); + + // Add the plug-in dependencies if any + this.PlugInDependencies.Add(new PlugInDependency("Lightweight Website Style", null)); + this.PlugInDependencies.Add(new PlugInDependency("Novacta.Shfb.LatexPlugIn", null)); + } + } +} diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Configuration/BuildAssembler.config b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Configuration/BuildAssembler.config new file mode 100644 index 0000000..4696552 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Configuration/BuildAssembler.config @@ -0,0 +1,557 @@ + + + + + + {@ComponentLocations} + + + + + + + + + + + + + + + + + + + {@TokenFiles} + + + + + + + + + + + {@CodeSnippetsFiles} + " + + + + + + + + {@HelpFormatOutputPaths} + + + + + + + + + + + + + + + {@SyntaxFilters} + + + + + + + + + + {@SyntaxFiltersDropDown} + + {@TransformComponentArguments} + + + + + + + + + + + + + + + + + + + + {@ResourceItemFiles} + + + + + + + + + + + + + + + + + {@ReferenceLinkNamespaceFiles} + + + + + + + + + + + + + + + + + {@SearchResultsDisplayVersion} + + + + + + + + + + {@ResourceItemFiles} + + + + + + + + + + + + + + + + + {@ReferenceLinkNamespaceFiles} + + + + + + + + + + + + + + + + + + + + + + + + {@HtmlEncCopyrightInfo} + + + Beispiel anfordern + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/en-US.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/en-US.xml new file mode 100644 index 0000000..59acd5e --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/en-US.xml @@ -0,0 +1,59 @@ + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + Your feedback is used to improve the documentation and the product. Your e-mail address will not be used for any other purpose and is disposed of after the issue you report is resolved. While working to resolve the issue that you report, you may be contacted via e-mail to get further details or clarification on the feedback you sent. After the issue you report has been addressed, you may receive an e-mail to let you know that your feedback has been addressed. + + + {@RootNamespaceTitle} + + Namespaces + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [This is preliminary documentation and is subject to change.]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/es-ES.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/es-ES.xml new file mode 100644 index 0000000..2737d67 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/es-ES.xml @@ -0,0 +1,59 @@ + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + Your feedback is used to improve the documentation and the product. Your e-mail address will not be used for any other purpose and is disposed of after the issue you report is resolved. While working to resolve the issue that you report, you may be contacted via e-mail to get further details or clarification on the feedback you sent. After the issue you report has been addressed, you may receive an e-mail to let you know that your feedback has been addressed. + + + {@RootNamespaceTitle} + + Espacio de nombres + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [Ésta es documentación preliminar y está sujeta a cambios.]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/fr-FR.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/fr-FR.xml new file mode 100644 index 0000000..4c65464 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/fr-FR.xml @@ -0,0 +1,59 @@ + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + Vos remarques sont utilisées pour améliorer la documentation et le produit. Votre addresse e-mail ne sera pas utilisé à d'autres fins, et sera supprimée une fois que le problème que vous signalez sera résolu. Pendant la résolution du problème que vous signalez, il est possible que vous soyez contacté par e-mail pour obtenir des précisions ou des clarifications sur vos remarques. Une fois que le problème que vois signalez sera résolu, il est possible que vous receviez un e-mail pour vous en informer. + + + {@RootNamespaceTitle} + + Espaces de noms + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [Ceci est une documentation préliminaire, sous réserve de modification.]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/it-IT.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/it-IT.xml new file mode 100644 index 0000000..dc4d8e9 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/it-IT.xml @@ -0,0 +1,59 @@ + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + Your feedback is used to improve the documentation and the product. Your e-mail address will not be used for any other purpose and is disposed of after the issue you report is resolved. While working to resolve the issue that you report, you may be contacted via e-mail to get further details or clarification on the feedback you sent. After the issue you report has been addressed, you may receive an e-mail to let you know that your feedback has been addressed. + + + {@RootNamespaceTitle} + + Spazio dei nomi + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [Documentazione preliminare soggetta a variazioni.]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/ja-JP.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/ja-JP.xml new file mode 100644 index 0000000..f086eed --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/ja-JP.xml @@ -0,0 +1,60 @@ + + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + ドキュメント開発チームはドキュメントの品質向上にあなたのフィードバックを使用いたします。送信いただいたメールアドレスは他の用途に使用いたしません。問題が解決した後送信されたメールアドレスを破棄いたします。送信いただいた問題の処理において,詳細をお伺いする場合や問題の切り分けのためにコンタクトをとらせていただく場合がございます。 + + + {@RootNamespaceTitle} + + 名前空間 + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [これは仮のドキュメントであり、予告なく変更されます。]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/ko-KR.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/ko-KR.xml new file mode 100644 index 0000000..0c8933e --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/ko-KR.xml @@ -0,0 +1,59 @@ + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + Your feedback is used to improve the documentation and the product. Your e-mail address will not be used for any other purpose and is disposed of after the issue you report is resolved. While working to resolve the issue that you report, you may be contacted via e-mail to get further details or clarification on the feedback you sent. After the issue you report has been addressed, you may receive an e-mail to let you know that your feedback has been addressed. + + + {@RootNamespaceTitle} + + 네임스페이스 + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [This is preliminary documentation and is subject to change.]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/pt-BR.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/pt-BR.xml new file mode 100644 index 0000000..4615972 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/pt-BR.xml @@ -0,0 +1,59 @@ + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + Your feedback is used to improve the documentation and the product. Your e-mail address will not be used for any other purpose and is disposed of after the issue you report is resolved. While working to resolve the issue that you report, you may be contacted via e-mail to get further details or clarification on the feedback you sent. After the issue you report has been addressed, you may receive an e-mail to let you know that your feedback has been addressed. + + + {@RootNamespaceTitle} + + Espaços de Nome + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [Esta é uma documentação preliminar e está sujeita a alterações.]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/ru-RU.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/ru-RU.xml new file mode 100644 index 0000000..41a92cf --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/ru-RU.xml @@ -0,0 +1,59 @@ + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + Ваш отзыв будет использован для улучшения качества документации и продукта в целом. Адрес вашей электронной почты не будет использован для других целей и будет удалён, после того как ваш отзыв будет обработан. До окончания работ по обработке вашего отзыва, вы можете связаться с автором для получения дополнительной информации. После его обработки, вы можете получить сообщение об окончании работ по вашему отзыву на указанный адрес электронной почты. + + + {@RootNamespaceTitle} + + Пространства имен + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [Это предварительная версия документации. API может измениться в будущем.]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/zh-CHS.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/zh-CHS.xml new file mode 100644 index 0000000..6ecfd41 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/zh-CHS.xml @@ -0,0 +1,59 @@ + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + Your feedback is used to improve the documentation and the product. Your e-mail address will not be used for any other purpose and is disposed of after the issue you report is resolved. While working to resolve the issue that you report, you may be contacted via e-mail to get further details or clarification on the feedback you sent. After the issue you report has been addressed, you may receive an e-mail to let you know that your feedback has been addressed. + + + {@RootNamespaceTitle} + + 命名空间 + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [这是一个初步的说明文档有待于进一步改进。]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/zh-CN.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/zh-CN.xml new file mode 100644 index 0000000..71f7466 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/SHFBContent/zh-CN.xml @@ -0,0 +1,59 @@ + + + + + + {@HtmlEncCopyrightInfo} + {@HtmlEncCopyrightHref} + {@HtmlEncCopyrightText} + + {@HeaderText} {@Preliminary} + {@FooterText}{@Copyright}{@Comments} + Your feedback is used to improve the documentation and the product. Your e-mail address will not be used for any other purpose and is disposed of after the issue you report is resolved. While working to resolve the issue that you report, you may be contacted via e-mail to get further details or clarification on the feedback you sent. After the issue you report has been addressed, you may receive an e-mail to let you know that your feedback has been addressed. + + + {@RootNamespaceTitle} + + 命名空间 + + {@HtmlEncHelpTitle} + {@HtmlEncHelpTitle} + + + {@Locale} + branding-{@LocaleMixedCase}.css + +

    [本文档仅为初稿,以后可能会有变更。]

    + + + + + + {@HtmlEncCopyrightInfo} + + + Request Example + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/codeTemplates.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/codeTemplates.xsl new file mode 100644 index 0000000..6b21e44 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/codeTemplates.xsl @@ -0,0 +1,405 @@ + + + + + + + + + + + + + + + HTML + + + batch + + + PShell + + + Python + + + SQL + + + VBScript + + + VisualBasicAndCSharp + + + XML + + + + XAML + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    + + + + codeSnippetContainerTabSingle + + + codeSnippetContainerTab + + + + + + + + + + + + + + +
    +
    +
    +
    +
    + +
    +
    + +
    + + + + + + +
    + + + + display: block + + + display: none + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    + + + + + + + +
    + + + + +
    + +
    + + + + codeSnippetContainerTabSingle + + + codeSnippetContainerTabPhantom + + + codeSnippetContainerTab + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    + +
    +
    + +
    + + +
    + + + + display: block + + + display: none + + + + + + + + +
    +
    +
    +
    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + +
    
    +          
    +            
    +              
    +            
    +            
    +            
    +              
    +            
    +          
    +        
    +
    +
    + + + + + + +
    +
    +
    +
    + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/conceptualMetadataHelp20.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/conceptualMetadataHelp20.xsl new file mode 100644 index 0000000..d146cda --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/conceptualMetadataHelp20.xsl @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + + + , + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/conceptualMetadataHelp30.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/conceptualMetadataHelp30.xsl new file mode 100644 index 0000000..adaabee --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/conceptualMetadataHelp30.xsl @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + + , + + + + + + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/conceptualTopicTypes.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/conceptualTopicTypes.xsl new file mode 100644 index 0000000..32effac --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/conceptualTopicTypes.xsl @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/globalTemplates.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/globalTemplates.xsl new file mode 100644 index 0000000..1506faa --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/globalTemplates.xsl @@ -0,0 +1,855 @@ + + + + false + false + + + + + + + + + + + + + + + + ABCDEFGHIJKLMNOPQRSTUVWXYZ + abcdefghijklmnopqrstuvwxyz + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + + :: + . + + + + + + + + + + Nothing + nullptr + null + + + + + + + + + + + + + + + + + + Shared + static + + + + + + + + + + + + + + + + + + Overridable + virtual + + + + + + + + + + + + + + + + + + True + true + + + + + + + + + + + + + + + + + + False + false + + + + + + + + + + + + + + + + + + MustInherit + abstract + + + + + + + + + + + + + + + + + + NotInheritable + sealed + + + + + + + + + + + + + + + In + + in + + + + + + + + Out + + out + + + + + + + + + + + Async + async + + + + + + + + + + + + + + + + + + Await + let! + await + + + + + + + + + + + + + + + + + + Async + async + + / + + Await + let! + await + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + left + + + + +
    + + +

    + + + + + +

    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + {0} + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + +
    + + + {0} + + +
    +
    + + + + + + +
    + + + {0} + + +
    +
    + + + + + + +
    + + + {0} + + +
    +
    + +
    + + + + + + + + + + + + + + +
    + + + + + + + + + SectionExpanded.png + + + + + +
    +
    + +
    + + + + + + + +
    +
    + + + + + + + + + + + + +
    + + + + + + + + + SectionExpanded.png + + + + + +
    +
    + +
    + + + + + + + +
    +
    + + + + + +

    + + + + +

    + +
    + + + + + + + + + + alert_title_note + + + alert_title_tip + + + alert_title_caution + + + alert_title_security + + + alert_title_important + + + alert_title_visualBasic + + + alert_title_visualC# + + + alert_title_visualC++ + + + alert_title_visualJ# + + + text_NotesForImplementers + + + text_NotesForCallers + + + text_NotesForInheritors + + + alert_title_note + + + + + + + alert_altText_note + + + alert_altText_tip + + + alert_altText_caution + + + alert_altText_security + + + alert_altText_important + + + alert_altText_visualBasic + + + alert_altText_visualC# + + + alert_altText_visualC++ + + + alert_altText_visualJ# + + + alert_altText_note + + + + + + + AlertNote.png + + + AlertCaution.png + + + AlertSecurity.png + + + AlertCaution.png + + + AlertNote.png + + + AlertNote.png + + + AlertNote.png + + + AlertNote.png + + + AlertNote.png + + + +
    + + + + + + + +
    + + + + + + + + +   + +
    + + + + + + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/main_conceptual.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/main_conceptual.xsl new file mode 100644 index 0000000..41eccc1 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/main_conceptual.xsl @@ -0,0 +1,429 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:call-template name="t_topicTitlePlain" /> + + + + + + + + +
    +
    + + + + + + + +
    +
    + + + + +
    + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + subsection + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +

    +
    + +

    + +

    +
    + +

    + +

    +
    +
    + +
    +
    + + + +
  9. + + + + + + + + + + + +
    + +
    +
    +
  10. +
    +
    + + + + + + + + + + + + + + #cite[] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/main_sandcastle.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/main_sandcastle.xsl new file mode 100644 index 0000000..709085c --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/main_sandcastle.xsl @@ -0,0 +1,1284 @@ + + + + + + + + + + + + + + + + + + + + + + + +

    + +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + +

    + +

    +
    + + + + + + +
    + + + + + + + + +
    +
    + + + + + + + + + + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    +
    + + + + + + + + + + +
    + + +
    + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + +
    + + + + + + + + + + + +
    + + + +
    + + + +
    +
    +
    +
    +
    +
    + + + + + +
    + + + + + + + + + + + +
    + + + +
    + + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    + + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + This method is pure. + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +
    +
    +
    + + + + + + + + + + + + +
    + +
    +
    +
    +                
    +              
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + +
    + + Description: + + + +
    + + Inherited From: + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + Exception: + + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +
    +
    + + + + + + + +
    + + + +
    +
    + + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
      + +
    • + + + + + + + - + + + + + + + +
    • +
      +
    +
    + +
      + + + + + + +
    1. + + + + + + + - + + + + + + + +
    2. +
      +
    +
    + +
    + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    + +
    + +
    + +
    +
    + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {0} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {0} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _blank + + + + noopener noreferrer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #cite[] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + + + + + +
    +
    +
    +
    +
    +
    + + + + +
    \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/metadataHelp20.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/metadataHelp20.xsl new file mode 100644 index 0000000..fc27c7b --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/metadataHelp20.xsl @@ -0,0 +1,1012 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + + + , + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Members + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + http://schemas.microsoft.com/winfx/2006/xaml/presentation# + N:System.Windows.Controls#N:System.Windows.Documents#N:System.Windows.Shapes#N:System.Windows.Navigation#N:System.Windows.Data#N:System.Windows#N:System.Windows.Controls.Primitives#N:System.Windows.Media.Animation#N:System.Windows.Annotations#N:System.Windows.Annotations.Anchoring#N:System.Windows.Annotations.Storage#N:System.Windows.Media#N:System.Windows.Media.Animation#N:System.Windows.Media.Media3D#N: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/metadataHelp30.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/metadataHelp30.xsl new file mode 100644 index 0000000..519770e --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/metadataHelp30.xsl @@ -0,0 +1,729 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ctor + + + + + + + + + + + + + `` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ctor + + + + + `` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + + , + + + + + + + + + + + + + , + + + + + + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/novacta_latex_tools.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/novacta_latex_tools.xsl new file mode 100644 index 0000000..28b8487 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/novacta_latex_tools.xsl @@ -0,0 +1,110 @@ + + + + + LaTeX equation + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/seealso_dduexml.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/seealso_dduexml.xsl new file mode 100644 index 0000000..5b2c3f8 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/seealso_dduexml.xsl @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    +
    +
    +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/skeleton.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/skeleton.xml new file mode 100644 index 0000000..1a171e3 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/skeleton.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/skeleton_conceptual.xml b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/skeleton_conceptual.xml new file mode 100644 index 0000000..90ef0c7 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/skeleton_conceptual.xml @@ -0,0 +1,4 @@ + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/utilities_bibliography.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/utilities_bibliography.xsl new file mode 100644 index 0000000..1ca2c28 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/utilities_bibliography.xsl @@ -0,0 +1,36 @@ + + + + + + + + +
    + + cite + [] + + + , + + + , + + + + , + + + _blank + + noopener noreferrer + + + + +
    +
    +
    + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/utilities_dduexml.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/utilities_dduexml.xsl new file mode 100644 index 0000000..51fd32e --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/utilities_dduexml.xsl @@ -0,0 +1,1845 @@ + + + + + + + + + + + + + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + tt_ + + + + + + + + + + + + + + + + + + + + + + + + + + + + | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + + + + + + +

    +
    + + +
    +
    +
    +
    +
    + + + + + + + + +

    + +

    +
    + + + + +
    + +
    +
    +
    + + +

    + + + +

    + +
    + + +

    + + + +

    + +
    + + +

    + + + +

    + +
    + + + +

    + + + + + + + + , + + + + + + +

    +
    +
    + + + + + + + + + + + +
    +
    +
    + + +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + +

    + + + + + + +

    +
    +
    + + + + + + + +
    +
    + + + + + + + + +
      + +
    +
    + +
      + +
    +
    +
    + +
      + +
    +
    +
    +
    + + +
  11. + + + + + + +
  12. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +

    + +
    +
    + + + + + + +

    + +

    +
    + + + +

    + +

    + +
    +
    + + + +

    + +

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + +
    + +

    + +

    + + no + +
    + +

    +
    +
    +
    + + + + + + +
    + +

    +
    +
    + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
    +
    + +
      + + + + + + +
    +
    + +
      + +
    +
    +
    +
    + + +
  13. + + + + + + +
  14. +
    + + +
    + +
    + +
    +
    + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    + + +
    + + + + + + +
    +
    + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +

    +
    +
    + + + + + + + + + + + + +
    + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + +
    + + + mediaCenter + + + mediaFar + + + mediaNear + + + +
    + + + : + + + +
    +
    + + +
    + + + : + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _blank + + + + + noopener noreferrer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + +

    + + + + + +

    +
    + + + +

    + + + + + +

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +

    +
    + + + +
    + + + + + + + + + + + + + + + | + + + + +
    + + +
    + +
    + +
    +
    +
    + + +
    + + + + + + +

    + +

    +
    +
    + + + +
    + + + +
    +
    + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + , + + +
    +
    + + + +
    +   + + + + + + + + , + + +
    +
    +
    +
    + + + + + +
    +

    + + + + +

    +
    + + + +
    +
    +
    + + + +
    + + + + + +
    +
    + + + + + + + + + + + + + + + | + + + + + + + + | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/utilities_metadata.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/utilities_metadata.xsl new file mode 100644 index 0000000..de9e955 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/utilities_metadata.xsl @@ -0,0 +1,319 @@ + + + + + + + . + + + + ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %3C + + %3E + + + + + (Of + + ) + + + + + + + + + %2C + + + + + + + + + + + + + + + + + + + + + + + + + [ + , + ] + + + + ( + , + ) + + + + + + * + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + to + + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/utilities_reference.xsl b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/utilities_reference.xsl new file mode 100644 index 0000000..344ec84 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Transforms/utilities_reference.xsl @@ -0,0 +1,2611 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:call-template name="t_topicTitlePlain"> + <xsl:with-param name="p_qualifyMembers" select="true()" /> + </xsl:call-template> + + + + + + + + + +
    +
    + + + + + +
    +
    + + + + +
    + + + + + + + + topicTitle_ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + + + , + + + + , ... + + ) + + + + + + + ( + + + + + + to + + + + + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + . + + + + + + + + + + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + topicTitle_ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + + + , + + + + , ... + + ) + + + + + + + ( + + + + + + to + + + + + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + Narrowing + + + Widening + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default_namespace + + + + default_namespace + + + + + + + unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    +   + + + + + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + constructor + + + + + + property + + + + + + method + + + + + + event + + + + + + operator + + + + + + field + + + + + + attachedProperty + + + + + + attachedEvent + + + + + + extensionMethod + + + + + + explicitInterfaceImplementation + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +   + + + + +
    + +
    + + + + + + + genericExposedMembersTableText + exposedMembersTableText + + +

    + + + + + + + + +

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +   + + + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + prot + priv + pub + + + + + + ; public + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CFW.gif + + + + + + + + + xna.gif + + + + + + + + + slMobile.gif + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + public; + + + protected; + + + private; + + + explicit; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + public; + + + protected; + + + private; + + + explicit; + + + static; + + + declared; + + + inherited; + + + netcfw; + + + xnafw; + + + silverlight; + + + silverlight_mobile; + + + notNetfw; + + + + + + + ; + + + + + + + + + pub + prot + priv + pub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CodeExample.png + + + + + + + + + + + + + + + + + + method + + + + + operator + + + extension + + + method + + + + + + + + + + + + + + pubinterface.gif + + + + + + + + + + + + + + + + + + + + + + + + + + + + static.gif + + + + + + + + + + CFW.gif + + + + + + + + + + xna.gif + + + + + + + + + + slMobile.gif + + + + + + + + + + CodeExample.png + + + + + + + + + + + + + + + + + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    + + + + + + unsupported + + + + + + + + + + + + + + + + supported + + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + yes + + + + + + + + + + + + + + + yes + + + + + + + + +

    + +   + +
    + + + + + + +
    + + + + + + + , + + + + + + + + + + +
    +
    +
    + + + + + + +    + + + +
    +
    +
    + + +   + + +
    +
    + + + + + + + + + + + + + + dll + + + exe + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +

    +
    + +

    + + + + , + + +

    + +

    + +

    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +

    + +

    + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    + + + + + + + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + #L + + + + + noopener noreferrer + + + + + + + + + + + + + +
    + +
    + + + + + (Optional) + +
    +
    + + + + + + + +
    + + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + false + + + true + + + + true + + + + + + + + + + + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + < + + (Of + + < + <' + ( + + + + + , + + + + > + ) + > + > + ) + + + + + ( + + + + , + + + ) + + + + + < + + (Of + + < + <' + ( + + + + + , + + + + > + ) + > + > + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + array< + + + + + + + + , + + + > + + + ( + , + ) + + + [ + , + ] + + + + + + + [ + , + ] + + + + + array< + + + + + + , + + + > + + + ( + , + ) + + + [ + , + ] + + + + + + + + + + + + * + + + + + * + + + + + + + * + + + + + + + + + + + + + % + + + + + + + + + + + % + + + + + + + + + + + + true + + + + + + + true + + + + + + +
    diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/SearchHelp.aspx b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/SearchHelp.aspx new file mode 100644 index 0000000..40f4afe --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/SearchHelp.aspx @@ -0,0 +1,232 @@ +<%@ Page Language="C#" EnableViewState="False" %> + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/SearchHelp.inc.php b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/SearchHelp.inc.php new file mode 100644 index 0000000..b905e13 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/SearchHelp.inc.php @@ -0,0 +1,173 @@ +filename = $file; + $this->pageTitle = $title; + $this->rank = $rank; + } +} + + +/// +/// Split the search text up into keywords +/// +/// The keywords to parse +/// A list containing the words for which to search +function ParseKeywords($keywords) +{ + $keywordList = array(); + $words = preg_split("/[^\w]+/", $keywords); + + foreach($words as $word) + { + $checkWord = strtolower($word); + $first = substr($checkWord, 0, 1); + if(strlen($checkWord) > 2 && !ctype_digit($first) && !in_array($checkWord, $keywordList)) + { + array_push($keywordList, $checkWord); + } + } + + return $keywordList; +} + + +/// +/// Search for the specified keywords and return the results as a block of +/// HTML. +/// +/// The keywords for which to search +/// The file list +/// The dictionary used to find the words +/// True to sort by title, false to sort by +/// ranking +/// A block of HTML representing the search results. +function Search($keywords, $fileInfo, $wordDictionary, $sortByTitle) +{ + $sb = "
      "; + $matches = array(); + $matchingFileIndices = array(); + $rankings = array(); + + $isFirst = true; + + foreach($keywords as $word) + { + if (!array_key_exists($word, $wordDictionary)) + { + return "Nothing found"; + } + $occurrences = $wordDictionary[$word]; + + $matches[$word] = $occurrences; + $occurrenceIndices = array(); + + // Get a list of the file indices for this match + foreach($occurrences as $entry) + array_push($occurrenceIndices, ($entry >> 16)); + + if($isFirst) + { + $isFirst = false; + foreach($occurrenceIndices as $i) + { + array_push($matchingFileIndices, $i); + } + } + else + { + // After the first match, remove files that do not appear for + // all found keywords. + for($idx = 0; $idx < count($matchingFileIndices); $idx++) + { + if (!in_array($matchingFileIndices[$idx], $occurrenceIndices)) + { + array_splice($matchingFileIndices, $idx, 1); + $idx--; + } + } + } + } + + if(count($matchingFileIndices) == 0) + { + return "Nothing found"; + } + + // Rank the files based on the number of times the words occurs + foreach($matchingFileIndices as $index) + { + // Split out the title, filename, and word count + $fileIndex = explode("\x00", $fileInfo[$index]); + + $title = $fileIndex[0]; + $filename = $fileIndex[1]; + $wordCount = intval($fileIndex[2]); + $matchCount = 0; + + foreach($keywords as $words) + { + $occurrences = $matches[$word]; + + foreach($occurrences as $entry) + { + if(($entry >> 16) == $index) + $matchCount += $entry & 0xFFFF; + } + } + + $r = new Ranking($filename, $title, $matchCount * 1000 / $wordCount); + array_push($rankings, $r); + + if(count($rankings) > 99) + break; + } + + // Sort by rank in descending order or by page title in ascending order + if($sortByTitle) + { + usort($rankings, "cmprankbytitle"); + } + else + { + usort($rankings, "cmprank"); + } + + // Format the file list and return the results + foreach($rankings as $r) + { + $f = $r->filename; + $t = $r->pageTitle; + $sb .= "
    1. $t
    2. "; + } + + $sb .= "rank - $x->rank; +} + +function cmprankbytitle($x, $y) +{ + return strcmp($x->pageTitle, $y->pageTitle); +} + +?> diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/SearchHelp.php b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/SearchHelp.php new file mode 100644 index 0000000..eaa1e11 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/SearchHelp.php @@ -0,0 +1,58 @@ + + Nothing found + $val) + { + $wordDictionary[$ftiWord] = $val; + } + } + } + } + + // Perform the search and return the results as a block of HTML + $results = Search($keywords, $fileList, $wordDictionary, $sortByTitle); + echo $results; +?> \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/Web.Config b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/Web.Config new file mode 100644 index 0000000..f0f3e6c --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/Web.Config @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/html/GeneralError.htm b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/html/GeneralError.htm new file mode 100644 index 0000000..0264a03 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/html/GeneralError.htm @@ -0,0 +1,29 @@ + + + + + + + + + General Error + + + + + + + + + + +
      +

      We're sorry, a general error has occurred.

      +

      Please try to load the page again. If the error persists, please contact the site administrator.

      +
      + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/html/PageNotFound.htm b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/html/PageNotFound.htm new file mode 100644 index 0000000..3489be3 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/html/PageNotFound.htm @@ -0,0 +1,31 @@ + + + + + + + + + Page Not Found + + + + + + + + + + +
      +

      We're sorry, the page you requested cannot be found.

      +

      The URL might be misspelled or the page you are looking for is no longer available. If you entered +the web address, check that it doesn't contain a typo. You can use the search box at the top of the page to +try and locate the page.

      +
      + + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/icons/Search.png b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/icons/Search.png new file mode 100644 index 0000000000000000000000000000000000000000..42165b6d64c2ad706179b7eaa0485caa089e6ed9 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^!ayvawSc zV~Bl)>eG>!R=iK_%P!ZR!uvNw-nA5}SoCV%;XLf~kk5Lzl-FVdQ&MBb@0IsfxDF6Tf literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/icons/TocClose.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/icons/TocClose.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6d7b5edcc237dc7d59b4a42910a4abab459c94e GIT binary patch literal 893 zcmZ?wbhEHba}ave*XOV_wV2T|Nk?Lg3%Bd;vt{|az7|9FmPxysB_48 t1Sl}Dva;%BI4C4Ca`Fg?$QUR#H8gQ3@l*tSXkcXLWOnfIFj8Q!1_0$!Io|*P literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/icons/TocExpanded.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/icons/TocExpanded.gif new file mode 100644 index 0000000000000000000000000000000000000000..f774d9bb6589737768a8bf788046a8bbe53ca902 GIT binary patch literal 837 zcmZ?wbhEHb7O#s`Kb79LTx z0D+J54|j4a#f5BWU_8vgZ&{@x;lOZgBD1%Uz|TO2Mkd+leI^Z`=6lUB4c(-YS(JWi df}!fKEgT`qC%VM7g+j9?zO-NdpNWaV8UQoLL&5+6 literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/index.html b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/index.html new file mode 100644 index 0000000..0ceaeef --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/index.html @@ -0,0 +1,14 @@ + + + + + + + {@HtmlEncHelpTitle} - Redirect + + +

      If you are not redirected automatically, follow this link to the default topic.

      + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/scripts/branding-Website.js b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/scripts/branding-Website.js new file mode 100644 index 0000000..8727883 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/scripts/branding-Website.js @@ -0,0 +1,624 @@ +//=============================================================================================================== +// System : Sandcastle Help File Builder +// File : branding-Website.js +// Author : Eric Woodruff (Eric@EWoodruff.us) +// Updated : 03/04/2015 +// Note : Copyright 2014-2015, Eric Woodruff, All rights reserved +// Portions Copyright 2014 Sam Harwell, All rights reserved +// +// This file contains the methods necessary to implement the lightweight TOC and search functionality. +// +// This code is published under the Microsoft Public License (Ms-PL). A copy of the license should be +// distributed with the code and can be found at the project website: https://GitHub.com/EWSoftware/SHFB. This +// notice, the author's name, and all copyright notices must remain intact in all applications, documentation, +// and source files. +// +// Date Who Comments +// ============================================================================================================== +// 05/04/2014 EFW Created the code based on a combination of the lightweight TOC code from Sam Harwell and +// the existing search code from SHFB. +//=============================================================================================================== + +// Width of the TOC +var tocWidth; + +// Search method (0 = To be determined, 1 = ASPX, 2 = PHP, anything else = client-side script +var searchMethod = 0; + +// Table of contents script + +// Initialize the TOC by restoring its width from the cookie if present +function InitializeToc() +{ + tocWidth = parseInt(GetCookie("TocWidth", "280")); + ResizeToc(); + $(window).resize(SetNavHeight) +} + +function SetNavHeight() +{ + $leftNav = $("#leftNav") + $topicContent = $("#TopicContent") + leftNavPadding = $leftNav.outerHeight() - $leftNav.height() + contentPadding = $topicContent.outerHeight() - $topicContent.height() + // want outer height of left navigation div to match outer height of content + leftNavHeight = $topicContent.outerHeight() - leftNavPadding + $leftNav.css("min-height", leftNavHeight + "px") +} + +// Increase the TOC width +function OnIncreaseToc() +{ + if(tocWidth < 1) + tocWidth = 280; + else + tocWidth += 100; + + if(tocWidth > 680) + tocWidth = 0; + + ResizeToc(); + SetCookie("TocWidth", tocWidth); +} + +// Reset the TOC to its default width +function OnResetToc() +{ + tocWidth = 0; + + ResizeToc(); + SetCookie("TocWidth", tocWidth); +} + +// Resize the TOC width +function ResizeToc() +{ + var toc = document.getElementById("leftNav"); + + if(toc) + { + // Set TOC width + toc.style.width = tocWidth + "px"; + + var leftNavPadding = 10; + + document.getElementById("TopicContent").style.marginLeft = (tocWidth + leftNavPadding) + "px"; + + // Position images + document.getElementById("TocResize").style.left = (tocWidth + leftNavPadding) + "px"; + + // Hide/show increase TOC width image + document.getElementById("ResizeImageIncrease").style.display = (tocWidth >= 680) ? "none" : ""; + + // Hide/show reset TOC width image + document.getElementById("ResizeImageReset").style.display = (tocWidth < 680) ? "none" : ""; + } + + SetNavHeight() +} + +// Toggle a TOC entry between its collapsed and expanded state +function Toggle(item) +{ + var isExpanded = $(item).hasClass("tocExpanded"); + + $(item).toggleClass("tocExpanded tocCollapsed"); + + if(isExpanded) + { + Collapse($(item).parent()); + } + else + { + var childrenLoaded = $(item).parent().attr("data-childrenloaded"); + + if(childrenLoaded) + { + Expand($(item).parent()); + } + else + { + var tocid = $(item).next().attr("tocid"); + + $.ajax({ + url: "../toc/" + tocid + ".xml", + async: true, + dataType: "xml", + success: function(data) + { + BuildChildren($(item).parent(), data); + } + }); + } + } +} + +// HTML encode a value for use on the page +function HtmlEncode(value) +{ + // Create an in-memory div, set it's inner text (which jQuery automatically encodes) then grab the encoded + // contents back out. The div never exists on the page. + return $('
      ').text(value).html(); +} + +// Build the child entries of a TOC entry +function BuildChildren(tocDiv, data) +{ + var childLevel = +tocDiv.attr("data-toclevel") + 1; + var childTocLevel = childLevel >= 10 ? 10 : childLevel; + var elements = data.getElementsByTagName("HelpTOCNode"); + + var isRoot = true; + + if(data.getElementsByTagName("HelpTOC").length == 0) + { + // The first node is the root node of this group, don't show it again + isRoot = false; + } + + for(var i = elements.length - 1; i > 0 || (isRoot && i == 0); i--) + { + var childHRef, childId = elements[i].getAttribute("Url"); + + if(childId != null && childId.length > 5) + { + // The Url attribute has the form "html/{childId}.htm" + childHRef = "../" + childId; + childId = childId.substring(childId.lastIndexOf("/") + 1, childId.lastIndexOf(".")); + } + else + { + // The Id attribute is in raw form. There is no URL (empty container node). In this case, we'll + // just ignore it and go nowhere. It's a rare case that isn't worth trying to get the first child. + // Instead, we'll just expand the node (see below). + childHRef = "#"; + childId = elements[i].getAttribute("Id"); + } + + var existingItem = null; + + tocDiv.nextAll().each(function() + { + if(!existingItem && $(this).children().last("a").attr("tocid") == childId) + { + existingItem = $(this); + } + }); + + if(existingItem != null) + { + // First move the children of the existing item + var existingChildLevel = +existingItem.attr("data-toclevel"); + var doneMoving = false; + var inserter = tocDiv; + + existingItem.nextAll().each(function() + { + if(!doneMoving && +$(this).attr("data-toclevel") > existingChildLevel) + { + inserter.after($(this)); + inserter = $(this); + $(this).attr("data-toclevel", +$(this).attr("data-toclevel") + childLevel - existingChildLevel); + + if($(this).hasClass("current")) + $(this).attr("class", "toclevel" + (+$(this).attr("data-toclevel") + " current")); + else + $(this).attr("class", "toclevel" + (+$(this).attr("data-toclevel"))); + } + else + { + doneMoving = true; + } + }); + + // Now move the existing item itself + tocDiv.after(existingItem); + existingItem.attr("data-toclevel", childLevel); + existingItem.attr("class", "toclevel" + childLevel); + } + else + { + var hasChildren = elements[i].getAttribute("HasChildren"); + var childTitle = HtmlEncode(elements[i].getAttribute("Title")); + var expander = ""; + + if(hasChildren) + expander = ""; + + var text = "
      " + + expander + "" + + childTitle + "
      "; + + tocDiv.after(text); + } + } + + tocDiv.attr("data-childrenloaded", true); +} + +// Collapse a TOC entry +function Collapse(tocDiv) +{ + // Hide all the TOC elements after item, until we reach one with a data-toclevel less than or equal to the + // current item's value. + var tocLevel = +tocDiv.attr("data-toclevel"); + var done = false; + + tocDiv.nextAll().each(function() + { + if(!done && +$(this).attr("data-toclevel") > tocLevel) + { + $(this).hide(); + } + else + { + done = true; + } + }); +} + +// Expand a TOC entry +function Expand(tocDiv) +{ + // Show all the TOC elements after item, until we reach one with a data-toclevel less than or equal to the + // current item's value + var tocLevel = +tocDiv.attr("data-toclevel"); + var done = false; + + tocDiv.nextAll().each(function() + { + if(done) + { + return; + } + + var childTocLevel = +$(this).attr("data-toclevel"); + + if(childTocLevel == tocLevel + 1) + { + $(this).show(); + + if($(this).children("a").first().hasClass("tocExpanded")) + { + Expand($(this)); + } + } + else if(childTocLevel > tocLevel + 1) + { + // Ignore this node, handled by recursive calls + } + else + { + done = true; + } + }); +} + +// This is called to prepare for dragging the sizer div +function OnMouseDown(event) +{ + document.addEventListener("mousemove", OnMouseMove, true); + document.addEventListener("mouseup", OnMouseUp, true); + event.preventDefault(); +} + +// Resize the TOC as the sizer is dragged +function OnMouseMove(event) +{ + tocWidth = (event.clientX > 700) ? 700 : (event.clientX < 100) ? 100 : event.clientX; + + ResizeToc(); +} + +// Finish the drag operation when the mouse button is released +function OnMouseUp(event) +{ + document.removeEventListener("mousemove", OnMouseMove, true); + document.removeEventListener("mouseup", OnMouseUp, true); + + SetCookie("TocWidth", tocWidth); +} + +// Search functions + +// Transfer to the search page from a topic +function TransferToSearchPage() +{ + var searchText = document.getElementById("SearchTextBox").value.trim(); + + if(searchText.length != 0) + document.location.replace(encodeURI("../search.html?SearchText=" + searchText)); +} + +// Initiate a search when the search page loads +function OnSearchPageLoad() +{ + var queryString = decodeURI(document.location.search); + + if(queryString != "") + { + var idx, options = queryString.split(/[\?\=\&]/); + + for(idx = 0; idx < options.length; idx++) + if(options[idx] == "SearchText" && idx + 1 < options.length) + { + document.getElementById("txtSearchText").value = options[idx + 1]; + PerformSearch(); + break; + } + } +} + +// Perform a search using the best available method +function PerformSearch() +{ + var searchText = document.getElementById("txtSearchText").value; + var sortByTitle = document.getElementById("chkSortByTitle").checked; + var searchResults = document.getElementById("searchResults"); + + if(searchText.length == 0) + { + searchResults.innerHTML = "Nothing found"; + return; + } + + searchResults.innerHTML = "Searching..."; + + // Determine the search method if not done already. The ASPX and PHP searches are more efficient as they + // run asynchronously server-side. If they can't be used, it defaults to the client-side script below which + // will work but has to download the index files. For large help sites, this can be inefficient. + if(searchMethod == 0) + searchMethod = DetermineSearchMethod(); + + if(searchMethod == 1) + { + $.ajax({ + type: "GET", + url: encodeURI("SearchHelp.aspx?Keywords=" + searchText + "&SortByTitle=" + sortByTitle), + success: function(html) + { + searchResults.innerHTML = html; + } + }); + + return; + } + + if(searchMethod == 2) + { + $.ajax({ + type: "GET", + url: encodeURI("SearchHelp.php?Keywords=" + searchText + "&SortByTitle=" + sortByTitle), + success: function(html) + { + searchResults.innerHTML = html; + } + }); + + return; + } + + // Parse the keywords + var keywords = ParseKeywords(searchText); + + // Get the list of files. We'll be getting multiple files so we need to do this synchronously. + var fileList = []; + + $.ajax({ + type: "GET", + url: "fti/FTI_Files.json", + dataType: "json", + async: false, + success: function(data) + { + $.each(data, function(key, val) + { + fileList[key] = val; + }); + } + }); + + var letters = []; + var wordDictionary = {}; + var wordNotFound = false; + + // Load the keyword files for each keyword starting letter + for(var idx = 0; idx < keywords.length && !wordNotFound; idx++) + { + var letter = keywords[idx].substring(0, 1); + + if($.inArray(letter, letters) == -1) + { + letters.push(letter); + + $.ajax({ + type: "GET", + url: "fti/FTI_" + letter.charCodeAt(0) + ".json", + dataType: "json", + async: false, + success: function(data) + { + var wordCount = 0; + + $.each(data, function(key, val) + { + wordDictionary[key] = val; + wordCount++; + }); + + if(wordCount == 0) + wordNotFound = true; + } + }); + } + } + + if(wordNotFound) + searchResults.innerHTML = "Nothing found"; + else + searchResults.innerHTML = SearchForKeywords(keywords, fileList, wordDictionary, sortByTitle); +} + +// Determine the search method by seeing if the ASPX or PHP search pages are present and working +function DetermineSearchMethod() +{ + var method = 3; + + try + { + $.ajax({ + type: "GET", + url: "SearchHelp.aspx", + async: false, + success: function(html) + { + if(html.substring(0, 8) == "") + method = 1; + } + }); + + if(method == 3) + $.ajax({ + type: "GET", + url: "SearchHelp.php", + async: false, + success: function(html) + { + if(html.substring(0, 8) == "") + method = 2; + } + }); + } + catch(e) + { + } + + return method; +} + +// Split the search text up into keywords +function ParseKeywords(keywords) +{ + var keywordList = []; + var checkWord; + var words = keywords.split(/[\s!@#$%^&*()\-=+\[\]{}\\|<>;:'",.<>/?`~]+/); + + for(var idx = 0; idx < words.length; idx++) + { + checkWord = words[idx].toLowerCase(); + + if(checkWord.length > 2) + { + var charCode = checkWord.charCodeAt(0); + + if((charCode < 48 || charCode > 57) && $.inArray(checkWord, keywordList) == -1) + keywordList.push(checkWord); + } + } + + return keywordList; +} + +// Search for keywords and generate a block of HTML containing the results +function SearchForKeywords(keywords, fileInfo, wordDictionary, sortByTitle) +{ + var matches = [], matchingFileIndices = [], rankings = []; + var isFirst = true; + + for(var idx = 0; idx < keywords.length; idx++) + { + var word = keywords[idx]; + var occurrences = wordDictionary[word]; + + // All keywords must be found + if(occurrences == null) + return "Nothing found"; + + matches[word] = occurrences; + var occurrenceIndices = []; + + // Get a list of the file indices for this match. These are 64-bit numbers but JavaScript only does + // bit shifts on 32-bit values so we divide by 2^16 to get the same effect as ">> 16" and use floor() + // to truncate the result. + for(var ind in occurrences) + occurrenceIndices.push(Math.floor(occurrences[ind] / Math.pow(2, 16))); + + if(isFirst) + { + isFirst = false; + + for(var matchInd in occurrenceIndices) + matchingFileIndices.push(occurrenceIndices[matchInd]); + } + else + { + // After the first match, remove files that do not appear for all found keywords + for(var checkIdx = 0; checkIdx < matchingFileIndices.length; checkIdx++) + if($.inArray(matchingFileIndices[checkIdx], occurrenceIndices) == -1) + { + matchingFileIndices.splice(checkIdx, 1); + checkIdx--; + } + } + } + + if(matchingFileIndices.length == 0) + return "Nothing found"; + + // Rank the files based on the number of times the words occurs + for(var fileIdx = 0; fileIdx < matchingFileIndices.length; fileIdx++) + { + // Split out the title, filename, and word count + var matchingIdx = matchingFileIndices[fileIdx]; + var fileIndex = fileInfo[matchingIdx].split(/\0/); + + var title = fileIndex[0]; + var filename = fileIndex[1]; + var wordCount = parseInt(fileIndex[2]); + var matchCount = 0; + + for(var idx = 0; idx < keywords.length; idx++) + { + occurrences = matches[keywords[idx]]; + + for(var ind in occurrences) + { + var entry = occurrences[ind]; + + // These are 64-bit numbers but JavaScript only does bit shifts on 32-bit values so we divide + // by 2^16 to get the same effect as ">> 16" and use floor() to truncate the result. + if(Math.floor(entry / Math.pow(2, 16)) == matchingIdx) + matchCount += (entry & 0xFFFF); + } + } + + rankings.push({ Filename: filename, PageTitle: title, Rank: matchCount * 1000 / wordCount }); + + if(rankings.length > 99) + break; + } + + rankings.sort(function(x, y) + { + if(!sortByTitle) + return y.Rank - x.Rank; + + return x.PageTitle.localeCompare(y.PageTitle); + }); + + // Format and return the results + var content = "
        "; + + for(var r in rankings) + content += "
      1. " + + rankings[r].PageTitle + "
      2. "; + + content += "
      "; + + if(rankings.length < matchingFileIndices.length) + content += "

      Omitted " + (matchingFileIndices.length - rankings.length) + " more results

      "; + + return content; +} diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/scripts/clipboard.min.js b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/scripts/clipboard.min.js new file mode 100644 index 0000000..580433f --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/Web/scripts/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v1.5.12 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Clipboard=t()}}(function(){var t,e,n;return function t(e,n,o){function i(a,c){if(!n[a]){if(!e[a]){var s="function"==typeof require&&require;if(!c&&s)return s(a,!0);if(r)return r(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var u=n[a]={exports:{}};e[a][0].call(u.exports,function(t){var n=e[a][1][t];return i(n?n:t)},u,u.exports,t,e,n,o)}return n[a].exports}for(var r="function"==typeof require&&require,a=0;ao;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],i=[];if(o&&e)for(var r=0,a=o.length;a>r;r++)o[r].fn!==e&&o[r].fn._!==e&&i.push(o[r]);return i.length?n[t]=i:delete n[t],this}},e.exports=o},{}],8:[function(e,n,o){!function(i,r){if("function"==typeof t&&t.amd)t(["module","select"],r);else if("undefined"!=typeof o)r(n,e("select"));else{var a={exports:{}};r(a,i.select),i.clipboardAction=a.exports}}(this,function(t,e){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=n(e),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},a=function(){function t(t,e){for(var n=0;n+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
      ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 + + + {@HtmlEncHelpTitle} - Search + + + + + + + + +
      +
      +
      +
      + + +
      +
      +    + Sort by title +
      +
      +
      +
      +

      + Back

      +
      +
      + + diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/AlertCaution.png b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/AlertCaution.png new file mode 100644 index 0000000000000000000000000000000000000000..78f246f047efee82e1ee0b64f1adbef606253054 GIT binary patch literal 618 zcmV-w0+s!VP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-;7LS5RCwBylfP~gK^Vk;-}-FFIChME=h(5G2(T6; zpah97qN1X89i>STp`=JblN3Bb-XLY%Q1AcdkQrp!HXSPCG~edkf_v zbNLd`4I;g&my7af(tY z!^x4-&e|Q|sk}S%YrxB;<)U85f{Q}17Mvr0|04k1_t(Mm5D^gJ?7QL1(b)&!p$F_H zQ=ZPJBkW)V#(=Z@IwE#7fKVZ7{EzbK1jh-bjj_8Pu)0*s;YK}N6oDJ3Bf{6$rO6{A zf)fBiL|Ck3`TVK7>H(*(-W>D)7;>$iJe67F{IB>i05~0`Lczgc$^ZZW07*qoM6N<$ Ef-W!&ivR!s literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/AlertNote.png b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/AlertNote.png new file mode 100644 index 0000000000000000000000000000000000000000..dc76333741e7eec739bce61fe0bbf7e48ef5c8ee GIT binary patch literal 1054 zcmZ{iYfMvj7{>o}5EMa4Ad$FRr5Adkvw%8UvJ4igB?Dy8NOcIvwb0hWIAy>D3M>o< zGHyb_238cYRG3u8z`4!4b5fYF81&OJ1PW-er>E!EChYKWAC~;y_sR1l&xbd8&!r?E z4e;CN2LK32kjAG{8n`_>-l8@~uqTZY@4~pGH~_}K+vPd!LwS0xG&Ko;Di#2`1^|dH zO4k6;3ISNp20*L_V6Ubl>%kEKXn`q-GRfA~)`W?FW0*fa#Q)(kZ`8;)5AaO=ykP@x zsE>C^&o%aN2f8?h4(`P^?)VVTLoRs8c@IJH)I&b)ZswScRQRWdpqTRzvu*x4B1RcS-cl`TDRyJ(t98ljv`x z>sJ!}g>c;>Tt5@8o8&gr1TsY+lTEek{!T85OcKZh;k-dOEx2=>a9$^zV>mpD!`B+B z*uAYB95&e4Z+ z7TI4@GVApto%P|i=L+X)1!60Au2N{7t59hXv%ZoIuR>;{r0~>x11-@DQ)yO9YFA^V zZ7~a8QNzm=Dor7?M$3Yim5$}&xqIn~Q~NsWc->#KT6BWD6VjK@PCAzI;H7+ZKC`Nn zRjFZ@Ygk$}3sSPml+02EQ=QMy6fo5V%rgZHRW3u7$E2R&rmbY1`XetWH8~B$t}GU8 zo19ON#)BrGccqlsSt31A2EeYM?ePMAh7c80_2p!Es%cgUf;h~|Se!+o3J#Aeb-R>C+t;xx=AB@F%efZ^`V+SEo{4hcSDMDh7CVS71kJy|JoSw`x~N=*6E`ncjW9v){SLPH0A|+~=cCH+d?+BJpR6L%~ zf0BMJ9E}aWDS)PeHB8D=Mh`|AO~BIhj-eBuJ9u$3Drf{} zF>4e-6o9|k-P;^zp(G}o+k;ec1O#g<5k!p<3mXf2!IaktVku~48GAv{RuEBy5X2vl z#t`C}C57MRV)tMtBW^pOj9bC84h9&!WM3@%+kg+#{JoaBE&hFgzeSF?RlT} z9&C3kv^j^PLoUr+;3}V4+Moga8-Q)sZ8czJWypgkuQIzg&*$XwMPRdBFScOivh=v; z!-HXNd-tayjs;t{iuDD+DIy0DF(86SZnh{T7y*>~2S5S5exw8-D&5Hr&L;1&b=SH} z$=1Y&L%h;Q0Pa6Ke#HT}J~t0Q?m tQ)sP!{{^91t5K;`{%`Qbw-vBLDh*rjvI{K}%vsHm@h_?tw;Z7`jJPwSdcxnw$~gG!RFk%*O*|I1~?_r=Vw zW31k*ZJTPZXD-TrHg274%78fS{q4kPEz6ow%IwOa&Zb~yd6;xJgr$h)xL?S8H^*){ zp<^_vpM8wGik;1zgtUU`!F9`^RlDZ8o2#KvOh%~ItUx<8m&TTvYdD#5KgoSI$$&Y` zo>9tvHrAF=$caVbrC^oCleOlxnP@f1x`BYNevGeAzwg4P)T&`vMTm%qrD-ymZaeFe zLb8BL$&X25Vq(gVN10|b$9Xr%dpF$l+yDRn000000000000000A^8LW004UcEC2ui z01yBW000N6fO~>_1}SLPB)mW!_w<;6q)BF&{is;nBp+15yFz aYzYIwMwU7PNbLy_pn!w|0x}K?1OPh{BoK)J literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/CodeExample.png b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/CodeExample.png new file mode 100644 index 0000000000000000000000000000000000000000..a3b9fba4cc5f29460d711dddb32b79b85783af9a GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!AMUR#}EtuMf8pRk0XW?`S;ryG~}Z?XkE$(i7NV%yAs7l(t? nuW2~*F(>VD=(TZ|HfE5{S-0gp>+@4UOBg&|{an^LB{Ts5mnuH4 literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/SectionCollapsed.png b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/SectionCollapsed.png new file mode 100644 index 0000000000000000000000000000000000000000..8ded1ebc6b03328520aac9416ea15f07e63809a8 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xamUKs7M+SzC{oH>NS%G}c0*}aI z1_mK8X6#Yg$qp2hDshb{3C>R|DNig)We7;j%q!9Ja}7}_GuAWJGc|_p9mFVf> z7-HeScG5-81_K@!>nOKVY?6k`bMLh$RNeCW@W8S5!vYcZ1~H{GJn!n{R?im{6g+Vz zSEosFd$((h;`T1rJI?QP_2g6db}rxH@?`sl(yP}VuTfHJdZ?$QbZh?|a|1rj<3Z`n T`6XRI%NRUe{an^LB{Ts5&hJQu literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/SectionExpanded.png b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/SectionExpanded.png new file mode 100644 index 0000000000000000000000000000000000000000..b693921cc92c2b00c06b842c8d098ea63afc1cfc GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xamUKs7M+SzC{oH>NS%G}c0*}aI z1_mK8X6#Yg$qp2hDshb{3C>R|DNig)We7;j%q!9Ja}7}_GuAWJGc|_p9747Nb z7-Hc+xBDRP0RtW;<0khn|GalRO}y^q>HN!rlhIu1k@%L71xuN9)9?JPQ?iR~71fmO zjGc5ea*~T$?$N0%zt%JTnB?&Pl+X$N6$xqUli92599x4kcB&s^{ZR0-?|xgoAkZ2H MPgg&ebxsLQ08eg56951J literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/favicon.ico b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..2b9963f814281f0b1b7bb661be8d579191b59a42 GIT binary patch literal 25094 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 literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privclass.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privclass.gif new file mode 100644 index 0000000000000000000000000000000000000000..0939694ce08ad44508f6f017b68e46f0f22377b9 GIT binary patch literal 621 zcmZ?wbhEHb6krfwc;?UW|NsB|hUt&r{rL9oM)d3(_aDFd`{wV%RU+Tt-(Iu*bdPSY zqjyAO5)Xs%%*W4OT}r)t^1|KQ1$X{_`1|40mlNl1p1OGN*VKPj>%-QMrvoZ0aqv=U>zv((uk1Z`&AIsGhXbbm$u+t4({AM4 zoUwe*+pV&@k6t-)=GK>oZB<oaqPkBNogHUHno4%^Ngbh!J5dZ96zXj&rOBmSr#rWBn`?Qta4AyNBlN99gXZF;U z(BWY`VYPQZo4>HAqB^H51EW8i_+6gJ+{k9ar8DD%q6<$7gRGgrgar((tRfl{0+c)& nCbWOC3iz+epk2~OYT literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privdelegate.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privdelegate.gif new file mode 100644 index 0000000000000000000000000000000000000000..d3aa8a65ef5277c6682f106de956da036c50d363 GIT binary patch literal 1045 zcmZ?wbhEHb6krfw_&$x{|NsBD3-0`y@q4k|5=ZZdhfm);e)ek3_S5^0UpsN`=JQu? zFQs0-|M=CZi}!XMxOD0IqaNMfjl0hJCs*%1c5Tz{a|>10-$^W=rQx9>k+>ALFmyU(xQe4H?EgI8Snr_bMJEZ?*H@RcuL ze=OZ_+&{Ty;o2jswjSAiIO7^wyn6fTZ3ixeXEp6UdL_BEH>IrC+CTH&qnA?_ zZr-r_?BoSIFQ;Fbx_Ik^d0S4LzjJZVqo>#39XfGw&#H^BC%mcZTCnHn)n99Wox5`H z=da%fPF&x-_rl%7FP}Vr9h%+{U)V8w*_Mra&Odl`_2jZ^p&5-&p1+&CaMzAQm*=cF zU=x^q`R1Lk-+rv!ekLNjxp&UC=}Y#m-gbJC-Qv>LIg{q^j4SB0@XI)R`PRnW=VJ5Q zXDr?K;^v1fd(Y(7PdmEh)~oK}Z+;!hSv z28L-2Iv@i;d4hrC6N4_N%!&qId44W7EtMCGCW#wQIi?e0vCxHsp-kl9Op6K4Vs;D+ zcRp^uaCVY-@DqoX8Ynj67>A_%qWsZWPnuD}Kw%&~mCC`=#izx;#2uhqQ1RGQZ~`_sezFVAOg+I?={@oQh6&3J#O_0`3qcQ@)kJ)ZdG+03e*WmVnF z^Bd>vIB@CF#g+GVc;49Hc?*VhX^eEL$_I;S?t z;q-yc?{Bw0JskD*+0M2c_oqi=CRPT;=C|KGzkX&z#JAUn!n2y*T&c`&nEqh9%hwnC zj-0t!6=(DDL0?K)@6G+0dyidvbv}Rpw$;g{y)%~Yxxd46$H7ahx1WA_Dm}e?LT>%E z=ORU|^GzS5cL1XHZiY5LXoA)t{s+AtlYi9Tz=Gm|uiP)WbllqpPP+ z)n1a1MVG-Qb@J5dGyP4i^w=yDcg>x@Fn~iQhRG>ed)KlRqDdT#Ok55L&0)4WTUh+8 zU7DCIG@4uk%^kgCje~tTIqkw(n`EO*4C6yN8JXA^6cbM@GzwzkiQs5z?rCOXl94EQ h;J~8BE~;=s>7Yl8atNQ8$3hiOG3k^KQ#n}}tN|oJ0crpM literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privevent.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privevent.gif new file mode 100644 index 0000000000000000000000000000000000000000..30db46df766c1b49bf86b168eaae03052ce8f292 GIT binary patch literal 580 zcmZ?wbhEHb6krfwcoxC%u)XR2<5$m5ME<&1wr2ZjNAHM}7w(?Ac<;oyoByBGKYsS= z!>2EQo@`jK`p~A`=l*@Vx#Pg4eaEjod-~|o^+*5z|L>^sdbOcGw|?5!19>l>J$(7} z{;?esvXVR|%-eGJOka3b)BFnAZ|^Vv{PMV`DW&#T9hkzICOvb-pxf=`s=6a*ZoWIz zncpzIeag~^VDI;PCrob+ez~A=_t7iqfi@{+eH(Y3%?r|f{`lU39rK<(ymj|z)7mD5 zrw^`IbuB!xslq?GCb_hC@3CvEx1X-eaXWu-;f{ls(#t3KCsj|)mk0WVVIY9wPZmZ7 zh6n~7kmaB_VPId_5Yg1!(%ROnB&Vz4>1!6;9>K)JX=TD-E7GpT#LsNOAR{z!GP4+i z=;C(8xe^TKMzh+PI5{=#92lIWnz-2oTv$x)gOr&WT)msw8CiG(d?KWetLrp#Tk1El zSi2t&_h{jAlx1VncGhE1P;F&n{J)Pg~o YNt8WsjZ2WhW2dPS@^dsgL^v3%0lNU+2mk;8 literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privextension.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privextension.gif new file mode 100644 index 0000000000000000000000000000000000000000..51dd267f0f7fa11a657ef51a69cb9159ced8775f GIT binary patch literal 608 zcmZ?wbhEHb6krfwc$Uj>|M9Ey9p}}Y>Kwfz)@(n0{n3wKGk%}Cc< z_}MGFi~}D&eOa*j(7xl>E?s|g`Sz<#yU*=7aOue|7!l#yEE=pbuCOO>kH3nI&$V# zjc)DB39o7_8sE)*uj)OkMz7}o|NlqM+G+UdKH=Bu-=(c{a_gsQ z1uU2rG~KoM((a>IdQJQC8>WYKecrh1?6QF6Z*RPfE9eZ(Xq;m+*QfS@Z~c=GS3ax^ zTJ>w@@5E{UcO1MFKjq)+iEn)CAJ^&CP4Jue`SIu17hjhcRQy`^J9g6Fcl+M0-hSFY zsoJCbCeRHGWC6vWEQ|~cxePiW-Jm#OVBg!2+mtK9sNLMr*(%AH(%Bisn3JRM%%x*_Q%!)u8UTgK6xaX& literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privfield.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privfield.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbf70f7a3fc3875ee62d9a4dacf3a088e60f2eff GIT binary patch literal 574 zcmZ?wbhEHb6krfwcoxXOU_A5w<5$tMZ>-sV+R-~==Gp&`pS{|2ck;sB zs9D$d9ly5Yz@<&Q&uu;O@WZDsC9Cc&SbgZy^+%N(9`8MN?Z}y%6XtD6FP{*e)in3~ zzufw1b5DMnaOB&iXFs-|e^#^Q<&J}w)?fS6ec;Rd3;%W>y&~tgvS#!1OV55@eerwW z>8D3;f7FcHFk|_i)!R>>ef+a_)6>Nl|83lLHm;y^;^B`~T?=Do-)Ne+#58$p#rnq@ z;p=xFzH;Qut;^4U{r>&u-rHZLt#eY!di|5Cv#KYq*?aHM%@6qv)B6s6UU=bOMceF@ zvc9J6ue$cWTYU13e{xOrrl-$8{{H{}Kf|B_ia%Kx85jZ?bU-cw#R&uZ?1sRm=9bpB zHaUZU_EvpM9})YWCR<-wR(BDN9!-B`R#p!gogQ@)DOMGBHHIERZ+1g=D~7d!0-U@? z%mRW;3Q87Rw{bEu3yGSVF)U@oS6M zA3Ad8=A4!LcOSW$UOu6=Z^@K}JJxPL8J*X*|M-=-g3j&xFKyU)V)>?{I}TpXZ~<8FFA!5q?GmgC)b2$HO1z)FWq>|KdHLBV_s-R-W7qZ^xtdtqH)rL+s;-4+F5gKh>zlEBk85Oca%u1E75ir{-(B0g{Nd9# zy|Xv%K71v)w13l{a|_oV*|_WMw*9Ab>!+2r&Z+KNvj6DiBWG>_y~!{@K=CIFBLhP? zgAT}kP@FKZFKY;IYHn$5Yvu6MkYR3b=1}JKwsGk75|9;ZQRHQ1XO;2{7vK;Tv@llE zQ8i=dV%PEww-YrK_mH=CRq&t38YmJjCMfRI!tAads%9?~&cq`ez{u3h9AYkVE}Vyf zQNq@-@4U1N7Z;=E)pj;hOKxsmXSP0WhVKk~l5TxI3@i+?J`E2w7#dhugj6aV4hyoe bg&D1>Sm4~I%pAO=LgC{f*1gV+3=Gx);f>!6 literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privmethod.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privmethod.gif new file mode 100644 index 0000000000000000000000000000000000000000..71f882264291eb056bc55dce1c73f9b7cae1aa4a GIT binary patch literal 603 zcmZ?wbhEHb6krfwc$UHN|NsB{k6)edIDhH-BS-IuHQP_0ICpc??sJcyy*hRA-iJ?L ze$DuO^1|H}0V}UwUGr|~``!6_zJFLf1uPs=8=+o^_@AkcWyykJKdg;o5 zRcp4cO)Tnsaq-2=r>kFIe7)n~r6Xr+a6D*XPzhEogdr`Gor$?uTbJUCqDx;p&H8)4r=Su0A{SY{rsxbq4hpvo3Yb zTvysUr$(=)P^IYQgjc<@*Zx}f``z64DP_I$ZRY>}{pZ*0-%~B7olZY9f7R|9-P$kD zzFf+_TyN0u`SIt=H*SBp^5M;;Hxv9OR%uuJC)eygd}Z&kYjFjgZ*RQ)wfgsm#~*U* zr=^tj{hIlEj?LUh>mU7^|NHgCHwTZbSrxH*!n`dPb1zkO%w4_xbbkF5V7M_*11SDv zVPs&)V9)^>28t5~_8kowP0cN0Opz^}&217)zFjT;OyUj+rW!4Rd|Flv25}MG+;&V} z3=@(B_+7bU)B_m=<@ge%%`?eE&*(~qUwlq@F(Tx>i;Nlc!XZ6ca;`P?Fa5nK| z;ACVKW%g*2m2wwy3o_2xq2V9{v&NLh ymNqX2CINOIi^Cfn7?@djBrFazCbqIDYBX3REMswIvEH(0gHSS;U|S;tgEasMh7D{0 literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privproperty.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privproperty.gif new file mode 100644 index 0000000000000000000000000000000000000000..b1e8074654b3fc0601b0302f1be7b39f5bf5eb7b GIT binary patch literal 1054 zcmZ?wbhEHb6krfw_&$T-|NsAs)*t!*_xJtBuWIMsU$g!6|JQkr-VrCx-Te0d|C%NJ z|KDc#`iGpnaQD>3dpizXdi?CwzT?+6?LK$##HE5n?}9|H1*;ETy8h_kiHi+|F+YC) zd+_viY3rPnvfkYKX@^c;e);mzk;$UQ>Y{gVUU{=ZaB^$$wHr64wgkWb^84*^@73E+ zf4QE%Zbro0!wx@w{k?ZEv8rpKe^T|Gy&(BuL?`9o2b8GLhYo9Mg{CZU6pIo!!;H4vHZhpI+=@Sqfn$b98`JViS z>9P6kH|{<=asK9nd0XypGDaQ4Lh`rPOfGiB|kYwkSxG`b>k*`oNO7)Rg0u+B-# z18g0q&0TV2$JD1!?uTbJ)z&xlObBqCXS85iLwZ6`cTr$+Y44wZ{}xYgc=YVeuU$%d zicHs5>iJt4eERnH>E*U%2iKiDb?DLAsx@mjMEZuOl=c1m{r~U3e{*)seD~}B)7PJ$ zz59LO_{HV>mT0EQ{QLiZegvM@3* z%wW&~X$9p829DnhhMY%Cj-2iAu6$vlInmK)kpr_~;3LCh4M#P#Q*QiBR9>`Hk~>1; z#zz(RF58Sgfryzdj{U;ie_|$HYU1RyEas3fT)cpz)v;7;1EaHA3%^t7xQ zt(lQk$EC6HC36DtS^a6kC&EH94>aBumn&dwYH7?jjd&y?(eQwQiA89WOHal@#wi@3Dl0lR)+n&> P$sO`(a%OdMV6X-N?RS8o literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privstructure.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/privstructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..ed6d1ef68f8736e5c05137be2af0ff7714ddb85b GIT binary patch literal 630 zcmZ?wbhEHb6krfwc$UZT|NsB{k6(RzcjN2h?jGIVhpR-szrX#Y;OUy}ryac`8k2Z_ z@BIDv-H#LJZvJ}l`*!M`Qy1@@ym0sat*<9$h(CVz>ir&_-|zqIIB@CG^+(RdC-)t{ zwqW%k2IHCEUeEn_%=zsWiC@ouZ`ytC_q#uzZe4l1S>nT|FQu(>er^Bt?bY0GYrb7d zy*#gi@9oUD{z=t$my4#9^~M!+KB#{9Vd2N!hp%khb@t2cQqTF1cOShHo8O*N)>pXg zHH@xPxjsT^kdVHrL_XzU(fST zu9>&-#=*NkLo*uhoIn5Zxbw$14}LsZ{^>%@yZhUJzFe1EKP^0~>Dz{HpKp~Oxc4o+ ze8Q^qrg}0wC#Qc1@2^f+LqyxpDEQ|~cc?>!rt)MtzV87gu*Tlfa%EZvr*_GGAsv#WQ z(cRoC%WNv#-qY2a!kl66Ka)XhQXUiQw9FtmQ57yG_N7gFp3D(BYvs9=`MKGZIy{&| zas!=qE3_;~z{nwOo0cu4rD^0GYsjLS9HY&}k>n#O z<^9_#Rm)yEerz82^S71ck}Y`NGQz`RA_YP5iejl$gyCd w0t=&*O2!2Rm&vL;0yA$hJnU(cRXnwYAz4e1RXB9Zfenj}c%OG^WMHrc0AYACZvX%Q literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protclass.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protclass.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f9294292a9b5f94a281de7657b5555d06bb4a96 GIT binary patch literal 600 zcmZ?wbhEHb6krfwc;>?J|NsBT?|$SrO#k-o#@{!8qi5gvaUU(s18H{JnJp2FehrhQA?)+N&>)iqU6Enm=U(5M5fY;zXP32Fyxl50uY&Kx0h7BEa_ z?`}`~_jQeF^42G}kG*|#swZ3i{XYG#uh+de5exJS!%zc?KUo+V7+e^1Kn@4R2?P7q z2A3um22KuUhUTv3Rt|a5j-IYweO2iRO$>saEp2LIin69W%r1i5vwPJSD61@SVc{0$ zW?}BrkT%y`zfo9Rh>wBUOiR|0hv}r@z5^@__Ply>21}VX=$>`4;I(99Gf{H6wt-Kg ziPy=-fn9;?QL_XqqYJM!8#}wmyT^>I0@{ov6%2_E_j}6!DimmZXz1u?W)nFfFy+ks jL+qbB9IhJYjEY8z0)sUGw};FY literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protdelegate.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protdelegate.gif new file mode 100644 index 0000000000000000000000000000000000000000..b209f2d816d78188dbcd93907917d7a0ef34eaa9 GIT binary patch literal 1041 zcmZ?wbhEHb6krfw_&$N*|NsBD3+~+A6ZPXp#$vlAiyQQQ&G>zJNB#3xZ!e`@es@5B z!P>(;y1i#F-}-;v$UnLI#LD>oJSE4_{Mix^8B4gbm`4|&u-s;K7H|8YyZs6doR3x z_j&TdT|a;QzPRU+cYNjj^Xpc+uA07N@6j!{KD@sF_1lk==kIRVefIw2S1Y%i+_-M) z-ecE}pSyD{_tJ!U8y49u{fPP+3%f) zFMoJ(?Q;5+wL8vCUa)iavMt*WUINA!!ziF$2q^w!VPs&Kz@P&%5|k$xINmWRa>{fl zaL=>hVAE3JU}|3=V-}|qvSL}Us7ElH;!KMVf^0?;7;-c>3bamE^yxBiI-JPZ%5C1D zlgXgT(lA?dhsMfcr2~9UzGi0{Ltdygs2goj;e4RvFx{n0&S6)vf3EF6*!Fv!K9+hCZoKv#l4gfF7O*r}nJDO8B1BdLL*QL>%yjiiD@LlaY-SSZH> z@l#x!T?!Tw1r}#TG8VDV9AMK_f%j88HWS`1}G*;p8?0XW=!tN;K2 literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protenumeration.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protenumeration.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc96bb635982abc9d306f219ebdd71d29f95757c GIT binary patch literal 583 zcmZ?wbhEHb6krfwcoxO*cwfNXJyAbyWGrsbORt)`XI}KX1Nx8l`hR;p|JB8!{ye2m zk0*Y4Hsj0lneXqkzPnNX_FB!CXEVRQJ^%Vr>BoDW-`_5)>RI;bVSiQk^1Q~`_jY(b zy0~)tH18W596!9ie`%$~|MNy?78$<2Sp4<%g8arg54O9UKCt=oqt(k=EpDFOI=>_C z^~1B@UY)qPKlAC~sLu~q&1{HRGO_gO(U`_G=gmtdytz{O{&s73q0h$$edSS>Z8`2O znXX@-?fm*?)7KaKUYv;i_jS$9BQxKh=+*iB+9Zb^Gs7O8ZGCe4*rPpu?{7E1 zJe@hOGymnO^yk+$KR=Q3;`Xc`Z%*Ie;n|Zd|Lygmm*=Xh;%pvX-v0XbmZyg!|NsBb zKwqHvlZBCiA&NlUeGH<Cw3dOhd6|LdLB1d>tfmE9rf=H=>LCGe_~~Pf1c9Y zN2i`Wee~h={r~5U{yf?6e(!{TpKh+3o^ba}-}A@!UM^@{)@m^|U;ggVrVlT!J-L1C z-R)^#-)ySPar^!2$G7*FzkmPs?oj7~Znt-@?)5aqoY+)xdVOiOzvlA`ookyEUYv-% zee250RdruquX}!d^YrH6Z=YVqxf{HEdVl$pglFeFPwkt3Y{!I%VDAH)`d=)qdHV2H zN0rz4gA0FtdAw$N*6YVto?c$vlP%wqq4enP)mIzppFX($@9UaRXQte{ac+Kv?2pg) zvXVT$9>{z7?BR!Flm7qz&oIb<;!hSv1_ply9gw>~al*hpvBAHoxuvzO*;ZJ?L_*ch zrrn>JpF`1-!Cax;i&>CWhryd?;$&7A2J6M`@^gI{l(Z*K;^1%>5M?klYT{;7<8%+3`kU9um%8i0?sP{ literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protextension.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protextension.gif new file mode 100644 index 0000000000000000000000000000000000000000..dcd07f5e1a673de3120e3f82e6f8c24f8bcd723b GIT binary patch literal 589 zcmZ?wbhEHb6krfwc$Ua;zT^Cl8yR=^L@jR6yZ-3MV_iN9!Lg_h0dD?)!JI?*07!^J4C$ zcekf`l;3>)@T_a`r57h+f6e|~XHfs-_OS_m6My~sRi$11?bFL;trl$?{)cpY`0(P| z)%>dtImdfV`@X)}RHIk(Y{v7RZ21pYKGf;e?J3w>yyX9{b-&}M{F`Gl_uamCv6KFK zRNVBffAV_bo3O6WH&)F1@c6^Dpy{RRr6o)MKVI`#)q9p!z=9gx+OMzI`P4l;y}s19 z{_#|cX}?zgUKX%?zRmo*GwwY*^UOSc!>^gYUtfHkIPL$3s~`S-UE@>x;Pd0ppB{Yv z^6X2WTmSa1mX$%Pe$D@VG3(O*|Nj|i1{8m?FfuSCGU$M80L2Ld`>KY-rbJ!_hvtsX zRu_iI&Q2o+OEX)BsQzXKQC|)Y5r*g)iGDm>3LL=(%8SILmd1-a>Mx2*&^8H(u`pKg zv~q6dWA);!TW$=&E7f#Oe`l$Rxz<6f%QVnvsc#lR2=N-PEp0 zi(iQGm23xlsCTmx6C<+(o1{U3LTkHh1k2B0^Nc1&4w;G#3JX3QZsO>Wahl*1IH9w< MpF`rM1P6mP0LI|@H~;_u literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protfield.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protfield.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ae6833e0821dae813c941500d1e12a88c7c334f GIT binary patch literal 570 zcmZ?wbhEHb6krfwc;>;tU_A5x|NlR3WZc~owYWhqdiIT(XaB!DpnrKs{iYkgqh?)y zetq+ocMndijNf|XVSk>|hu8NjH$0wu^3#VG*J`%B{P^up-=WVH>mS!{dTN@y_21Vu zPp@u~^IO@q_ubdm>$(qo`S$7MlMla}w>;W@{@MRqDVk9m-o3illPzDl;mP8Q{~o;i zGvUa$|L2XqzS%VQ*xT1%{w%!k@5PDO)9XtQ-TW~B!oPR7r#(B<)Vk%-vrm7Tw!eDv z@z2rQA15CExbO7SHGA)Ags-pO^mOj|e=)OftiSf>^~1AIZXa9LYH{h=PoSq5h5}Ih z$->CM;K85+ax5rL7}%#bcr-P)crdnhG&3qnh_-h&F=~m+3hMWFFj{G7vxy11Pq1*1 zXJa!EQk|e@39u6a3Zboxf5ogJLn-A(TF}ZO&v9g|F zu=S9ZlTv5aVNvF~wvVrg!<31cnVrSMnCoe?Fs};JTbCwl2D?^QW+sjq4K62+*_N}g T@^*Y=aB^}~kW%AeVXy`OyDG~U literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protinterface.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protinterface.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1b96d2c6a0b681cb6d65d30f8e212a3c2d29081 GIT binary patch literal 562 zcmZ?wbhEHb6krfwc;?OU<3`5aJyDAr^e*qHzj623`;VWm+%v`?v$?aqRzOH$9d)n96>o)Bhta8)1|Mi^~NxQF@vOm zFpg~@_}FOOyjstQ&;S4bA^8LW000jFEC2ui01*HX000DJ@X1NvaHVQ_1K!j%1YSl7 z!f_N1>3$&4x&a`esrtx(3nZYOW9aw+9|nSwFt7k*i6}5BU@#N{&QsbXpcV~;Vlpr` lA6`ZyJSHd3NCJW(HUuSx#?^k8=*4}04GVmI1%!PO06U9(O_u-w literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protoperator.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protoperator.gif new file mode 100644 index 0000000000000000000000000000000000000000..2cb75ab8b05d4b8d65401c5270ae31836ce04f9b GIT binary patch literal 547 zcmZ?wbhEHb6krfwc*el+|Ns9VH!|+-iCWyCcX>zsy94@eC70hmI`!t=#}BXX|37bZ zVrBfD`%n7wl)S3$oi{TqY?_(4!sFfTX;-}6{(W6jyEikvaza4Ui(`_)xl^8eeY5H7 z>vatWa<`xT8M)A|CtH5zwojcaUd`L~!Z)!hWtF#W`d-U~El+MAtK5~6TR*k)SVdBC zw@-X!Y1^C+FRn#4U3bhm@$S{V*!+%NTUVJzuYUdTY-s1F=hrt!_y0V-zBFO#f8&T{ znd<^isVOXLwRmwNHax4@J*u>DOEkmK1d2adzz){|k)SwXU~gz(Xlib0ZRXKz>tYb# zXp!h<5NolW$Y9jRz~5wLVJ6PU*6zq4JZ*U!JBuZ^v8;k5n}MpDi8aG2DMm&+^NB3d zBJxaJ%=?8HnV49am6~OmbQ$!xxfsuwwrDhKGpI8$G8;B)i8`ssF*r0mIHRcFY}2g# S#-5k6Rj^5?<@@qR25SJ^#+_vV literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protproperty.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protproperty.gif new file mode 100644 index 0000000000000000000000000000000000000000..55473d16e1321bc3e4cbcb5a165f51a55f9f07a0 GIT binary patch literal 1039 zcmZ?wbhEHb6krfw_}<0v|Ns9*>yP~Z`}@a@jJtcH7B}eC&b@zmNB#fTdA|N3?+)m% zS;^7aopc;aF~qSuL)@dr;_n%Q4680UFSixNI0mLUEZ?`} z#fjKI|NeP<``x{HCBWA4%k}hc51ZeA`ThNF*3aMnPp>b1vqEsyu3Ha3{O_ETIk~lX z-HeEP2NTm1f({(NxOUx|ohP4OIC1FT*EMe*ukg1r@C^+6_UWZhKrk1(z|V(8pU#J+ zhWY<`z2U@6*`93qx38c7dQ^1w#Qx{kHwUkAytY!$e!8Z#0Qaw5N-tkNdUUob(l^}4 zKd3%8`p({vmeRPNkL%z3{BNu-dg$ck?WaC|z7%m}$JFA|njgRZww`HSJiX!D?aX6m zj_D~fEtuBu_OQdJSDO-IVqZTz`|9S@2e(daUDkNw{LN3_{{H>2Wa z5)tO9PzZ2J_GH&-Ss@Y8nantYm#1ru=I3P>cwO3fRJb-d9AnnClQ?kWF^jXjXc*6g z$c9Ia99*{BJ_t@;!YeGKpvG|G(^D1(UXfKXou3^abO}bWaxgF~Xq_k0z;|QC1jh&b z3|Wj1J{Gi}W3*sq`!jP<22TS6qn83-LBoj&>MSxM0V#~@8yqsyc&rT485o(k)WY3j zk_{(t@v*f`TYRGLDcgp_PZFFH92y0f&hPLzaGOJjGe+eKpX|mT4oo^q4hDIDIzBZr IGBQ{L0HyC{fdBvi literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protstructure.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/protstructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..af356a1db0b8e8821d2f6c94734b98354875e85d GIT binary patch literal 619 zcmZ?wbhEHb6krfwc$UoY|Ns9VH!{AxyYcwl4+i6ziyQQMbbBAJ67ih>_({Rj@9%G4 z-ckScarf_?zZ;Wy?(T{D{rb=STVGGi5Px?-|90w~Z?ETmJm&o8{h#-HbUxj>Qn>Bo z+bt6Pc}gc%#yc0E{D0o)*}2x=@BaLH{`>3eb$8C6fAjR(+szV3uHFA~tK`G$`;jYO zo_X;3?aa5^raC;Re)xImr+;79EUgtdc=Pp#7uW7C7yW!b?c;Ih&lh4oUyOO$@%+V! z*k!F2ukX$Le5>Ty%{}+ZA3SM!viAD_d&T$O-JUkjbbj>g8^7Kkt=jqK$EF|OUd?^` z=+xFD_rBaN{d6Jb)r41q|f1D*d+M+lPf8BUilmaDT_QSMz?o*$)gT1{wgxpDc_F49N^SAhSVn!oYr_ zA-Rcxi=By~sk1A&h22vqqNBUHRg}j^sJ*AFH<8EI!fYmk_@rbe_GucvViIb6Oq@%b zOoDl0%-2fuNs91tDs~tKxdkSf?v~`_<@FFb$fV01Et|lnaym3tUq?jAi`#~g(b~>c z&_66L(o&C&TiGCrU!K)bPSC~A!JbWt+nLFx!eAkT2=5Ob4nqdU13i55Od>XgPq~?x zm?e~$0vx!9%B@<;gKug_44ZM@5qqv}A&K6gC{1vdDqK8UQ3G B8EpUn literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubclass.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubclass.gif new file mode 100644 index 0000000000000000000000000000000000000000..1a968ab633207f47ec5e3130ec676f0d43598bb0 GIT binary patch literal 368 zcmZ?wbhEHb6krfwxN5}k|NsAQ?`}lTzVZ0okG0#6JX|I6_s!pL?{8g7z5Mo8Mbf(8r2 zp(R0XIx!l@Rf3{yHW~z|JTT0ir6tMRSy-d6W0S){R=L^}M$Ar41`Kl)d3;!=d+P}E z3NrF(N$K-&bt%+03NkRT^J(+3Gq4n@_Qg(`W;COaS31~v-h5AKCe0;2o(q_n1avjl otTWmmAj8DX?Cr$DwQ<*;tzL4nyP1!AF&G}%w~yhJrz3+k0J6oL{{R30 literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubdelegate.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubdelegate.gif new file mode 100644 index 0000000000000000000000000000000000000000..0a43eb261adccddee2206769150a9e2d964ed136 GIT binary patch literal 1041 zcmeH`{WFsR0LLG0>%7DvcU^bR#jQK%xKkV}(m0l0*4uHXy30!^gj%}Nd&*TyI9D<@ zvNh&y4`a+Q^=w|YC(LZ@1(C@%8_USsGcV;o=nv@o`{$R>=e{RT;ju>(oB$_ajSB4S z?2Hp9kP-_cv{GkSkR{361hPEe{IHnYgYvO@Za)p|{=Kq({`%wgZh2`S#V}j1RIsSn zG6dOdruCn`mi0N5A?Rh5*9uh`YLGWTss0+9mJ@aLUVa%@B$>cnO6Lh=jK;n?4p`kJ z(i_ZMTifYRixe5MrRCKb-9m56SjfdRc<6idjpwCR4Tg6{G6U4i&QHx4wEAB^W{d(@ zB^hF^tga&b4!;L5-Z7-T}_>mGjR`LrsAj0w1HTP=p6nY#WHr%q^+gG;Pa{2b1CXc-3NLHr%U>g(W;)*VhPC+v6*Ex zP-FXG@p~?n*#fqLNE2dST9qe{EH14un??M(;rA8oGL@#YXLNgeyP6|jUE82A8x~B< zYwL(sQ*W_s7JgzEGx!hQR!Byshxr;~;r!UGaRIEPgFWJ*i7Oee*qwt-{2`-h`HM&~ ztk68lrOhf$H?j(2lC!yx%rI}Jh0yC-d%kzi6_j&pBkOoVxk|~ZZGnvoOI2)95uMZB z$I8s1C?>T0-ch}Jk(f>XsWXoM&_`ar`!^`?fB$U2V*_Oc093$dm)QLTU}FM;Y~7-u zZ!RvVJ>D3S82*SOKk|uQ$4DFjJjJUNE5%{l03dpr?X=G|;1!ZWM5S82cE}uf5XFY^ zQ9x=zr60x%=XpFVoTrMO)1vk~^FfQ9X$3hR4uJ=NMeS?HzyRy)X^(@D9XcY=$|_zs zSmNS;LFEkHcP@3L@-V5Gxqf>ev^C`97msuIrMf~1QhX%SKhcEJKTffKNw}%Nk%$Qq zd7kJadkcv;8xp}&xLFhSR`TXVl3grTdMLMuVDApotZUHj_$OW=i!UNB787i>XOA5w W!S3M>-YMZwV($I|X%HF(1pfiQ@~q|n literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubenumeration.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubenumeration.gif new file mode 100644 index 0000000000000000000000000000000000000000..46888adef937f09868b1aff485010ad847625183 GIT binary patch literal 339 zcmV-Z0j&N(Pbf!&&RmbLYrp^5KtqjHc?* za^l2s<;7g>)_nBlnc}@q=gfSDY)AL)rrf+_?%03v-ihkZZ{W8?^yiuK(X`h>z|#7Zt2TuZ-Jcm?a$@ITH?{E>B?vC+=aBHilvcv^yZk%qA_}lr+8dCZh@Qc z+k=5-L-F8_pNL-BziE|zWSN9&dR{ztS~=^`gneQ_?9_R@tdifjNurK)@7sl*iE#h_ z{{R30A^8LW002G!EC2ui01yBW000JXK%a0(EE!iiKn z4i!jX__&S%6r$8nkQg@~(+QQv5-foTK=WC#T3itp2L%roH9i4gVq_mXCIcrPD;kPw lY;FuaM>a1!czOUcM>;JygoYO~M-8eVBIr#a7&Z+tGuQt>#pOO#}?0x>=!f)>{|M-0G_pcwfZ(ZrA@_Mnf=Gpnq zmrw66=yp4>bIF?NS=s)YSxFvu&-Bf&kUg=fq9;S?<*K@;53avl(D?lEy|qmWUk~J+ z+Bg61(Wa*lZ~gr8_}GpKpUzCF%yD~nsPq4m`d=5zo}Y+(*xvO2|9=J?K=CIFBLjmu zgAPa@MKlJCh@8yFl7ixFRNZ06KZzOwPN+z zv<(MOw%xcR)*I23_It(+G5s19o*Z-S8h+h27B({_t~PU7W=)Mr<}8BjGt3=_Q{DAPKYq>lt?WK&MZn5;OW*I#-&3bo_v!Yh%ePmOK&_XZeGp5`ugJQ8r@p0fCbZnrk_qf<6Hlv&#nK%)epr> z{uingwQcx+G3(OH39sU({EMCR*Qf5`lT%MVJpS`{L6a^97CgNFGw z^IuPVb20bQulc`y>mR?{_b#mKvrp{<89)!|G(D#{&3~PuhqXFt$#GZ zZ{k#oX?JJbD^)N3^x(63{D%Mk|1%64p!k!8k%1wQK?md_P@FKZw=@Jc1#&W&G0fUL<3?)XqgsXpxwn5}&UoFGrw} zp=^gSE5D_rwY18jKnW>z4j)miKxbWpepgm2Kjl-+3OeG=EZUBDAGz5-V`O9zlv8v% Z#l^^Np~1s+_cM3E&u2`ke^{9qtN|Sl$x;9S literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubfield.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubfield.gif new file mode 100644 index 0000000000000000000000000000000000000000..5aed17576f4493ccfdb12f7a8a55fa2cbd74041c GIT binary patch literal 311 zcmZ?wbhEHb6krfwxT?dzU_3K=_Klfm|8KhSJ8IVTsr#N)Zg{-)$iwF!e=of7Z{p#P z_ul^M+WW3)`>Uh3Kh|z~su8|^-|45`C41!jR$hMoYyGu9l^dR1diL|uvmbqjKJU8z z@&Et-hi-nj`r>!@fiGtt|J;A$y=n5+`4|4pJ^5+Ek#CDH{;OF3xMuV7x#$1I%)U{x z<>i{a_kda$$OVc&Sr{1@bbt^DKz?Fi3vrlM;GrYc@1gXp(Sy%ktu684k_eBco`+3u zGHjR}lT;k%iD)!t7%(bu_c~@WFz)DYZCE9=iP_9ulaaBGLC`~irKODBPllz(&xwyg Nd(!k7GhG}RtO2HXg;M|k literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubinterface.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubinterface.gif new file mode 100644 index 0000000000000000000000000000000000000000..c38a4c46a9a7603bc498664c294c7c06a713e555 GIT binary patch literal 314 zcmZ?wbhEHb6krfwxN5|3ZVUQpY+eD{&7vsdijaq#l?{g*cFIk#xtz9|cLB$xCr-*j~8#$(6M z-8^&oPXD~kdyZV)fBed}{il;l`>VT_0BvC)4k-R)VPs%1V$cC82lE)~P;Pd*c`+O~Z`kDLHZ`GDkm))4&({9xIoBQn2?6teCjWv##q^{)3yhlKQmSzza_!jd?!NB&pZmx!AK(QVR|IF|6^@a~=O^W*cU zPpJB?`{m-RrckHo(dc?Bd*+zuoTskl%;w{)5%GwFo3C0s(vtkd@g)-Cw0$= z&;S4bA^8LW002J#EC2ui01yBR000JNz@KnPMEF$1LIW=%7c@T_3Mdpi3m6Y) bKQTH02`MrHm_Hv1IXxz!LKYr1LO}pKPRg(M literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/puboperator.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/puboperator.gif new file mode 100644 index 0000000000000000000000000000000000000000..0ebe10a7ec532625741cc8668b1126f2553cdc9c GIT binary patch literal 310 zcmZ?wbhEHb6krfwxXQrr|Nnols(WwVeRM0i9NPIQy8maw)c<$xKM81hkzP3=w|;8n zu9VpPj#Fw1>9hZrw#_+jW|+Ayuy9Ls{=)w$tGs;^tFCyvC9d#rk1DlH*wSzy_n4$` zQgL@-(@dZEO5=!S;aSa*3+-&v_nJnpcFZ}^d90##ZzcovfZ|UUuwgnN667ZawqS>b z0uLQ7ey+tr7X$^&y&alvbTCQyF}P%C2naMD{LsJ{u_oi`k&A!ZJQtmLF?n6|?Szd1 l$~7_D1)D@O#GT~o%bXk;tN}%7Un2kj literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubproperty.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/pubproperty.gif new file mode 100644 index 0000000000000000000000000000000000000000..dfad7b43006984b0d27846a9c6d23d9bfb94ec95 GIT binary patch literal 609 zcmV-n0-pUxNk%w1VGsZi0OoxFqOZjN|NsB}`$kSweVyO`>u#*1kM{rn|Ltf^PgLme z{K3f4!N}5ZVMGba^OtU*~#SN;C}nU8wy>*wOldhGfC z-?B2qlNCRgDag;+-oar{IxyDd|Io<7(&G5ItfO0aS?~1wb9H=)lBYqQGU~fAU|e1H z+i8`AQ-Et%&dS31i;r~82J1CqnCh$bzU0~3xIK4DP|np>HmqGY1XMO=I;CB?f-vmTl3Ob zwWfhgP*e8dgO;77(Bl94x+41PunGqd`1<`&JwatwPwmG`u9#ST!Em?A@zv`8`r>l@ z{{E(-U;O_6j$#x`PEp?J`mC+6`TPHJTtULg)AG+&+`UxY+0;u*PN0^6jF3?6!$9=c zXSvDci*ixKxRuk{FMI-(}u{I9ZgYI|Ii=*|Nj6000000A^8LW004aeEC2ui z01yBW000NRfPI34goTAAb!|{YZy0w+I6hs3BUVlYm|${jbV@vg87~N21rtDPTUBBe z1g$p)F)j!pEl+VPKX57pIdcY54;nTISsZ#DWI7%MUIuv&DGeYNd=ys^S|&mZ0eD3+ z0Wb|qMl4f;J4oCD0s#SGXK8j#1B5jJ>;V@;Gztny^#-X40001lf(S(f6vP0ZfH7E3 vFfl`d%ECSk3!*_-aK^Am}xe((G}uY&L6G3OIA#BZnGdAnKS{;jW_hkyQl{pal#iQn)3e7+F# zey`4-_kX^eH{!7h~?6KmX}M%-b)&zODK8`Bv%2V=k|!ynfp8 ze4gq2kH?)qEd2O(=Gz~eetcf~>GQ3U$dxanR=jvn{qR!i&%1CPg|qcFzfuSnN3rm2{>v z$jq9|;iMv{Ai~7RyQIn8jYC~(l?0QVFh8$khXseZl!o*UIbME#ec^qK0!o6?Ym`q| zI~(W;%X?Z1IIiJi6E#)S)zmU!Z92#Fkc&rD+sxLL^>!2AJ2B1=tS+qLCcFj<667bb vva>O?uq!GFSrunAz6B literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/slMobile.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/slMobile.gif new file mode 100644 index 0000000000000000000000000000000000000000..5edc31f94c61a7a50c3285ef00dcbe86e8690974 GIT binary patch literal 909 zcmZ?wbhEHb6krfw_|Cw<&~QMZ;eZ1WEjW;{;6MWq9XPP;)QA7SKm7myA1FTxMnhm2 zhky>qZ=k%uz){2?%pv2kVSxi92Q!O8!-mAe%}h)j784dUxU@4Vuq~MJz`>+3{L1~0m@lAUkDoRe1;9$K%)+a)R?z+epkVS_+3 literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/static.gif b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/icons/static.gif new file mode 100644 index 0000000000000000000000000000000000000000..33723a92be0a7b2b9fc8057fb6f9a2a3ee729a7e GIT binary patch literal 879 zcmZ?wbhEHb;QNUQFEiC% z7n}SzyY0{GNB_QlU>F6XAuzl`K=CIFBLf3JgAT}Bpgh6A;lm)$!85^uv7wn=Tt*;+ zVd3FsMix6Afdzk*vw)JdXGPApH;j#U@kM7;k+&W>y z^wuAltPk$pT~`~kchkxZQyRXfGPHEeZ0eYOFP8aU0_X7)rxq_>)-z%8ruFMDoj-H> z^qK2dF6~Uw+p%NUy!ne7dzQ|dzj*Jy{qIs)>l%8FB+6~*F05{x+}7UT(%Sp$*RQVL z1$(z`+`VV-`swY5cWvHL=&-5K`^3RLyVou`apL5QScdH>+WX>V>l%9-nkN1E^JnSO z73=bxUcUi?x988Dd;aX{#Okt|hW@>K_pi-%S+;WB%NNhr<-4qD%f55_c6Z-`|Ns9p z&=Dy9WMO1rh-T0M*$Ijh2KJ_gNS5f9*0wel8;SOwRxe)eu-;y0H~Yyw>~``!!FopR zvOZc2t?JC;`aM?e!YwYI){K*##LWDIqD=f|C@AVGi)hb?W)k3Z3_TL97O1MibA-#o zAjFl8V}^y0xu&Uc#AHKeR_|zOK7O4ZTP2On(E)-oa_vl_QkK50k`CbvjSLLd0ER== A(*OVf literal 0 HcmV?d00001 diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/scripts/branding.js b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/scripts/branding.js new file mode 100644 index 0000000..2acdea5 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/scripts/branding.js @@ -0,0 +1,562 @@ +//=============================================================================================================== +// System : Sandcastle Help File Builder +// File : branding.js +// Author : Eric Woodruff (Eric@EWoodruff.us) +// Updated : 10/08/2015 +// Note : Copyright 2014-2015, Eric Woodruff, All rights reserved +// Portions Copyright 2010-2014 Microsoft, All rights reserved +// +// This file contains the methods necessary to implement the language filtering, collapsible section, and +// copy to clipboard options. +// +// This code is published under the Microsoft Public License (Ms-PL). A copy of the license should be +// distributed with the code and can be found at the project website: https://GitHub.com/EWSoftware/SHFB. This +// notice, the author's name, and all copyright notices must remain intact in all applications, documentation, +// and source files. +// +// Date Who Comments +// ============================================================================================================== +// 05/04/2014 EFW Created the code based on the MS Help Viewer script +//=============================================================================================================== + +// The IDs of all code snippet sets on the same page are stored so that we can keep them in synch when a tab is +// selected. +var allTabSetIds = new Array(); + +// The IDs of language-specific text (LST) spans are used as dictionary keys so that we can get access to the +// spans and update them when the user changes to a different language tab. The values of the dictionary +// objects are pipe separated language-specific attributes (lang1=value|lang2=value|lang3=value). The language +// ID can be specific (cs, vb, cpp, etc.) or may be a neutral entry (nu) which specifies text common to multiple +// languages. If a language is not present and there is no neutral entry, the span is hidden for all languages +// to which it does not apply. +var allLSTSetIds = new Object(); + +// Help 1 persistence support. This code must appear inline. +var isHelp1; + +var curLoc = document.location + "."; + +if(curLoc.indexOf("mk:@MSITStore") == 0) +{ + isHelp1 = true; + curLoc = "ms-its:" + curLoc.substring(14, curLoc.length - 1); + document.location.replace(curLoc); +} +else + if(curLoc.indexOf("ms-its:") == 0) + isHelp1 = true; + else + isHelp1 = false; + +// The OnLoad method +function OnLoad(defaultLanguage) +{ + var defLang; + + if(typeof (defaultLanguage) == "undefined" || defaultLanguage == null || defaultLanguage == "") + defLang = "vb"; + else + defLang = defaultLanguage; + + // In MS Help Viewer, the transform the topic is ran through can move the footer. Move it back where it + // belongs if necessary. + try + { + var footer = document.getElementById("pageFooter") + + if(footer) + { + var footerParent = document.body; + + if(footer.parentElement != footerParent) + { + footer.parentElement.removeChild(footer); + footerParent.appendChild(footer); + } + } + } + catch(e) + { + } + + var language = GetCookie("CodeSnippetContainerLanguage", defLang); + + // If LST exists on the page, set the LST to show the user selected programming language + UpdateLST(language); + + // If code snippet groups exist, set the current language for them + if(allTabSetIds.length > 0) + { + var i = 0; + + while(i < allTabSetIds.length) + { + var tabCount = 1; + + // The tab count may vary so find the last one in this set + while(document.getElementById(allTabSetIds[i] + "_tab" + tabCount) != null) + tabCount++; + + tabCount--; + + // If not grouped, skip it + if(tabCount > 1) + SetCurrentLanguage(allTabSetIds[i], language, tabCount); + + i++; + } + } + + InitializeToc(); +} + +// This is just a place holder. The website script implements this function to initialize it's in-page TOC pane +function InitializeToc() +{ +} + +// This function executes in the OnLoad event and ChangeTab action on code snippets. The function parameter +// is the user chosen programming language. This function iterates through the "allLSTSetIds" dictionary object +// to update the node value of the LST span tag per the user's chosen programming language. +function UpdateLST(language) +{ + for(var lstMember in allLSTSetIds) + { + var devLangSpan = document.getElementById(lstMember); + + if(devLangSpan != null) + { + // There may be a carriage return before the LST span in the content so the replace function below + // is used to trim the whitespace at the end of the previous node of the current LST node. + if(devLangSpan.previousSibling != null && devLangSpan.previousSibling.nodeValue != null) + devLangSpan.previousSibling.nodeValue = devLangSpan.previousSibling.nodeValue.replace(/\s+$/, ""); + + var langs = allLSTSetIds[lstMember].split("|"); + var k = 0; + var keyValue; + + while(k < langs.length) + { + keyValue = langs[k].split("="); + + if(keyValue[0] == language) + { + devLangSpan.innerHTML = keyValue[1]; + + // Help 1 and MS Help Viewer workaround. Add a space if the following text element starts + // with a space to prevent things running together. + if(devLangSpan.parentNode != null && devLangSpan.parentNode.nextSibling != null) + { + if(devLangSpan.parentNode.nextSibling.nodeValue != null && + !devLangSpan.parentNode.nextSibling.nodeValue.substring(0, 1).match(/[.,);:!/?]/) && + (isHelp1 || devLangSpan.innerHTML == '>' || devLangSpan.innerHTML == ')')) + { + devLangSpan.innerHTML = keyValue[1] + " "; + } + } + break; + } + + k++; + } + + // If not found, default to the neutral language. If there is no neutral language entry, clear the + // content to hide it. + if(k >= langs.length) + { + if(language != "nu") + { + k = 0; + + while(k < langs.length) + { + keyValue = langs[k].split("="); + + if(keyValue[0] == "nu") + { + devLangSpan.innerHTML = keyValue[1]; + + // Help 1 and MS Help Viewer workaround. Add a space if the following text element + // starts with a space to prevent things running together. + if(devLangSpan.parentNode != null && devLangSpan.parentNode.nextSibling != null) + { + if(devLangSpan.parentNode.nextSibling.nodeValue != null && + !devLangSpan.parentNode.nextSibling.nodeValue.substring(0, 1).match(/[.,);:!/?]/) && + (isHelp1 || devLangSpan.innerHTML == '>' || devLangSpan.innerHTML == ')')) + { + devLangSpan.innerHTML = keyValue[1] + " "; + } + } + break; + } + + k++; + } + } + + if(k >= langs.length) + devLangSpan.innerHTML = ""; + } + } + } +} + +// Get the specified cookie. If not found, return the specified default value. +function GetCookie(cookieName, defaultValue) +{ + if(isHelp1) + { + try + { + var globals = Help1Globals; + + var value = globals.Load(cookieName); + + if(value == null) + value = defaultValue; + + return value; + } + catch(e) + { + return defaultValue; + } + } + + var cookie = document.cookie.split("; "); + + for(var i = 0; i < cookie.length; i++) + { + var crumb = cookie[i].split("="); + + if(cookieName == crumb[0]) + return unescape(crumb[1]) + } + + return defaultValue; +} + +// Set the specified cookie to the specified value +function SetCookie(name, value) +{ + if(isHelp1) + { + try + { + var globals = Help1Globals; + + globals.Save(name, value); + } + catch(e) + { + } + + return; + } + + var today = new Date(); + + today.setTime(today.getTime()); + + // Set the expiration time to be 60 days from now (in milliseconds) + var expires_date = new Date(today.getTime() + (60 * 1000 * 60 * 60 * 24)); + + document.cookie = name + "=" + escape(value) + ";expires=" + expires_date.toGMTString() + ";path=/"; +} + +// Add a language-specific text ID +function AddLanguageSpecificTextSet(lstId) +{ + var keyValue = lstId.split("?") + + allLSTSetIds[keyValue[0]] = keyValue[1]; +} + +var clipboardHandler; + +// Add a language tab set ID +function AddLanguageTabSet(tabSetId) +{ + allTabSetIds.push(tabSetId); + + // Create the clipboard handler on first use + if(clipboardHandler == null && typeof (Clipboard) == "function") + { + clipboardHandler = new Clipboard('.copyCodeSnippet', + { + text: function (trigger) + { + // Get the code to copy to the clipboard from the active tab of the given tab set + var i = 1, tabSetId = trigger.id; + var pos = tabSetId.indexOf('_'); + + if(pos == -1) + return ""; + + tabSetId = tabSetId.substring(0, pos); + + do + { + contentId = tabSetId + "_code_Div" + i; + tabTemp = document.getElementById(contentId); + + if(tabTemp != null && tabTemp.style.display != "none") + break; + + i++; + + } while(tabTemp != null); + + if(tabTemp == null) + return ""; + + return document.getElementById(contentId).innerText; + } + }); + } +} + +// Switch the active tab for all of other code snippets +function ChangeTab(tabSetId, language, snippetIdx, snippetCount) +{ + SetCookie("CodeSnippetContainerLanguage", language); + + SetActiveTab(tabSetId, snippetIdx, snippetCount); + + // If LST exists on the page, set the LST to show the user selected programming language + UpdateLST(language); + + var i = 0; + + while(i < allTabSetIds.length) + { + // We just care about other snippets + if(allTabSetIds[i] != tabSetId) + { + // Other tab sets may not have the same number of tabs + var tabCount = 1; + + while(document.getElementById(allTabSetIds[i] + "_tab" + tabCount) != null) + tabCount++; + + tabCount--; + + // If not grouped, skip it + if(tabCount > 1) + SetCurrentLanguage(allTabSetIds[i], language, tabCount); + } + + i++; + } +} + +// Sets the current language in the specified tab set +function SetCurrentLanguage(tabSetId, language, tabCount) +{ + var tabIndex = 1; + + while(tabIndex <= tabCount) + { + var tabTemp = document.getElementById(tabSetId + "_tab" + tabIndex); + + if(tabTemp != null && tabTemp.innerHTML.indexOf("'" + language + "'") != -1) + break; + + tabIndex++; + } + + if(tabIndex > tabCount) + { + // Select the first non-disabled tab + tabIndex = 1; + + if(document.getElementById(tabSetId + "_tab1").className == "codeSnippetContainerTabPhantom") + { + tabIndex++; + + while(tabIndex <= tabCount) + { + var tab = document.getElementById(tabSetId + "_tab" + tabIndex); + + if(tab.className != "codeSnippetContainerTabPhantom") + { + tab.className = "codeSnippetContainerTabActive"; + document.getElementById(tabSetId + "_code_Div" + j).style.display = "block"; + break; + } + + tabIndex++; + } + } + } + + SetActiveTab(tabSetId, tabIndex, tabCount); +} + +// Set the active tab within a tab set +function SetActiveTab(tabSetId, tabIndex, tabCount) +{ + var i = 1; + + while(i <= tabCount) + { + var tabTemp = document.getElementById(tabSetId + "_tab" + i); + + if (tabTemp != null) + { + if(tabTemp.className == "codeSnippetContainerTabActive") + tabTemp.className = "codeSnippetContainerTab"; + else + if(tabTemp.className == "codeSnippetContainerTabPhantom") + tabTemp.style.display = "none"; + + var codeTemp = document.getElementById(tabSetId + "_code_Div" + i); + + if(codeTemp.style.display != "none") + codeTemp.style.display = "none"; + } + + i++; + } + + // Phantom tabs are shown or hidden as needed + if(document.getElementById(tabSetId + "_tab" + tabIndex).className != "codeSnippetContainerTabPhantom") + document.getElementById(tabSetId + "_tab" + tabIndex).className = "codeSnippetContainerTabActive"; + else + document.getElementById(tabSetId + "_tab" + tabIndex).style.display = "block"; + + document.getElementById(tabSetId + "_code_Div" + tabIndex).style.display = "block"; +} + +// Copy the code from the active tab of the given tab set to the clipboard +function CopyToClipboard(tabSetId) +{ + var tabTemp, contentId; + var i = 1; + + if(typeof (Clipboard) == "function") + return; + + do + { + contentId = tabSetId + "_code_Div" + i; + tabTemp = document.getElementById(contentId); + + if(tabTemp != null && tabTemp.style.display != "none") + break; + + i++; + + } while(tabTemp != null); + + if(tabTemp == null) + return; + + if(window.clipboardData) + { + try + { + window.clipboardData.setData("Text", document.getElementById(contentId).innerText); + } + catch(e) + { + alert("Permission denied. Enable copying to the clipboard."); + } + } + else if(window.netscape) + { + try + { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + + var clip = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance( + Components.interfaces.nsIClipboard); + + if(!clip) + return; + + var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance( + Components.interfaces.nsITransferable); + + if(!trans) + return; + + trans.addDataFlavor("text/unicode"); + + var str = new Object(); + var len = new Object(); + var str = Components.classes["@mozilla.org/supports-string;1"].createInstance( + Components.interfaces.nsISupportsString); + + var copytext = document.getElementById(contentId).textContent; + + str.data = copytext; + trans.setTransferData("text/unicode", str, copytext.length * 2); + + var clipid = Components.interfaces.nsIClipboard; + + clip.setData(trans, null, clipid.kGlobalClipboard); + } + catch(e) + { + alert("Permission denied. Enter \"about:config\" in the address bar and double-click the \"signed.applets.codebase_principal_support\" setting to enable copying to the clipboard."); + } + } +} + +// Expand or collapse a section +function SectionExpandCollapse(togglePrefix) +{ + var image = document.getElementById(togglePrefix + "Toggle"); + var section = document.getElementById(togglePrefix + "Section"); + + if(image != null && section != null) + if(section.style.display == "") + { + image.src = image.src.replace("SectionExpanded.png", "SectionCollapsed.png"); + section.style.display = "none"; + } + else + { + image.src = image.src.replace("SectionCollapsed.png", "SectionExpanded.png"); + section.style.display = ""; + } +} + +// Expand or collapse a section when it has the focus and Enter is hit +function SectionExpandCollapse_CheckKey(togglePrefix, eventArgs) +{ + if(eventArgs.keyCode == 13) + SectionExpandCollapse(togglePrefix); +} + +// Help 1 persistence object. This requires a hidden input element on the page with a class of "userDataStyle" +// defined in the style sheet that implements the user data binary behavior: +// +var Help1Globals = +{ + UserDataCache: function() + { + var userData = document.getElementById("userDataCache"); + + return userData; + }, + + Load: function(key) + { + var userData = this.UserDataCache(); + + userData.load("userDataSettings"); + + var value = userData.getAttribute(key); + + return value; + }, + + Save: function(key, value) + { + var userData = this.UserDataCache(); + userData.setAttribute(key, value); + userData.save("userDataSettings"); + } +}; diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-Help1.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-Help1.css new file mode 100644 index 0000000..8f7ba25 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-Help1.css @@ -0,0 +1,40 @@ +/* Define the userData cache persistence mechanism for Help 1 files */ +.userDataStyle { + behavior: url(#default#userdata); +} + +/* Style adjustments for Help 1 */ +.pageBody { + padding-top: 0px 20px 0px 0px; +} + +table { + width: 95%; + padding-right: 20px; +} + +table.members { + width: 95%; + padding-right: 20px; +} + +th p { + padding-bottom: 0px; +} + +td p { + padding-bottom: 5px; +} + +.codeSnippetContainerTabs { + top: 1px; +} + +.codeSnippetToolBarText { + top: -13px; +} + +.codeSnippetContainerTabSingle { + padding: 2px 15px 0px 15px; + height: 22px; +} diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-HelpViewer.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-HelpViewer.css new file mode 100644 index 0000000..951621b --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-HelpViewer.css @@ -0,0 +1,48 @@ +/* Style adjustments for Help Viewer */ +.pageBody { + padding-top: 0px 20px 0px 0px; +} + +table { + width: 95%; + padding-right: 20px; +} + +table.members { + width: 95%; + padding-right: 20px; +} + +th p { + padding-bottom: 0px; +} + +td p { + padding-bottom: 5px; +} + +.codeSnippetContainerTabs { + top: 1px; +} + +.codeSnippetToolBarText { + top: -13px; +} + +.codeSnippetContainerTabSingle { + padding: 2px 15px 0px 15px; + height: 22px; +} + +.codeSnippetContainerTab a:visited { + color: #000000; +} + +.codeSnippetContainerTabActive a:visited { + color: #000000; +} + +span.keyword { + color: #0000ff; + font-weight: normal; +} diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-Website.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-Website.css new file mode 100644 index 0000000..d39e08c --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-Website.css @@ -0,0 +1,156 @@ +/* Style adjustments for websites */ +.pageBody { + padding: 0px 20px 0px 0px; +} +.topicContent { + margin-left: 280px; +} + +/* Lightweight TOC */ +.tocCollapsed { + background: url('../icons/TocCollapsed.gif') no-repeat scroll center; + width: 17px; + height: 20px; + overflow: hidden; +} +.tocExpanded { + background: url('../icons/TocExpanded.gif') no-repeat scroll center; + width: 17px; + height: 20px; + overflow: hidden; +} +.tocResize { + position: absolute; + top: 90px; + left: 300px; + width: 5px; + height: 20px; + padding-right: 5px; +} +.tocResize img { + border: none; + cursor: pointer; +} +div#leftNav { + float: left; + margin: 0px -1px 0 0; + width: 280px; + min-height: 10px; + position: relative; + border-right: 1px solid #b6b6b6; + padding-left: 10px; + padding-top: 15px; +} +div#tocNav { + font-family: 'Segoe UI' ,Verdana,Arial; + overflow-x: hidden; + line-height: normal; + margin: -20px 0 0 -4px; +} +div#tocNav > div { + overflow-x: hidden; + white-space: normal; + width: auto; + margin-bottom: 5px; +} +div#leftNav a, div#leftNav a:link, div#leftNav a:visited { + color: #1364c4; + text-decoration: none; +} +div#leftNav a:hover { + color: #3390b1; +} +div#tocNav > div > a, div#tocNav > div > a:link, div#tocNav > div > a:visited { + display: block; + margin-left: 18px; + overflow: hidden; +} +div#tocNav > div.current > a, div#tocNav > div.current > a:link, div#tocNav > div.current > a:visited { + color: #000; + font-weight: bold; + text-decoration: none; +} +div#tocNav > div > a.tocExpanded, div#tocNav > div > a.tocCollapsed { + float: left; + display: inline-block; + margin-left: 0; + vertical-align: top; +} +div#tocResizableEW { + cursor: e-resize; + width: 15px; + top: 0; + height: 100%; + position: absolute; + display: block; + font-size: 0.5px; + right: -7px; +} +.toclevel0:first-child { + margin-top: 16px; +} +div#tocNav > div.toclevel1 { + padding-left: 17px; +} +div#tocNav > div.toclevel2 { + padding-left: 34px; +} +div#tocNav > div.toclevel3 { + padding-left: 51px; +} +div#tocNav > div.toclevel4 { + padding-left: 68px; +} +div#tocNav > div.toclevel5 { + padding-left: 85px; +} +div#tocNav > div.toclevel6 { + padding-left: 102px; +} +div#tocNav > div.toclevel7 { + padding-left: 119px; +} +div#tocNav > div.toclevel8 { + padding-left: 136px; +} +div#tocNav > div.toclevel9 { + padding-left: 153px; +} +div#tocNav > div.toclevel10 { + padding-left: 170px; +} + +/* Search form */ +form#SearchForm { + float: right; + background-color: #eee; + width: 280px; +} +form#SearchForm input { + background-color: #eee; + border: 0; + height: 22px; + width: 230px; + color: #3b3b3b; + display: inline-block; + margin: 1px 0 0 0; + padding: 1px 4px 1px 10px; +} +form#SearchForm button { + background: url('../icons/Search.png') no-repeat scroll center; + background-color: #eee; + float: right; + border: 0; + margin: 3px 2px 0 0; + cursor: pointer; + color: #3b3b3b; + width: 19px; + height: 18px; + overflow: hidden; +} +.searchContainer { + width: 700px; + margin-top: 50px; + margin-left: auto; + margin-right: auto; +} diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-cs-CZ.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-cs-CZ.css new file mode 100644 index 0000000..f38de74 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-cs-CZ.css @@ -0,0 +1,3 @@ +/* Start CS-CZ locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-de-DE.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-de-DE.css new file mode 100644 index 0000000..4cf80ba --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-de-DE.css @@ -0,0 +1,3 @@ +/* Start DE-DE locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-en-US.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-en-US.css new file mode 100644 index 0000000..248cbe5 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-en-US.css @@ -0,0 +1,3 @@ +/* Start EN-US locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-es-ES.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-es-ES.css new file mode 100644 index 0000000..4a7ebbd --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-es-ES.css @@ -0,0 +1,3 @@ +/* Start ES-ES locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-fr-FR.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-fr-FR.css new file mode 100644 index 0000000..d924dec --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-fr-FR.css @@ -0,0 +1,3 @@ +/* Start FR-FR locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-it-IT.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-it-IT.css new file mode 100644 index 0000000..36c6b22 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-it-IT.css @@ -0,0 +1,3 @@ +/* Start IT-IT locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-ja-JP.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-ja-JP.css new file mode 100644 index 0000000..403aa6d --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-ja-JP.css @@ -0,0 +1,18 @@ +/* Start JA-JP locale-specific CSS */ +body +{ + font-family: Segoe UI, Verdana, Arial, MS Pゴシック; +} +pre +{ + font-family: Consolas, Courier, monospace, MS ゴシック; +} +span.tt +{ + font-family: Consolas, Courier, monospace, MS ゴシック; +} +span.code +{ + font-family: Consolas, Courier, monospace, MS ゴシック; +} +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-ko-KR.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-ko-KR.css new file mode 100644 index 0000000..2b46e92 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-ko-KR.css @@ -0,0 +1,19 @@ +/* Start KO-KR locale-specific CSS */ +body +{ + font-family: Malgun Gothic, Segoe UI, Verdana, Arial; + font-size: 0.75em; /*9pt*/ +} +pre +{ + font-family: Consolas, Courier, monospace, 돋움체; +} +span.tt +{ + font-family: Consolas, Courier, monospace, 돋움체; +} +span.code +{ + font-family: Consolas, Courier, monospace, 돋움체; +} +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-pl-PL.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-pl-PL.css new file mode 100644 index 0000000..19e9810 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-pl-PL.css @@ -0,0 +1,3 @@ +/* Start PL-PL locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-pt-BR.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-pt-BR.css new file mode 100644 index 0000000..a0683b0 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-pt-BR.css @@ -0,0 +1,3 @@ +/* Start PT-BR locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-ru-RU.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-ru-RU.css new file mode 100644 index 0000000..c31f83a --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-ru-RU.css @@ -0,0 +1,3 @@ +/* Start RU-RU locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-tr-TR.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-tr-TR.css new file mode 100644 index 0000000..81ca462 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-tr-TR.css @@ -0,0 +1,3 @@ +/* Start TR-TR locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-zh-CN.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-zh-CN.css new file mode 100644 index 0000000..87e7090 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-zh-CN.css @@ -0,0 +1,18 @@ +/* Start ZH-CN locale-specific CSS */ +body +{ + font-family: "Microsoft YaHei UI","Microsoft YaHei","SimSun","Segoe UI","Lucida Grande",Verdana,Arial,Helvetica,sans-serif +} +pre +{ + font-family: Consolas, Courier, monospace!important; +} +span.tt +{ + font-family: Consolas, Courier, monospace; +} +span.code +{ + font-family: Consolas, Courier, monospace; +} +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-zh-TW.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-zh-TW.css new file mode 100644 index 0000000..eab654f --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding-zh-TW.css @@ -0,0 +1,18 @@ +/* Start ZH-TW locale-specific CSS */ +body +{ + font-family: MS JhengHei, MingLiU, Segoe UI, Verdana, Arial; +} +pre +{ + font-family: Consolas, Courier, monospace, 細明體; +} +span.tt +{ + font-family: Consolas, Courier, monospace, 細明體; +} +span.code +{ + font-family: Consolas, Courier, monospace, 細明體; +} +/* End locale-specific CSS */ diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding.css b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding.css new file mode 100644 index 0000000..6850320 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013/styles/branding.css @@ -0,0 +1,583 @@ +/* General styles */ +body { + font-family: 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif; + font-size: 15px; + padding: 0; + margin: 0; + margin-left: auto; + margin-right: auto; + color: #000; +} +h1 { + font-family: 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif; + font-size: 2.5em; + font-weight: normal; + margin-top: 0; + color: #000; +} +h2, h3 { + font-family: 'Segoe UI Semibold' , 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif; + font-weight: normal; + margin: 0; + padding-bottom: 5px; + padding-top: 5px; + color: #000; +} +h2 { + font-size: 1.769em; +} +h3 { + font-size: 1.231em; +} +h4, .subHeading { + font-family: 'Segoe UI Semibold' , 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif; + font-size: 1.077em; + font-weight: normal; + margin: 0; + color: #000; +} +.subHeading { + margin-top: 5px; +} +h5, h6 { + font-family: 'Segoe UI Semibold' , 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif; + font-size: 1em; + font-weight: normal; + line-height: 130%; + margin: 0; + color: #000; +} +a, a:link { + text-decoration: none; + color: #1364c4; +} +a:visited, a:active { + text-decoration: none; + color: #03697a; +} +a:hover { + text-decoration: none; + color: #3390b1; +} +a.button, a.button:active, a.button:hover { + float: right; + background-color: #0080c0; + color: white; + padding: 6px 12px; + font-size: 14px; + border: 1px solid transparent; + border-radius: 4px; + margin-left: 6px; +} +a.button:link, a.button:visited { + color: white; +} +img { + border: 0; +} +p { + margin-top: 0; + margin-bottom: 0; + padding-bottom: 15px; + line-height: 18px; +} +q { + font-style: italic; +} +blockquote { + margin-top: 0px; +} +table { + border-collapse: collapse; + padding: 0; + margin-bottom: 15px; + font-size: 15px; + width: 100%; +} +td, th { + border-bottom: 1px solid #dbdbdb; + margin: 10px; + padding-top: 10px; + padding-bottom: 10px; + padding-right: 8px; + padding-left: 8px; +} +th { + background-color: #ededed; + color: #636363; + text-align: left; + padding-top: 5px; + padding-bottom: 5px; +} +td { + color: #2a2a2a; + vertical-align: top; +} +table p:last-child { + padding-bottom: 0; +} +table.members { + width: 100%; +} +table.members td { + min-width: 72px; +} +table.members img { + padding-right: 5px; +} +div.alert img { + padding-right: 5px; +} +ol { + margin-top: 0px; + margin-bottom: 10px; +} +ol ol { + list-style-type: lower-alpha; +} +ol ol ol { + list-style-type: lower-roman; +} +ul { + margin-top: 0px; + margin-bottom: 10px; +} +.noBullet { + list-style-type: none; + padding-left: 20px; +} +ul ul { + list-style-type: circle; +} +ul ul ul { + list-style-type: square; +} +dt { + font-weight: 600; +} +pre { + font-family: Consolas, Courier, monospace; + overflow: hidden; +} +.pageHeader { + font-family: 'Segoe UI' , Tahoma, Helvetica, Sans-Serif; + background-color: #333333; + color: #d0d0d0; + padding: 5px 10px; + vertical-align: middle; + height: 25px; +} +.pageBody { + padding: 0px; +} +.topicContent { + padding: 10px 10px 15px 10px; + overflow: visible; + border-left: 1px solid #bbb; +} +.pageFooter { + clear: both; + border-top: solid 1px #bbb; + padding: 10px; +} +.feedbackLink { +} +.iconColumn { + width: 100px; +} +.seeAlsoStyle { +} +table.titleTable td { + padding-top: 0px; + border-width: 0px; +} +td.titleColumn { + margin-top: 0px; + padding-left: 0px; + vertical-align: middle; +} +td.logoColumn { + padding-left: 0px; + padding-right: 10px; + vertical-align: middle; + width: 1px; +} +td.logoColumnAbove { + padding: 0px 10px 0px 0px; + vertical-align: middle; +} +span.selflink { + color: #000066; +} +div.preliminary { + margin-top: 1em; + margin-bottom: 1em; + font-weight: bold; + color: #333333; +} +div.caption { + font-weight: bold; + font-size: 1em; /*12pt*/ + color: #003399; + padding-top: 5px; + padding-bottom: 5px; +} +.procedureSubHeading { + font-size: 1.1em; /*13.5pt*/ + font-weight: bold; +} +.summary { +} + +/* Collapsible region styles */ +.collapsibleAreaRegion { + margin-top: 15px; + margin-bottom: 15px; +} +.collapseToggle { + padding-right: 5px; +} +.collapsibleRegionTitle { + font-family: 'Segoe UI Semibold' , 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif !important; + font-style: normal !important; + font-size: 1.769em; + margin-top: 9px; + margin-bottom: 19px; + padding-top: 20px; + padding-bottom: 5px; + cursor: pointer; +} +.collapsibleSection { + padding: 0 0 0 20px; +} + +/* Syntax and code snippet styles */ +.codeSnippetContainer { + min-width: 260px; + margin-top: 10px; +} +.codeSnippetContainerTabs { + height: 23px; + vertical-align: middle; + position: relative; + z-index: 1; +} +.codeSnippetContainerTab { + padding: 0px 15px; + width: auto; + height: 22px; + color: #2a2a2a; + font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important; + font-size: 12px; + font-style: normal !important; + vertical-align: baseline; + float: left; +} +.codeSnippetContainerTabActive { + background: #f8f8f8; + padding: 0px 15px; + width: auto; + height: 22px; + color: #000000; + font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important; + font-size: 12px; + font-style: normal !important; + vertical-align: baseline; + border-top-color: #939393; + border-right-color: #939393; + border-left-color: #939393; + border-top-width: 1px; + border-right-width: 1px; + border-left-width: 1px; + border-top-style: solid; + border-right-style: solid; + border-left-style: solid; + float: left; +} +.codeSnippetContainerTabPhantom { + background: #f8f8f8; + padding: 0px 15px; + width: auto; + height: 22px; + color: #000000; + font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important; + font-size: 12px; + font-style: normal !important; + vertical-align: baseline; + border-top-color: #939393; + border-right-color: #939393; + border-left-color: #939393; + border-top-width: 1px; + border-right-width: 1px; + border-left-width: 1px; + border-top-style: solid; + border-right-style: solid; + border-left-style: solid; + float: left; + display: none; +} +.codeSnippetContainerTabSingle { + background: #f8f8f8; + padding: 2px 15px 0px 15px; + width: auto; + height: 20px; + color: #000000; + font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important; + font-size: 12px; + font-weight: bold; + font-style: normal !important; + vertical-align: baseline; + border-top-color: #939393; + border-right-color: #939393; + border-left-color: #939393; + border-top-width: 1px; + border-right-width: 1px; + border-left-width: 1px; + border-top-style: solid; + border-right-style: solid; + border-left-style: solid; + float: left; +} +.codeSnippetContainerTab a { + top: 2px; + color: #000000; + font-weight: bold; + text-decoration: none; + position: relative; +} +.codeSnippetContainerTab a:link { + color: #000000; +} +.codeSnippetContainerTab a:hover { + color: #136460; +} +.codeSnippetContainerTabActive a { + top: 2px; + color: #000000; + font-weight: bold; + text-decoration: none; + position: relative; + cursor: default; +} +.codeSnippetContainerTabActive a:link { + color: #000000; +} +.codeSnippetContainerTabActive a:hover { + color: #000000; +} +.codeSnippetContainerTabPhantom a { + top: 2px; + color: #000000; + font-weight: bold; + text-decoration: none; + position: relative; + cursor: default; +} +.codeSnippetContainerTabPhantom a:link { + color: #000000; +} +.codeSnippetContainerCodeContainer { + border: 1px solid #939393; + top: -1px; + margin-bottom: 12px; + position: relative; +} +.codeSnippetToolBar { + width: auto; + height: auto; +} +.codeSnippetToolBarText { + top: -8px; + width: auto; + height: 0px; + padding-right: 0px; + padding-left: 0px; + vertical-align: top; + float: right; + position: relative; +} +.codeSnippetToolBarText a { + color: #1364c4; + text-decoration: none; + padding-left: 8px; + padding-right: 8px; + font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important; + font-size: 10px; + font-style: normal !important; + text-decoration: none; + margin-right: 10px; + margin-left: 0px; + background-color: #ffffff; +} +.codeSnippetToolBarText a:link { + color: #1364c4; +} +.codeSnippetContainerCode { + margin: 0px; + padding: 10px; + width: auto; +} +.codeSnippetContainerCode div { + margin: 0px; + padding: 0px; +} +.codeSnippetContainerCode pre { + margin: 0px; + padding: 5px; + overflow: auto; + font-family: Consolas, Courier, monospace !important; + font-style: normal; + font-weight: normal; + -ms-word-wrap: normal; +} +.codeSnippetContainerCode .keyword { + color: #0000ff; + font-weight: normal; +} + +.copyCodeSnippet { +} + +/* Keyword and phrase styles */ +span.code, span.command { + font-family: Consolas, Courier, monospace; + color: #000066; + background-color: #f4f4f4; +} +span.ui { + font-weight: bold; +} +span.math { + font-style: italic; +} +span.input { + font-weight: bold; +} +span.term { + font-style: italic; +} +span.label { + font-weight: bold; +} +span.foreignPhrase, span.phrase { + font-style: italic; +} +span.placeholder { + font-style: italic; +} +span.typeparameter { + font-style: italic; +} +span.identifier { +} +span.keyword { + font-weight: bold; +} +span.parameter { + font-style: italic; +} +dt span.parameter { + font-weight: normal; +} +span.literal, span.literalValue { + color: #cc0000; +} +span.comment { + color: #006633; +} +span.introStyle { + color: #a9a9a9; +} +span.nolink { + font-weight: bold; +} + +/* Auto-outline styles */ +ul.autoOutline { +} +li.outlineSectionEntry { +} +div.outlineSectionEntrySummary { +} + +/* Media styles */ +div.mediaNear { + text-align: left; + margin-top: 1em; + margin-bottom: 1em; +} +div.mediaFar { + text-align: right; + margin-top: 1em; + margin-bottom: 1em; +} +div.mediaCenter { + text-align: center; + margin-top: 1em; + margin-bottom: 1em; +} +span.captionLead { + font-weight: bold; + margin-right: .5em; +} +span.media img { + vertical-align: top; +} + +/* Glossary styles */ +div.glossaryDiv { +} +div.glossaryLetterBar { +} +hr.glossaryRule { +} +h3.glossaryGroupHeading { + color: #808080; +} +div.glossaryGroup { +} +dl.glossaryGroupList { + margin: 0; + color: Black; +} +dt.glossaryEntry { + margin-left: 2em; +} +dd.glossaryEntry { + margin-left: 2em; + margin-bottom: 2em; +} +div.relatedEntry { + margin-bottom: 4px; +} + +/* Bibliography styles */ +div.bibliographStyle { + padding-top: 5px; +} +span.bibliographyNumber { +} +span.bibliographyAuthor { + font-weight: bold; +} +span.bibliographyTitle { + font-style: italic; +} +span.bibliographyPublisher { +} +sup.citation a:link a:visited a:active { + text-decoration: none; +} + +/* Placeholder for the Help 1 user data style class */ +.userDataStyle { +} + + + +.missing +{ + color: #dc143c; + font-size: 8.5pt; + font-weight: bold; +} diff --git a/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013WithLatex.cs b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013WithLatex.cs new file mode 100644 index 0000000..85e0291 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/PresentationStyles/VS2013WithLatex.cs @@ -0,0 +1,118 @@ +// Copyright (c) Giovanni Lafratta. All rights reserved. +// Licensed under the MIT license. +// See the LICENSE file in the project root for more information. + +using Sandcastle.Core; +using Sandcastle.Core.PresentationStyle; +using System; +using System.IO; +using System.Reflection; + +namespace Novacta.Shfb.LatexTools.PresentationStyles +{ + ///

      + /// Represents a VS2013-based presentation style that supports + /// LaTeX formatted formulas in reference XML comments and conceptual content topics. + /// + [PresentationStyleExport( + id: "Novacta.Shfb.LatexTools.VS2013", + title: "VS2013 + LaTeX", + Version = AssemblyInfo.ProductVersion, + Copyright = AssemblyInfo.Copyright, + Description = "VS2013 with LaTeX content.")] + public sealed class VS2013WithLatex : PresentationStyleSettings + { + /// + public override string Location => ComponentUtilities.AssemblyFolder(Assembly.GetExecutingAssembly()); + + /// + /// Initializes a new instance of the class. + /// + public VS2013WithLatex() + { + // The base path of the presentation style files relative to the assembly's location. If your + // assembly will reside in the same folder as the presentation style content, you can remove this + // property setting. If adding multiple presentation styles to the assembly, set this to the name + // of the sub-folder that contains the presentation style content folders. + this.BasePath = Path.Combine("PresentationStyles", "VS2013"); + + this.SupportedFormats = + HelpFileFormats.HtmlHelp1 | HelpFileFormats.MSHelpViewer | HelpFileFormats.Website; + + this.SupportsNamespaceGrouping = this.SupportsCodeSnippetGrouping = true; + + // If relative, these paths are relative to the base path + this.ResourceItemsPath = "Content"; + this.ToolResourceItemsPath = "SHFBContent"; + + this.DocumentModelApplicator = new StandardDocumentModel(); + this.ApiTableOfContentsGenerator = new StandardApiTocGenerator(); + + this.BuildAssemblerConfiguration = @"Configuration\BuildAssembler.config"; + + // Note that UNIX based web servers may be case-sensitive with regard to folder and filenames so + // match the case of the folder and filenames in the literals to their actual casing on the file + // system. + this.ContentFiles.Add(new ContentFiles(this.SupportedFormats, @"icons\*.*")); + this.ContentFiles.Add(new ContentFiles(this.SupportedFormats, @"scripts\*.*")); + this.ContentFiles.Add(new ContentFiles(this.SupportedFormats, @"styles\*.*")); + + // By default, this will use the standard web file content from the Sandcastle Help File Builder + this.ContentFiles.Add(new ContentFiles(HelpFileFormats.Website, null, @"Web\*.*", + String.Empty, new[] { ".aspx", ".html", ".htm", ".php" })); + + // Define the transform component arguments + this.TransformComponentArguments.Add(new TransformComponentArgument("logoFile", true, true, null, + "An optional logo file to insert into the topic headers. Specify the filename only, omit " + + "the path.\r\n\r\nImportant: Add a folder called \"icons\\\" to the root of your help file " + + "builder project and place the logo file in the icons\\ folder. Set the Build Action property " + + "to Content on the logo file's properties.\r\n\r\nIf blank, no logo will appear in the topic " + + "headers. If building website output and your web server is case-sensitive, be sure to match " + + "the case of the folder name in your project with that of the presentation style. The same " + + "applies to the logo filename itself.")); + this.TransformComponentArguments.Add(new TransformComponentArgument("logoHeight", true, true, null, + "An optional logo height. If left blank, the actual logo image height is used.")); + this.TransformComponentArguments.Add(new TransformComponentArgument("logoWidth", true, true, null, + "An optional logo width. If left blank, the actual logo image width is used.")); + this.TransformComponentArguments.Add(new TransformComponentArgument("logoAltText", true, true, null, + "Optional logo alternate text. If left blank, no alternate text is added.")); + this.TransformComponentArguments.Add(new TransformComponentArgument("logoPlacement", true, true, + "left", "An optional logo placement. Specify left, right, or above. If not specified, the " + + "default is left.")); + this.TransformComponentArguments.Add(new TransformComponentArgument("logoAlignment", true, true, + "left", "An optional logo alignment when using the 'above' placement option. Specify left, " + + "right, or center. If not specified, the default is left.")); + this.TransformComponentArguments.Add(new TransformComponentArgument("maxVersionParts", false, true, + null, "The maximum number of assembly version parts to show in API member topics. Set to 2, " + + "3, or 4 to limit it to 2, 3, or 4 parts or leave it blank for all parts including the " + + "assembly file version value if specified.")); + this.TransformComponentArguments.Add(new TransformComponentArgument("defaultLanguage", true, true, + "cs", "The default language to use for syntax sections, code snippets, and a language-specific " + + "text. This should be set to cs, vb, cpp, fs, or the keyword style parameter value of a " + + "third-party syntax generator if you want to use a non-standard language as the default.")); + this.TransformComponentArguments.Add(new TransformComponentArgument("includeEnumValues", false, true, + "true", "Set this to 'true' to include the column for the numeric value of each field in " + + "enumerated type topics. Set it to 'false' to omit the numeric values column.")); + this.TransformComponentArguments.Add(new TransformComponentArgument("baseSourceCodeUrl", false, true, + null, "If you set the Source Code Base Path property in the Paths category, specify the URL to " + + "the base source code folder on your project's website here. Some examples for GitHub are " + + "shown below.\r\n\r\n" + + "Important: Be sure to set the Source Code Base Path property and terminate the URL below with " + + "a slash if necessary.\r\n\r\n" + + "Format: https://github.com/YourUserID/YourProject/blob/BranchNameOrCommitHash/BaseSourcePath/ \r\n\r\n" + + "Master branch: https://github.com/JohnDoe/WidgestProject/blob/master/src/ \r\n" + + "A different branch: https://github.com/JohnDoe/WidgestProject/blob/dev-branch/src/ \r\n" + + "A specific commit: https://github.com/JohnDoe/WidgestProject/blob/c6e41c4fc2a4a335352d2ae8e7e85a1859751662/src/")); + this.TransformComponentArguments.Add(new TransformComponentArgument("requestExampleUrl", false, true, + null, "To include a link that allows users to request an example for an API topic, set the URL " + + "to which the request will be sent. This can be a web page URL or an e-mail URL. Only include " + + "the URL as the parameters will be added automatically by the topic. For example:\r\n\r\n" + + "Create a new issue on GitHub: https://github.com/YourUserID/YourProject/issues/new \r\n" + + "Send via e-mail: mailto:YourEmailAddress@Domain.com")); + + // Add the plug-in dependencies if any + this.PlugInDependencies.Add(new PlugInDependency("Lightweight Website Style", null)); + this.PlugInDependencies.Add(new PlugInDependency("Novacta.Shfb.LatexPlugIn", null)); + } + } +} diff --git a/src/Novacta.Shfb.LatexTools/Properties/AssemblyInfo.cs b/src/Novacta.Shfb.LatexTools/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..035f974 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/Properties/AssemblyInfo.cs @@ -0,0 +1,26 @@ +// Copyright (c) Giovanni Lafratta. All rights reserved. +// Licensed under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Reflection; +using System.Resources; +using System.Runtime.InteropServices; + +[assembly: AssemblyCulture("")] + +[assembly: ComVisible(false)] + +[assembly: CLSCompliant(true)] + +[assembly: NeutralResourcesLanguage("en")] + +[assembly: AssemblyVersion(AssemblyInfo.ProductVersion)] + +internal static class AssemblyInfo +{ + public const string ProductVersion = "1.0.0"; + + public const string Copyright = + "Copyright \xA9 2021, Giovanni Lafratta, All Rights Reserved."; +} diff --git a/src/Novacta.Shfb.LatexTools/Properties/launchSettings.json b/src/Novacta.Shfb.LatexTools/Properties/launchSettings.json new file mode 100644 index 0000000..160de15 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "Novacta.Shfb.Latex": { + "commandName": "Executable", + "executablePath": "$(SHFBROOT)\\Tools\\SandcastleBuilderGUI.exe" + } + } +} \ No newline at end of file diff --git a/src/Novacta.Shfb.LatexTools/build/Novacta.Shfb.LatexTools.props b/src/Novacta.Shfb.LatexTools/build/Novacta.Shfb.LatexTools.props new file mode 100644 index 0000000..7445748 --- /dev/null +++ b/src/Novacta.Shfb.LatexTools/build/Novacta.Shfb.LatexTools.props @@ -0,0 +1,5 @@ + + + + +