├── .clang-format
├── .gitattributes
├── .gitignore
├── .gitmodules
├── CONTRIBUTORS
├── LICENSE
├── LaTeX2AI.sln
├── LaTeX2AI.vcxproj
├── LaTeX2AI.vcxproj.filters
├── LaTeX2AI.vcxproj.user
├── LaTeX2AI.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── xcshareddata
│ └── xcschemes
│ └── LaTeX2AI.xcscheme
├── README.md
├── doc
├── BUILD_FROM_SOURCE.md
├── CHANGELOG.md
├── images
│ ├── convert_icons.sh
│ ├── create_edit_ui.png
│ ├── macos_permission_error.png
│ ├── placement_baseline.png
│ ├── placement_large.png
│ ├── placement_small.png
│ ├── tool_create.png
│ ├── tool_options.png
│ ├── tool_redo.png
│ ├── tool_save_as_pdf.png
│ └── tool_testing.png
└── logo
│ ├── create_logo.sh
│ ├── icon_256.png
│ ├── item_placement.tex
│ ├── logo_black.png
│ ├── logo_color.png
│ ├── logo_icon.tex
│ ├── logo_square.png
│ └── logo_square_bw.png
├── resources
├── Mac
│ ├── LaTeX2AI.r
│ └── LaTeX2AI2x.r
├── Win
│ ├── LaTeX2AI.rc
│ └── Resource.h
└── raw
│ ├── IDToFile.txt
│ ├── LaTeX2AI_cursor_create@2x.svg
│ ├── LaTeX2AI_cursor_edit@2x.svg
│ ├── LaTeX2AI_cursor_locked@2x.svg
│ ├── LaTeX2AI_tool_create_dark@2x.svg
│ ├── LaTeX2AI_tool_create_light@2x.svg
│ ├── LaTeX2AI_tool_options_dark@2x.svg
│ ├── LaTeX2AI_tool_options_light@2x.svg
│ ├── LaTeX2AI_tool_redo_dark@2x.svg
│ ├── LaTeX2AI_tool_redo_light@2x.svg
│ ├── LaTeX2AI_tool_save_as_pdf_dark@2x.svg
│ ├── LaTeX2AI_tool_save_as_pdf_light@2x.svg
│ ├── LaTeX2AI_tool_testing_dark@2x.svg
│ └── LaTeX2AI_tool_testing_light@2x.svg
├── scripts
├── __init__.py
├── base.py
├── check_license.py
├── compile_mac.sh
├── compile_solution.bat
├── create_headers.py
├── create_release.py
├── pipl
│ ├── README.md
│ ├── create_pipl.py
│ └── pipl_gen
│ │ ├── __init__.py
│ │ ├── pipl_gen.py
│ │ └── template_plugin.json
├── release_zip_readme.md
└── ui_signing
│ ├── SET_KEY_EXAMPLE.sh
│ ├── ZXPSignCmd-64bit
│ └── sign_ui_folder.sh
├── src
├── l2a_annotator.cpp
├── l2a_annotator.h
├── l2a_constants.h
├── l2a_global.cpp
├── l2a_global.h
├── l2a_item.cpp
├── l2a_item.h
├── l2a_latex.cpp
├── l2a_latex.h
├── l2a_names.h
├── l2a_plugin.cpp
├── l2a_plugin.h
├── l2a_property.cpp
├── l2a_property.h
├── l2a_suites.cpp
├── l2a_suites.h
├── l2a_ui_base.cpp
├── l2a_ui_base.h
├── l2a_ui_debug.cpp
├── l2a_ui_debug.h
├── l2a_ui_item.cpp
├── l2a_ui_item.h
├── l2a_ui_manager.cpp
├── l2a_ui_manager.h
├── l2a_ui_options.cpp
├── l2a_ui_options.h
├── l2a_ui_redo.cpp
├── l2a_ui_redo.h
├── tests
│ ├── test_base64.cpp
│ ├── test_base64.h
│ ├── test_file_system.cpp
│ ├── test_file_system.h
│ ├── test_framework.cpp
│ ├── test_framework.h
│ ├── test_latex.cpp
│ ├── test_latex.h
│ ├── test_parameter_list.cpp
│ ├── test_parameter_list.h
│ ├── test_string_functions.cpp
│ ├── test_string_functions.h
│ ├── test_utility.cpp
│ ├── test_utlity.h
│ ├── testing.cpp
│ ├── testing.h
│ ├── testing_utility.cpp
│ └── testing_utlity.h
└── utils
│ ├── l2a_ai_functions.cpp
│ ├── l2a_ai_functions.h
│ ├── l2a_error.cpp
│ ├── l2a_error.h
│ ├── l2a_execute.cpp
│ ├── l2a_execute.h
│ ├── l2a_file_system.cpp
│ ├── l2a_file_system.h
│ ├── l2a_math.cpp
│ ├── l2a_math.h
│ ├── l2a_parameter_list.cpp
│ ├── l2a_parameter_list.h
│ ├── l2a_string_functions.cpp
│ ├── l2a_string_functions.h
│ ├── l2a_utils.h
│ ├── l2a_version.cpp
│ └── l2a_version.h
├── tex
├── LaTeX2AI_header.tex
└── LaTeX2AI_item.tex
└── ui
├── CSXS
└── manifest.xml
├── css
└── latex2ai.css
├── html
├── index_debug.html
├── index_item.html
├── index_options.html
├── index_redo.html
├── item_placement_dark.png
└── item_placement_light.png
└── js
├── CSInterface.js
├── common.js
├── jquery-3.7.1.min.js
├── main_debug.js
├── main_item.js
├── main_options.js
└── main_redo.js
/.clang-format:
--------------------------------------------------------------------------------
1 | # Define the base style
2 | BasedOnStyle: Google
3 |
4 | # Modifications of base style
5 | AlignAfterOpenBracket: DontAlign
6 | BreakBeforeBraces: Allman
7 | ColumnLimit: 120
8 | MaxEmptyLinesToKeep: 3
9 | NamespaceIndentation: All
10 | SpacesInContainerLiterals: false
11 | Standard: c++17
12 | TabWidth: 4
13 | IndentWidth: 4
14 |
15 | # Sort imported headers
16 | IncludeBlocks: Regroup
17 | SortIncludes: CaseInsensitive
18 | IncludeCategories:
19 | # Precompiled Illustrator header
20 | - Regex: "IllustratorSDK\\.h"
21 | Priority: -1
22 |
23 | # Header corresponging to cpp file has priority 0
24 |
25 | # LaTeX2AI headers
26 | - Regex: "l2a_.*\\.(h|H)"
27 | Priority: 10
28 |
29 | # Standard library headers
30 | - Regex: "<[a-z_]+>"
31 | Priority: 100
32 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.ai binary
2 | *.png binary
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Hidden files
2 | .*
3 |
4 | # Visual Studio files
5 | .vs/*
6 | */.vs/*
7 |
8 | # XCode files
9 | *xcuserdata*
10 | *xcworkspacedata*
11 |
12 | # Build files
13 | /forms/obj
14 | /build
15 |
16 | # Automatically generated files
17 | auto_generated/
18 | scripts/executables/
19 | ui/js/auto_generated.js
20 | plugin.pipl
21 |
22 | # Python
23 | __pycache__
24 | *.pyc
25 |
26 | # TeX files
27 | *.aux
28 | *.log
29 | *.pdf
30 | *.synctex.gz
31 | *.fls
32 | *.fdb_latexmk
33 |
34 | # Certificate
35 | latex2ai_certificate.p12
36 | SET_KEY.sh
37 | latex2ai_ui.zxp
38 | com.isteinbrecher.latex2ai
39 |
40 | # Release
41 | LaTeX2AI*.aip
42 | LaTeX2AI*.zip
43 | */release_zip/*
44 | */release_zip_temp/*
45 | */release_files/*
46 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "tpl/tinyxml2"]
2 | path = tpl/tinyxml2
3 | url = https://github.com/leethomason/tinyxml2.git
4 | [submodule "tpl/StackWalker"]
5 | path = tpl/StackWalker
6 | url = https://github.com/JochenKalmbach/StackWalker.git
7 | [submodule "tpl/json"]
8 | path = tpl/json
9 | url = https://github.com/nlohmann/json.git
10 | [submodule "tpl/base64"]
11 | path = tpl/base64
12 | url = https://github.com/isteinbrecher/base64.git
13 | [submodule "tpl/CRCpp"]
14 | path = tpl/CRCpp
15 | url = https://github.com/d-bahr/CRCpp.git
16 | [submodule "tpl/cpp-semver"]
17 | path = tpl/cpp-semver
18 | url = https://github.com/z4kn4fein/cpp-semver.git
19 |
--------------------------------------------------------------------------------
/CONTRIBUTORS:
--------------------------------------------------------------------------------
1 | # List of authors for LaTeX2AI (including their GitHub user names)
2 |
3 | # Main developer
4 |
5 | Ivo Steinbrecher (@isteinbrecher)
6 |
7 | # Contributors (in chronological order of their first contribution)
8 |
9 | Nikita Rushmanov (@nikita240)
10 | Da Zhi (@dzhi1993)
11 | @MGG1996
12 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020-2025 Ivo Steinbrecher
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/LaTeX2AI.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 17
4 | VisualStudioVersion = 17.7.34221.43
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LaTeX2AI", "LaTeX2AI.vcxproj", "{43DFFFAC-95F5-4D21-BB85-EA1BA160E9C2}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|x64 = Debug|x64
11 | Release|x64 = Release|x64
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {43DFFFAC-95F5-4D21-BB85-EA1BA160E9C2}.Debug|x64.ActiveCfg = Debug|x64
15 | {43DFFFAC-95F5-4D21-BB85-EA1BA160E9C2}.Debug|x64.Build.0 = Debug|x64
16 | {43DFFFAC-95F5-4D21-BB85-EA1BA160E9C2}.Release|x64.ActiveCfg = Release|x64
17 | {43DFFFAC-95F5-4D21-BB85-EA1BA160E9C2}.Release|x64.Build.0 = Release|x64
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {68844410-2C22-484E-B8B2-EE78E416647E}
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/LaTeX2AI.vcxproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | $(ILLUSTRATOR_EXE)
5 | WindowsLocalDebugger
6 |
7 |
8 | $(ILLUSTRATOR_EXE)
9 | WindowsLocalDebugger
10 |
11 |
12 |
--------------------------------------------------------------------------------
/LaTeX2AI.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/LaTeX2AI.xcodeproj/xcshareddata/xcschemes/LaTeX2AI.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
31 |
32 |
42 |
45 |
46 |
47 |
53 |
54 |
60 |
61 |
62 |
63 |
65 |
66 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/doc/BUILD_FROM_SOURCE.md:
--------------------------------------------------------------------------------
1 | # Build LaTeX2AI from source
2 |
3 | ## Requirements
4 |
5 | The additional requirements to build LaTeX2AI from source are:
6 |
7 | - A C++ compiler has to be available on the system. This repository includes a Visual Studio 2022 solution for Windows and a Xcode project for macOS.
8 | - `python3` and `git` have to be available on the system.
9 |
10 | ## Getting started
11 |
12 | 1. Download and unpack the [Adobe Illustrator SDK](https://console.adobe.io/downloads)
13 |
14 | 1. Go to the sample code folder `/sample code` and run
15 | ```
16 | git clone https://github.com/isteinbrecher/latex2ai.git
17 | ```
18 | 1. Go to `/sample code/LaTeX2AI` and run
19 | ```
20 | git submodule update --init
21 | ```
22 |
23 | ## Windows
24 |
25 | 1. Environment variables:
26 |
27 | - `PYTHON_EXE` has to point to a valid `python3` executable on the system.
28 | - `ILLUSTRATOR_EXE` has to point to the illustrator executable on the system (this path is used for debugging).
29 |
30 | 1. Open `/sample code/latex2ai/LaTeX2AI.sln` with Visual Studio, select the build type (_Release_ or _Debug_) and compile the solution.
31 | It might be necessary to change the _Windows SDK_ version for `LaTeX2AI` to match the one available on your system.
32 | 1. The compiled binary is located at `/sample code/output/win/x64/`.
33 | This directory has to be set as the Plugin directory in Illustrator.
34 | 1. You have to set a link to the UI folder so Illustrator can find the user interface:
35 | ```
36 | mklink /D "C:\Users\\AppData\Roaming\Adobe\CEP\extensions\com.isteinbrecher.latex2ai" "\samplecode\latex2ai\ui"
37 | ```
38 | 1. Debugging of unsigned extensions has to be turned on ([see the Adobe CEP cookbook](https://github.com/Adobe-CEP/CEP-Resources/blob/master/CEP_11.x/Documentation/CEP%2011.1%20HTML%20Extension%20Cookbook.md#debugging-unsigned-extensions)):
39 | - Open `regedit`
40 | - Go to the key `HKEY_CURRENT_USER/Software/Adobe/CSXS.11`
41 | - Add a new entry `PlayerDebugMode` of type `string` with the value of `1`
42 |
43 | ## macOS
44 |
45 | 1. Open `/sample code/latex2ai/LaTeX2AI.xcodeproj` with Xcode and compile the solution.
46 | 1. The compiled binary is located at `/sample code/output/`.
47 | This directory has to be set as the Plugin directory in Illustrator.
48 | 1. You have to set a link to the UI folder so Illustrator can find the user interface:
49 | ```bash
50 | ln -s "\samplecode\latex2ai\ui" "~/Library/Application Support/Adobe/CEP/extensions/com.isteinbrecher.latex2ai"
51 | ```
52 | 1. Debugging of unsigned extensions has to be turned on ([see the Adobe CEP cookbook](https://github.com/Adobe-CEP/CEP-Resources/blob/master/CEP_11.x/Documentation/CEP%2011.1%20HTML%20Extension%20Cookbook.md#debugging-unsigned-extensions)):
53 | ```bash
54 | defaults write com.adobe.CSXS.11 PlayerDebugMode 1
55 | ```
56 |
--------------------------------------------------------------------------------
/doc/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | - **v1.0.3**
4 | - Features:
5 | - Pressing `Escape` in the debug form now returns to the item form instead of ending the item create/edit process.
6 | - Bug fixes:
7 | - Fix bug that could arise when the item vector inside the annotator contained items with non-valid pointers
8 | - **v1.0.2**
9 | - Bug fixes:
10 | - Fix bug that caused Illustrator to crash when deselecting all active LaTeX2AI elements [#189](https://github.com/isteinbrecher/latex2ai/issues/189).
11 | - **v1.0.1**
12 | - Bug fixes:
13 | - Fix bug that caused problems when using items that were created using a deprecated hash algorithm.
14 | - **v1.0.0**
15 | - Features:
16 | - Add macOS support.
17 | - Add support for Unicode file paths.
18 | - Fix pdf file structure before missing links message is shown.
19 | - Improve finding of LaTeX and ghostscript paths.
20 | - Rework documentation.
21 | - Fix errors when working with Creative Cloud documents.
22 | - Allow to chose hotkey to finish item create / edit UI.
23 | - Other:
24 | - Use platform independent string hash algorithm.
25 | - Use native `html` based UI.
26 | - Restructured the repository file structure.
27 | - Deprecations:
28 | - Due to the new `html` UI, **Illustrator CS6 support is dropped**.
29 | - **v0.0.10**
30 | - Features:
31 | - Add optional warnings when saving as PDF.
32 | - Other:
33 | - Add warning that LaTeX2AI is not compatible with non ASCII characters in the document path.
34 | - Support Illustrator 2022
35 | - Improve drawing of borders in preview mode.
36 | - **v0.0.9**
37 | - Features:
38 | - Add storage of labels inside Illustrator.
39 | - Add undo and redo text.
40 | - **v0.0.8**
41 | - Bug fixes:
42 | - Fix bug in header include function.
43 | - Fix a bug when using MikTeX.
44 | - Other:
45 | - Deactivate possible externalization in TikZ constructs.
46 | - **v0.0.7**
47 | - Bug fixes:
48 | - Fix bug in check version.
49 | - Other:
50 | - Improve path finding at startup.
51 | - **v0.0.6**
52 | - Bug fixes:
53 | - Fix bug when saving a PDF for an unsaved AI document.
54 | - Other:
55 | - LaTeX2AI now checks on startup if new releases are published on GitHub.
56 | - Improve output message for Illustrator errors.
57 | - Multiple images are now split with a single call to ghostscript.
58 | - Add logo.
59 | - **v0.0.5**
60 | - Other:
61 | - Support Illustrator 2017
62 | - **v0.0.4**
63 | - Bug fixes:
64 | - Fix error when editing item with missing PDF file.
65 | - Fix error with included headers containing relative paths.
66 | - Clean temp directory at startup.
67 | - Fix bugs when working with locked and or hidden layers / groups.
68 | - Other:
69 | - Create automated build script.
70 | - Support Illustrator CC 2018.
71 | - **v0.0.3**
72 | - New features:
73 | - Allow to redo boundary box from the create / edit form.
74 | - Allow to redo the latex label from the create / edit form.
75 | - Bug fixes:
76 | - Fix bug with whitespaces in `system` calls.
77 | - Other:
78 | - Add contributing guidelines.
79 | - Change the default placement options.
80 | - Rename environment variable `ILLUSTRATOR_PATH` to `ILLUSTRATOR_EXE`.
81 | - **v0.0.2**
82 | - New features:
83 | - Allow for `\input` commands in LaTeX headers.
84 | - Add option to edit LaTeX header in the settings form.
85 | - Bug fixes:
86 | - Replace hardcoded path to python executable with environment variable `PYTHON_EXE`.
87 | - Replace hardcoded path to Illustrator executable with environment variable `ILLUSTRATOR_PATH`.
88 | - Other:
89 | - Add information how to cite.
90 | - Forms and the plugin are now compiled in the same directory; also add more detailed build information.
91 | - LaTeX2AI can now also be installed in the default Illustrator plug-in directory.
92 | - Support Illustrator 2021.
93 | - **v0.0.1:** Initial release
94 |
--------------------------------------------------------------------------------
/doc/images/convert_icons.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 | # -----------------------------------------------------------------------------
3 | # MIT License
4 | #
5 | # Copyright (c) 2020-2025 Ivo Steinbrecher
6 | #
7 | # Permission is hereby granted, free of charge, to any person obtaining a copy
8 | # of this software and associated documentation files (the "Software"), to deal
9 | # in the Software without restriction, including without limitation the rights
10 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | # copies of the Software, and to permit persons to whom the Software is
12 | # furnished to do so, subject to the following conditions:
13 | #
14 | # The above copyright notice and this permission notice shall be included in
15 | # all copies or substantial portions of the Software.
16 | #
17 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | # SOFTWARE.
24 | # -----------------------------------------------------------------------------
25 |
26 |
27 | declare -a ARRAY=("tool_create" "tool_options" "tool_redo" "tool_save_as_pdf" "tool_testing")
28 |
29 | # Loop over the strings in the array
30 | for NAME in "${ARRAY[@]}"
31 | do
32 | qlmanage -t -s 32 -o . "../../resources/raw/LaTeX2AI_${NAME}_light@2x.svg"
33 | mv "LaTeX2AI_${NAME}_light@2x.svg.png" "${NAME}.png"
34 | done
35 |
--------------------------------------------------------------------------------
/doc/images/create_edit_ui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isteinbrecher/LaTeX2AI/57794702274dd356ba36dbfc5114cd2bded71099/doc/images/create_edit_ui.png
--------------------------------------------------------------------------------
/doc/images/macos_permission_error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isteinbrecher/LaTeX2AI/57794702274dd356ba36dbfc5114cd2bded71099/doc/images/macos_permission_error.png
--------------------------------------------------------------------------------
/doc/images/placement_baseline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isteinbrecher/LaTeX2AI/57794702274dd356ba36dbfc5114cd2bded71099/doc/images/placement_baseline.png
--------------------------------------------------------------------------------
/doc/images/placement_large.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isteinbrecher/LaTeX2AI/57794702274dd356ba36dbfc5114cd2bded71099/doc/images/placement_large.png
--------------------------------------------------------------------------------
/doc/images/placement_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isteinbrecher/LaTeX2AI/57794702274dd356ba36dbfc5114cd2bded71099/doc/images/placement_small.png
--------------------------------------------------------------------------------
/doc/images/tool_create.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isteinbrecher/LaTeX2AI/57794702274dd356ba36dbfc5114cd2bded71099/doc/images/tool_create.png
--------------------------------------------------------------------------------
/doc/images/tool_options.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isteinbrecher/LaTeX2AI/57794702274dd356ba36dbfc5114cd2bded71099/doc/images/tool_options.png
--------------------------------------------------------------------------------
/doc/images/tool_redo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isteinbrecher/LaTeX2AI/57794702274dd356ba36dbfc5114cd2bded71099/doc/images/tool_redo.png
--------------------------------------------------------------------------------
/doc/images/tool_save_as_pdf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isteinbrecher/LaTeX2AI/57794702274dd356ba36dbfc5114cd2bded71099/doc/images/tool_save_as_pdf.png
--------------------------------------------------------------------------------
/doc/images/tool_testing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isteinbrecher/LaTeX2AI/57794702274dd356ba36dbfc5114cd2bded71099/doc/images/tool_testing.png
--------------------------------------------------------------------------------
/doc/logo/create_logo.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 | # -----------------------------------------------------------------------------
3 | # MIT License
4 | #
5 | # Copyright (c) 2020-2025 Ivo Steinbrecher
6 | #
7 | # Permission is hereby granted, free of charge, to any person obtaining a copy
8 | # of this software and associated documentation files (the "Software"), to deal
9 | # in the Software without restriction, including without limitation the rights
10 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | # copies of the Software, and to permit persons to whom the Software is
12 | # furnished to do so, subject to the following conditions:
13 | #
14 | # The above copyright notice and this permission notice shall be included in
15 | # all copies or substantial portions of the Software.
16 | #
17 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | # SOFTWARE.
24 | # -----------------------------------------------------------------------------
25 |
26 | # Create the logo and icon pdf
27 | pdflatex logo_icon.tex
28 |
29 | # Convert the pdf into pngs
30 | # -r = [png pixel size] / [size in mm] / 10 / 2.54
31 | gs -dFirstPage=1 -dLastPage=1 -sDEVICE=pngalpha -dTextAlphaBits=4 -r2442 -o logo_black.png logo_icon.pdf
32 | gs -dFirstPage=2 -dLastPage=2 -sDEVICE=pngalpha -dTextAlphaBits=4 -r2442 -o logo_color.png logo_icon.pdf
33 | gs -dFirstPage=3 -dLastPage=3 -sDEVICE=pngalpha -dTextAlphaBits=4 -r2442 -o logo_square.png logo_icon.pdf
34 | gs -dFirstPage=4 -dLastPage=4 -sDEVICE=pngalpha -dTextAlphaBits=4 -r1250 -o icon_256.png logo_icon.pdf
35 | gs -dFirstPage=5 -dLastPage=5 -sDEVICE=pngalpha -dTextAlphaBits=4 -r2442 -o logo_square_bw.png logo_icon.pdf
36 |
37 | # Create the image placement
38 | pdflatex item_placement.tex
39 |
40 | # Convert the pdf into png
41 | gs -dFirstPage=1 -dLastPage=1 -sDEVICE=pngalpha -dTextAlphaBits=4 -r650 -o ../../ui/html/item_placement_light.png item_placement.pdf
42 | gs -dFirstPage=2 -dLastPage=2 -sDEVICE=pngalpha -dTextAlphaBits=4 -r650 -o ../../ui/html/item_placement_dark.png item_placement.pdf
43 |
--------------------------------------------------------------------------------
/doc/logo/icon_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isteinbrecher/LaTeX2AI/57794702274dd356ba36dbfc5114cd2bded71099/doc/logo/icon_256.png
--------------------------------------------------------------------------------
/doc/logo/item_placement.tex:
--------------------------------------------------------------------------------
1 | % -----------------------------------------------------------------------------
2 | % MIT License
3 | %
4 | % Copyright (c) 2020-2025 Ivo Steinbrecher
5 | %
6 | % Permission is hereby granted, free of charge, to any person obtaining a copy
7 | % of this software and associated documentation files (the "Software"), to deal
8 | % in the Software without restriction, including without limitation the rights
9 | % to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | % copies of the Software, and to permit persons to whom the Software is
11 | % furnished to do so, subject to the following conditions:
12 | %
13 | % The above copyright notice and this permission notice shall be included in
14 | % all copies or substantial portions of the Software.
15 | %
16 | % THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | % IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | % FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | % AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | % LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | % OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | % SOFTWARE.
23 | % -----------------------------------------------------------------------------
24 |
25 | \documentclass[multi=page,border=0.2pt]{standalone}
26 |
27 | \usepackage{tikz}
28 |
29 | \newcommand{\ysep}{0.2mm}
30 | \newcommand{\demotext}{afg}
31 |
32 | \begin{document}
33 | %
34 | \begin{page}%
35 | \begin{tikzpicture}[]
36 | \node [anchor=base west,inner sep=0pt] (A) {\large \demotext};
37 | \draw [red, dash pattern=on 1.5pt off 0.82pt] (A.base west) -- (A.base east);
38 | \draw [opacity=0]([yshift=-\ysep]A.south west) -- ([yshift=\ysep]A.north east);
39 | \end{tikzpicture}%
40 | \end{page}%
41 | %
42 | \begin{page}%
43 | \begin{tikzpicture}[]
44 | \node [anchor=base west,inner sep=0pt] (A) {\large \textcolor{lightgray}{\demotext}};
45 | \draw [red, dash pattern=on 1.5pt off 0.82pt] (A.base west) -- (A.base east);
46 | \draw [opacity=0]([yshift=-\ysep]A.south west) -- ([yshift=\ysep]A.north east);
47 | \end{tikzpicture}%
48 | \end{page}%
49 | %
50 | \end{document}
51 |
--------------------------------------------------------------------------------
/doc/logo/logo_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isteinbrecher/LaTeX2AI/57794702274dd356ba36dbfc5114cd2bded71099/doc/logo/logo_black.png
--------------------------------------------------------------------------------
/doc/logo/logo_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isteinbrecher/LaTeX2AI/57794702274dd356ba36dbfc5114cd2bded71099/doc/logo/logo_color.png
--------------------------------------------------------------------------------
/doc/logo/logo_icon.tex:
--------------------------------------------------------------------------------
1 | % -----------------------------------------------------------------------------
2 | % MIT License
3 | %
4 | % Copyright (c) 2020-2025 Ivo Steinbrecher
5 | %
6 | % Permission is hereby granted, free of charge, to any person obtaining a copy
7 | % of this software and associated documentation files (the "Software"), to deal
8 | % in the Software without restriction, including without limitation the rights
9 | % to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | % copies of the Software, and to permit persons to whom the Software is
11 | % furnished to do so, subject to the following conditions:
12 | %
13 | % The above copyright notice and this permission notice shall be included in
14 | % all copies or substantial portions of the Software.
15 | %
16 | % THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | % IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | % FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | % AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | % LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | % OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | % SOFTWARE.
23 | % -----------------------------------------------------------------------------
24 |
25 | \documentclass[multi,border=0mm]{standalone}
26 |
27 | \newenvironment{lta}{\ignorespaces}{\ignorespacesafterend}
28 | \standaloneenv{lta}
29 |
30 | \usepackage{sourcesanspro}
31 | \usepackage{tikz}
32 |
33 | \usepackage{xcolor}
34 | \definecolor{back}{cmyk}{0,0.5,1,0.85}
35 | \definecolor{yel}{cmyk}{0,0.5,1,0}
36 |
37 | % Full LaTeX2AI text
38 | \newcommand{\latextoai}{\LaTeX{}2\sffamily\bfseries{Ai}}
39 |
40 | % Half sizes for the icon
41 | \newcommand{\widthHalf}{23pt}
42 | \newcommand{\heightHalf}{7pt}
43 |
44 | % Half size for the square icons
45 | \newcommand{\sizeHalf}{7pt}
46 |
47 | \begin{document}
48 |
49 | % LaTeX2AI logo
50 | \begin{lta}
51 | \begin{tikzpicture}
52 | \node [anchor=base,inner sep=1pt](L) at (0pt,-3pt) {\textcolor{black}{\latextoai}};
53 | \end{tikzpicture}%
54 | \end{lta}
55 |
56 | % LaTeX2AI icon
57 | \begin{lta}
58 | \begin{tikzpicture}
59 | \draw [yel,fill=back,thick] (-\widthHalf,-\heightHalf) rectangle (\widthHalf,\heightHalf);
60 | \node [anchor=base,inner sep=0pt](L) at (0pt,-3pt) {\textcolor{yel}{\latextoai}};
61 | \end{tikzpicture}%
62 | \end{lta}
63 |
64 | % Large square icon
65 | \begin{lta}
66 | \begin{tikzpicture}
67 | \draw [yel,fill=back,thick] (-\sizeHalf,-\sizeHalf) rectangle (\sizeHalf,\sizeHalf);
68 | \node [anchor=base,inner sep=0pt](L) at (-3pt,-3pt) {\textcolor{yel}{$L$}};
69 | \node [anchor=base,inner sep=0pt] (two) at (-0.5pt,0pt) {\tiny\textcolor{yel}{2}};
70 | \node [anchor=base,inner sep=0pt] (A) at (3pt,-3pt) {\sffamily \bfseries \textcolor{yel}{A}};
71 | \end{tikzpicture}%
72 | \end{lta}
73 |
74 | % Small square icon
75 | \begin{lta}
76 | \begin{tikzpicture}
77 | \draw [yel,fill=back,thick] (-\sizeHalf,-\sizeHalf) rectangle (\sizeHalf,\sizeHalf);
78 | \node [anchor=base,inner sep=0pt](L) at (-3.25pt,-3pt) {\textcolor{yel}{\bfseries \textit{L}}};
79 | \node [anchor=base,inner sep=0pt] (A) at (3pt,-3pt) {\sffamily \bfseries \textcolor{yel}{A}};
80 | \end{tikzpicture}%
81 | \end{lta}
82 |
83 | % Black white large square icon
84 | \renewcommand{\sizeHalf}{6.5pt}
85 | \begin{lta}
86 | \begin{tikzpicture}
87 | \draw [opacity=0] (-\sizeHalf,-\sizeHalf) rectangle (\sizeHalf,\sizeHalf);
88 | \node [anchor=base,inner sep=0pt](L) at (-3.15pt,-3pt) {$L$};
89 | \node [anchor=base,inner sep=0pt] (two) at (-0.1pt,0.5pt) {\tiny 2};
90 | \node [anchor=base,inner sep=0pt] (A) at (3.15pt,-3pt) {\sffamily \bfseries A};
91 | \end{tikzpicture}%
92 | \end{lta}
93 |
94 | \end{document}
95 |
--------------------------------------------------------------------------------
/doc/logo/logo_square.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isteinbrecher/LaTeX2AI/57794702274dd356ba36dbfc5114cd2bded71099/doc/logo/logo_square.png
--------------------------------------------------------------------------------
/doc/logo/logo_square_bw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isteinbrecher/LaTeX2AI/57794702274dd356ba36dbfc5114cd2bded71099/doc/logo/logo_square_bw.png
--------------------------------------------------------------------------------
/resources/Mac/LaTeX2AI.r:
--------------------------------------------------------------------------------
1 | //========================================================================================
2 | //
3 | // $File$
4 | //
5 | // $Revision$
6 | //
7 | // Copyright 1987 Adobe Systems Incorporated. All rights reserved.
8 | //
9 | // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance
10 | // with the terms of the Adobe license agreement accompanying it. If you have received
11 | // this file from a source other than Adobe, then your use, modification, or
12 | // distribution of it requires the prior written permission of Adobe.
13 | //
14 | //========================================================================================
15 |
16 | /*
17 | * Two Resource files are required for Mac one for the standard definition resources and one
18 | * for HiDPI resources. The resource entries for both are required regardless of whether
19 | * you will be providing HiDPI icons for your tools. If you do not provide the two resource
20 | * files you will receive [CANT] Errors on startup.
21 | *
22 | * The resource files should follow the naming convention:
23 | * PluginName.r -> eg. Annotator.r - for standard image definitions
24 | * PluginName2x.r -> eg. Annotator2x.r - for HiDPI image definitions
25 | *
26 | *
27 | * Changes in resource handling:
28 | * In 10.8 SDK, Apple deprecated all .r/.rsrc resource reading APIs. Now all resources files
29 | * will need to be copied to /Contents/Resources// as post build step.
30 | *
31 | * In this sample there are 9 resources used.
32 | *
33 | * The resources are added in the Run Script build phase of the target. Each resource is added
34 | * to a folder named after its extension.
35 | * e.g All png folders should be copied to /Contents/Resources/png/.
36 | *
37 | * IDToFile.txt
38 | * --------------
39 | * Take a look in IDToFile.txt for how to define resources.
40 | */
41 |
42 | #include
43 |
--------------------------------------------------------------------------------
/resources/Mac/LaTeX2AI2x.r:
--------------------------------------------------------------------------------
1 | //========================================================================================
2 | //
3 | // $File: //ai/mainline/devtech/sdk/public/samplecode/MultiArrowTool/Resources/MultiArrowTool.r $
4 | //
5 | // $Revision: #4 $
6 | //
7 | // Copyright 1987 Adobe Systems Incorporated. All rights reserved.
8 | //
9 | // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance
10 | // with the terms of the Adobe license agreement accompanying it. If you have received
11 | // this file from a source other than Adobe, then your use, modification, or
12 | // distribution of it requires the prior written permission of Adobe.
13 | //
14 | //========================================================================================
15 |
16 | /*
17 | * You should copy your HiDPI images as post build step. See MultiArrowTool.r for more details.
18 | */
19 |
--------------------------------------------------------------------------------
/resources/Win/LaTeX2AI.rc:
--------------------------------------------------------------------------------
1 | //========================================================================================
2 | //
3 | // $File$
4 | //
5 | // $Revision$
6 | //
7 | // Copyright 1987 Adobe Systems Incorporated. All rights reserved.
8 | //
9 | // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance
10 | // with the terms of the Adobe license agreement accompanying it. If you have received
11 | // this file from a source other than Adobe, then your use, modification, or
12 | // distribution of it requires the prior written permission of Adobe.
13 | //
14 | //========================================================================================
15 |
16 | //Microsoft Developer Studio generated resource script.
17 | //
18 | #include "resource.h"
19 |
20 | #define APSTUDIO_READONLY_SYMBOLS
21 | /////////////////////////////////////////////////////////////////////////////
22 | //
23 | // Generated from the TEXTINCLUDE 2 resource.
24 | //
25 | #include "l2a_constants.h"
26 | #include "windows.h"
27 |
28 | /////////////////////////////////////////////////////////////////////////////
29 | #undef APSTUDIO_READONLY_SYMBOLS
30 |
31 | /////////////////////////////////////////////////////////////////////////////
32 | // English (U.S.) resources
33 |
34 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
35 | #ifdef _WIN32
36 | LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
37 | #pragma code_page(1252)
38 | #endif //_WIN32
39 |
40 | #define kMySDKPluginName L2A_PLUGIN_NAME
41 | #define PIPL_PLUGIN_NAME kMySDKPluginName
42 |
43 | /////////////////////////////////////////////////////////////////////////////
44 | // VersionInfo
45 | //
46 |
47 | #include "VersionInfo.rc"
48 |
49 | /////////////////////////////////////////////////////////////////////////////
50 | //
51 | // PIPL
52 | //
53 |
54 | plugin pipl "plugin.pipl"
55 |
56 | #ifdef APSTUDIO_INVOKED
57 | /////////////////////////////////////////////////////////////////////////////
58 | //
59 | // TEXTINCLUDE
60 | //
61 |
62 | 1 TEXTINCLUDE DISCARDABLE
63 | BEGIN
64 | "resource.h\0"
65 | END
66 |
67 | 2 TEXTINCLUDE DISCARDABLE
68 | BEGIN
69 | "#include ""l2a_constants.h""\r\n"
70 | "#include ""windows.h""\r\n"
71 | END
72 |
73 | 3 TEXTINCLUDE DISCARDABLE
74 | BEGIN
75 | "\r\n"
76 | "\0"
77 | END
78 |
79 | #endif // APSTUDIO_INVOKED
80 |
81 | #endif // English (U.S.) resources
82 | /////////////////////////////////////////////////////////////////////////////
83 |
84 | IDToFile txt IDToFile.txt
85 |
86 | LaTeX2AI_tool_create_dark_at_2x svg "LaTeX2AI_tool_create_dark@2x.svg"
87 | LaTeX2AI_tool_create_light_at_2x svg "LaTeX2AI_tool_create_light@2x.svg"
88 | LaTeX2AI_tool_redo_dark_at_2x svg "LaTeX2AI_tool_redo_dark@2x.svg"
89 | LaTeX2AI_tool_redo_light_at_2x svg "LaTeX2AI_tool_redo_light@2x.svg"
90 | LaTeX2AI_tool_options_dark_at_2x svg "LaTeX2AI_tool_options_dark@2x.svg"
91 | LaTeX2AI_tool_options_light_at_2x svg "LaTeX2AI_tool_options_light@2x.svg"
92 | LaTeX2AI_tool_save_as_pdf_dark_at_2x svg "LaTeX2AI_tool_save_as_pdf_dark@2x.svg"
93 | LaTeX2AI_tool_save_as_pdf_light_at_2x svg "LaTeX2AI_tool_save_as_pdf_light@2x.svg"
94 | LaTeX2AI_tool_testing_dark_at_2x svg "LaTeX2AI_tool_testing_dark@2x.svg"
95 | LaTeX2AI_tool_testing_light_at_2x svg "LaTeX2AI_tool_testing_light@2x.svg"
96 |
97 | LaTeX2AI_cursor_create_at_2x svg "LaTeX2AI_cursor_create@2x.svg"
98 | LaTeX2AI_cursor_edit_at_2x svg "LaTeX2AI_cursor_edit@2x.svg"
99 | LaTeX2AI_cursor_locked_at_2x svg "LaTeX2AI_cursor_locked@2x.svg"
100 |
--------------------------------------------------------------------------------
/resources/Win/Resource.h:
--------------------------------------------------------------------------------
1 | //{{NO_DEPENDENCIES}}
2 | // Microsoft Developer Studio generated include file.
3 | // Used by plugin.rc
4 | //
5 | #define kToolStrings 16100
6 |
7 | // Next default values for new objects
8 | //
9 | #ifdef APSTUDIO_INVOKED
10 | #ifndef APSTUDIO_READONLY_SYMBOLS
11 | #define _APS_NEXT_RESOURCE_VALUE 113
12 | #define _APS_NEXT_COMMAND_VALUE 40001
13 | #define _APS_NEXT_CONTROL_VALUE 1000
14 | #define _APS_NEXT_SYMED_VALUE 101
15 | #endif
16 | #endif
17 |
--------------------------------------------------------------------------------
/resources/raw/IDToFile.txt:
--------------------------------------------------------------------------------
1 | 19000.svg LaTeX2AI_tool_create_dark@2x.svg
2 | 19001.svg LaTeX2AI_tool_create_light@2x.svg
3 | 19002.svg LaTeX2AI_tool_redo_dark@2x.svg
4 | 19003.svg LaTeX2AI_tool_redo_light@2x.svg
5 | 19004.svg LaTeX2AI_tool_options_dark@2x.svg
6 | 19005.svg LaTeX2AI_tool_options_light@2x.svg
7 | 19006.svg LaTeX2AI_tool_save_as_pdf_dark@2x.svg
8 | 19007.svg LaTeX2AI_tool_save_as_pdf_light@2x.svg
9 | 19008.svg LaTeX2AI_tool_testing_dark@2x.svg
10 | 19009.svg LaTeX2AI_tool_testing_light@2x.svg
11 | 19100.svg LaTeX2AI_cursor_create@2x.svg
12 | 19101.svg LaTeX2AI_cursor_locked@2x.svg
13 | 19102.svg LaTeX2AI_cursor_edit@2x.svg
14 |
--------------------------------------------------------------------------------
/resources/raw/LaTeX2AI_cursor_create@2x.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
44 |
--------------------------------------------------------------------------------
/resources/raw/LaTeX2AI_cursor_edit@2x.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
30 |
--------------------------------------------------------------------------------
/resources/raw/LaTeX2AI_cursor_locked@2x.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
42 |
--------------------------------------------------------------------------------
/resources/raw/LaTeX2AI_tool_create_dark@2x.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
23 |
--------------------------------------------------------------------------------
/resources/raw/LaTeX2AI_tool_create_light@2x.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
32 |
--------------------------------------------------------------------------------
/resources/raw/LaTeX2AI_tool_options_dark@2x.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
36 |
--------------------------------------------------------------------------------
/resources/raw/LaTeX2AI_tool_options_light@2x.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
36 |
--------------------------------------------------------------------------------
/resources/raw/LaTeX2AI_tool_redo_dark@2x.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
31 |
--------------------------------------------------------------------------------
/resources/raw/LaTeX2AI_tool_redo_light@2x.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
31 |
--------------------------------------------------------------------------------
/resources/raw/LaTeX2AI_tool_save_as_pdf_dark@2x.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
33 |
--------------------------------------------------------------------------------
/resources/raw/LaTeX2AI_tool_save_as_pdf_light@2x.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
33 |
--------------------------------------------------------------------------------
/resources/raw/LaTeX2AI_tool_testing_dark@2x.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
22 |
--------------------------------------------------------------------------------
/resources/raw/LaTeX2AI_tool_testing_light@2x.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
22 |
--------------------------------------------------------------------------------
/scripts/__init__.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | # -----------------------------------------------------------------------------
3 | # MIT License
4 | #
5 | # Copyright (c) 2020-2025 Ivo Steinbrecher
6 | #
7 | # Permission is hereby granted, free of charge, to any person obtaining a copy
8 | # of this software and associated documentation files (the "Software"), to deal
9 | # in the Software without restriction, including without limitation the rights
10 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | # copies of the Software, and to permit persons to whom the Software is
12 | # furnished to do so, subject to the following conditions:
13 | #
14 | # The above copyright notice and this permission notice shall be included in
15 | # all copies or substantial portions of the Software.
16 | #
17 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | # SOFTWARE.
24 | # -----------------------------------------------------------------------------
25 |
--------------------------------------------------------------------------------
/scripts/base.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | # -----------------------------------------------------------------------------
3 | # MIT License
4 | #
5 | # Copyright (c) 2020-2025 Ivo Steinbrecher
6 | #
7 | # Permission is hereby granted, free of charge, to any person obtaining a copy
8 | # of this software and associated documentation files (the "Software"), to deal
9 | # in the Software without restriction, including without limitation the rights
10 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | # copies of the Software, and to permit persons to whom the Software is
12 | # furnished to do so, subject to the following conditions:
13 | #
14 | # The above copyright notice and this permission notice shall be included in
15 | # all copies or substantial portions of the Software.
16 | #
17 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | # SOFTWARE.
24 | # -----------------------------------------------------------------------------
25 |
26 | """
27 | Convert integers to different bases and show the ascii equivalent.
28 | """
29 |
30 |
31 | def number_to_digits(number, base):
32 | """Convert a positive number to its digit representation in base."""
33 | digits = []
34 | while number > 0:
35 | digits.insert(0, number % base)
36 | number = number // base
37 | return digits
38 |
39 |
40 | def number_to_string(number):
41 | """Print the ascii characters for the given digits."""
42 | print("".join([chr(i) for i in number_to_digits(number, 256)]))
43 |
44 |
45 | def hex_to_string(hex_code):
46 | """Print the string represented by the hex code."""
47 | print(bytearray.fromhex(hex_code).decode())
48 |
--------------------------------------------------------------------------------
/scripts/check_license.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | # -----------------------------------------------------------------------------
3 | # MIT License
4 | #
5 | # Copyright (c) 2020-2025 Ivo Steinbrecher
6 | #
7 | # Permission is hereby granted, free of charge, to any person obtaining a copy
8 | # of this software and associated documentation files (the "Software"), to deal
9 | # in the Software without restriction, including without limitation the rights
10 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | # copies of the Software, and to permit persons to whom the Software is
12 | # furnished to do so, subject to the following conditions:
13 | #
14 | # The above copyright notice and this permission notice shall be included in
15 | # all copies or substantial portions of the Software.
16 | #
17 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | # SOFTWARE.
24 | # -----------------------------------------------------------------------------
25 |
26 | """
27 | Check if the source files in the repository have the correct header.
28 | """
29 |
30 | # Import python modules.
31 | import os
32 | import subprocess
33 |
34 |
35 | def get_repository_dir():
36 | """
37 | Get the root directory of this repository.
38 | """
39 |
40 | script_path = os.path.realpath(__file__)
41 | root_dir = os.path.dirname(os.path.dirname(script_path))
42 | return root_dir
43 |
44 |
45 | def get_license_text():
46 | """
47 | Return the license text as a string.
48 | """
49 |
50 | license_path = os.path.join(get_repository_dir(), "LICENSE")
51 | with open(license_path) as license_file:
52 | return license_file.read().strip()
53 |
54 |
55 | def get_all_source_files():
56 | """
57 | Get all source files that should be checked for license headers.
58 | """
59 |
60 | # Get the files in the git repository.
61 | repo_dir = get_repository_dir()
62 | process = subprocess.Popen(
63 | ["git", "ls-files"], stdout=subprocess.PIPE, cwd=repo_dir
64 | )
65 | out, _err = process.communicate()
66 | files = out.decode("UTF-8").strip().split("\n")
67 |
68 | source_line_endings = [".py", ".cs", ".cpp", ".h", ".bat", ".sh", ".tex"]
69 | source_ending_types = {
70 | ".py": "py",
71 | ".cs": "c",
72 | ".cpp": "c",
73 | ".h": "c",
74 | ".bat": "bat",
75 | ".sh": "sh",
76 | ".tex": "tex",
77 | }
78 | source_files = {"py": [], "c": [], "bat": [], "sh": [], "tex": []}
79 |
80 | skip_folders = ["scripts/pipl"]
81 |
82 | for file in files:
83 | extension = os.path.splitext(file)[1]
84 | for skip_folder in skip_folders:
85 | if file.startswith(skip_folder):
86 | break
87 | else:
88 | if extension not in source_line_endings:
89 | pass
90 | else:
91 | source_files[source_ending_types[extension]].append(
92 | os.path.join(repo_dir, file)
93 | )
94 | return source_files
95 |
96 |
97 | def license_to_source(license_text, source_type):
98 | """
99 | Convert the license text to a text that can be written to source code.
100 | """
101 |
102 | header = None
103 | start_line = "-" * 77
104 | if source_type == "py":
105 | header = "# -*- coding: utf-8 -*-"
106 | comment = "#"
107 | elif source_type == "c" or source_type == "js":
108 | comment = "//"
109 | elif source_type == "bat":
110 | comment = "@REM"
111 | elif source_type == "sh":
112 | header = "#! /bin/bash"
113 | comment = "#"
114 | elif source_type == "tex":
115 | comment = "%"
116 | else:
117 | raise ValueError("Wrong extension!")
118 |
119 | source = []
120 | if header is not None:
121 | source.append(header)
122 | source.append(comment + " " + start_line)
123 | for line in license_text.split("\n"):
124 | if len(line) > 0:
125 | source.append(comment + " " + line)
126 | else:
127 | source.append(comment + line)
128 | source.append(comment + " " + start_line)
129 | return "\n".join(source)
130 |
131 |
132 | def check_license():
133 | """
134 | Check the license for all source files.
135 | """
136 |
137 | license_text = get_license_text()
138 | source_files = get_all_source_files()
139 |
140 | skip_list = ["resources/Win/Resource.h"]
141 |
142 | for key in source_files:
143 | header = license_to_source(license_text, key)
144 | for file in source_files[key]:
145 | for skip in skip_list:
146 | if file.endswith(skip):
147 | break
148 | else:
149 | with open(file) as source_file:
150 | source_text = source_file.read()
151 | if not source_text.startswith(header):
152 | print("Wrong header in: {}".format(file))
153 |
154 |
155 | if __name__ == "__main__":
156 | """
157 | Execution part of script.
158 | """
159 |
160 | check_license()
161 |
--------------------------------------------------------------------------------
/scripts/compile_mac.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 | # -----------------------------------------------------------------------------
3 | # MIT License
4 | #
5 | # Copyright (c) 2020-2025 Ivo Steinbrecher
6 | #
7 | # Permission is hereby granted, free of charge, to any person obtaining a copy
8 | # of this software and associated documentation files (the "Software"), to deal
9 | # in the Software without restriction, including without limitation the rights
10 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | # copies of the Software, and to permit persons to whom the Software is
12 | # furnished to do so, subject to the following conditions:
13 | #
14 | # The above copyright notice and this permission notice shall be included in
15 | # all copies or substantial portions of the Software.
16 | #
17 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | # SOFTWARE.
24 | # -----------------------------------------------------------------------------
25 |
26 | # Get the path of the current script
27 | SCRIPT_DIR="$(dirname "$0")"
28 |
29 | # Remove an existing version
30 | BUILD_PATH=${SCRIPT_DIR}/../../output/mac/${L2A_BUILD_TYPE}/LaTeX2AI.aip
31 | rm -rf ${BUILD_PATH}
32 |
33 | # Build the version of LaTeX2AI
34 | xcodebuild -project ${SCRIPT_DIR}/../LaTeX2AI.xcodeproj -scheme "LaTeX2AI" -configuration "${L2A_BUILD_TYPE}" -destination "generic/platform=macOS" clean build
35 |
36 | # Move to the correct folder
37 | FINAL_PATH_DIR=${SCRIPT_DIR}/release_files/macOS
38 | mkdir -p ${FINAL_PATH_DIR}
39 | FINAL_PATH=${FINAL_PATH_DIR}/LaTeX2AI_${L2A_GIT_IDENTIFIER}_${L2A_BUILD_TYPE}.aip
40 | rm -rf ${FINAL_PATH}
41 | mv ${BUILD_PATH} ${FINAL_PATH}
42 |
--------------------------------------------------------------------------------
/scripts/compile_solution.bat:
--------------------------------------------------------------------------------
1 | @REM -----------------------------------------------------------------------------
2 | @REM MIT License
3 | @REM
4 | @REM Copyright (c) 2020-2025 Ivo Steinbrecher
5 | @REM
6 | @REM Permission is hereby granted, free of charge, to any person obtaining a copy
7 | @REM of this software and associated documentation files (the "Software"), to deal
8 | @REM in the Software without restriction, including without limitation the rights
9 | @REM to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | @REM copies of the Software, and to permit persons to whom the Software is
11 | @REM furnished to do so, subject to the following conditions:
12 | @REM
13 | @REM The above copyright notice and this permission notice shall be included in
14 | @REM all copies or substantial portions of the Software.
15 | @REM
16 | @REM THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | @REM IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | @REM FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | @REM AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | @REM LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | @REM OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | @REM SOFTWARE.
23 | @REM -----------------------------------------------------------------------------
24 |
25 | @REM Load the Visual Studio developer command prompt
26 | call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
27 |
28 | @REM Compile the LaTeX2AI solutions
29 | msbuild "..\LaTeX2AI.sln" /nologo /t:rebuild /p:Configuration=%L2A_build_type% /p:Platform=x64
30 |
--------------------------------------------------------------------------------
/scripts/pipl/README.md:
--------------------------------------------------------------------------------
1 | # PIPL creation
2 |
3 | The files in this folder are directly taken from the Adobe SDK and adapted to work with `python3`.
4 |
--------------------------------------------------------------------------------
/scripts/pipl/create_pipl.py:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (c) 2018 Adobe Systems, Inc.
3 | # All rights reserved.
4 | #
5 | # FILENAME: create_pipl.py
6 | #
7 | # FUNCTION: create pipl file for given plugin pipl info.
8 | #
9 | # SYNTAX: python create_pipl.py -input '[{"name" : "plugin_name1", "entry_point" : "entry_point1"}, {"name" : "plugin_name2", "entry_point" : "entry_point2"}, ...] -output "pipl_name.pipl"
10 | #
11 | # PARAMETERS: N/A
12 | #
13 | # EXAMPLE: see Help for more detailed info
14 | #
15 | # AUTHOR : amisriva
16 | #
17 | ##################################################################################
18 |
19 | import sys
20 | import os
21 | import json
22 | import argparse
23 |
24 | from pipl_gen import pipl
25 | from pipl_gen import generate_multi_pipl_bin
26 |
27 | def parse_argument():
28 | parser = argparse.ArgumentParser(description='Creates a PIPL file from given pipl info at given path')
29 | parser.add_argument('-input', help='Input json list of pipl dictionaries, with keys having name and entry_point', nargs = '?', default = [], dest = 'input_list')
30 | parser.add_argument('-output', help='file path of output pipl', dest = "output_file", nargs = 1)
31 | return parser.parse_args()
32 |
33 | def main(args):
34 | args = parse_argument()
35 | pipl_obj_list = []
36 | if len(args.input_list):
37 | list_pipl = json.loads(args.input_list)
38 | for pipl_data in list_pipl:
39 | obj = pipl()
40 | if 'name' in pipl_data and len(pipl_data['name']):
41 | obj.add_plugin_name(str(pipl_data['name']))
42 | if 'entry_point' in pipl_data and len(pipl_data['entry_point']):
43 | obj.add_plugin_entry(str(pipl_data['entry_point']))
44 | if 'stsp' in pipl_data and pipl_data['stsp'] is True:
45 | obj.add_plugin_stsp(1)
46 |
47 | pipl_obj_list += [obj]
48 | else:
49 | obj = pipl()
50 | pipl_obj_list += [obj]
51 | generate_multi_pipl_bin(pipl_obj_list, "plugin.pipl")
52 |
53 |
54 | if __name__ == "__main__":
55 | main(sys.argv[1:])
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/scripts/pipl/pipl_gen/__init__.py:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (c) 2018 Adobe Systems, Inc.
3 | # All rights reserved.
4 | #
5 | # FILENAME: pipl_gen.py
6 | #
7 | # FUNCTION: pipl generator
8 | #
9 | # SYNTAX: N/A
10 | #
11 | # PARAMETERS: N/A
12 | #
13 | # EXAMPLE: N/A
14 | #
15 | # AUTHOR : amisriva
16 | #
17 | ##################################################################################
18 | from .pipl_gen import pipl
19 | from .pipl_gen import generate_multi_pipl_bin
20 |
--------------------------------------------------------------------------------
/scripts/pipl/pipl_gen/template_plugin.json:
--------------------------------------------------------------------------------
1 | {
2 | "kind" : {
3 | "vendor": "ADBE",
4 | "value":"SPEA",
5 | "comment":"Only change vendor property, do not change value property"
6 | },
7 | "ivrs" : {
8 | "vendor": "ADBE",
9 | "value": 2,
10 | "comment":"Only change vendor property, do not change value property"
11 | },
12 | "mac" : {
13 | "mi32" : {
14 | "vendor": "ADBE",
15 | "value": "",
16 | "comment": "MacOnly, Change Vendor, set value to your plugin's entry point name, or pass name in API"
17 | }
18 | },
19 | "win" : {
20 | "wx86" : {
21 | "vendor": "ADBE",
22 | "value": "",
23 | "comment": "WinOnly, Change Vendor, set value to your plugin's entry point name, or pass name in API"
24 | }
25 | },
26 | "pinm" : {
27 | "vendor": "ADBE",
28 | "value":"Sample Plugin",
29 | "comment":"Change Vendor, change Sample Plugin to your plugin name, or pass name in API"
30 | },
31 | "StsP" : {
32 | "vendor": "ADBE"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/scripts/release_zip_readme.md:
--------------------------------------------------------------------------------
1 | # LaTeX2AI
2 |
3 | For LaTeX2AI installation instructions have a look at https://github.com/isteinbrecher/latex2ai
4 |
--------------------------------------------------------------------------------
/scripts/ui_signing/SET_KEY_EXAMPLE.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 | # -----------------------------------------------------------------------------
3 | # MIT License
4 | #
5 | # Copyright (c) 2020-2025 Ivo Steinbrecher
6 | #
7 | # Permission is hereby granted, free of charge, to any person obtaining a copy
8 | # of this software and associated documentation files (the "Software"), to deal
9 | # in the Software without restriction, including without limitation the rights
10 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | # copies of the Software, and to permit persons to whom the Software is
12 | # furnished to do so, subject to the following conditions:
13 | #
14 | # The above copyright notice and this permission notice shall be included in
15 | # all copies or substantial portions of the Software.
16 | #
17 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | # SOFTWARE.
24 | # -----------------------------------------------------------------------------
25 |
26 | export LATEX2AI_CERTIFICATE_PASSWORD="abcdefg1234"
27 |
--------------------------------------------------------------------------------
/scripts/ui_signing/ZXPSignCmd-64bit:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isteinbrecher/LaTeX2AI/57794702274dd356ba36dbfc5114cd2bded71099/scripts/ui_signing/ZXPSignCmd-64bit
--------------------------------------------------------------------------------
/scripts/ui_signing/sign_ui_folder.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 | # -----------------------------------------------------------------------------
3 | # MIT License
4 | #
5 | # Copyright (c) 2020-2025 Ivo Steinbrecher
6 | #
7 | # Permission is hereby granted, free of charge, to any person obtaining a copy
8 | # of this software and associated documentation files (the "Software"), to deal
9 | # in the Software without restriction, including without limitation the rights
10 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | # copies of the Software, and to permit persons to whom the Software is
12 | # furnished to do so, subject to the following conditions:
13 | #
14 | # The above copyright notice and this permission notice shall be included in
15 | # all copies or substantial portions of the Software.
16 | #
17 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | # SOFTWARE.
24 | # -----------------------------------------------------------------------------
25 |
26 | # Get the path of the current script
27 | SCRIPT_DIR="$(dirname "$0")"
28 |
29 | # Set the key for the certificate
30 | . ${SCRIPT_DIR}/SET_KEY.sh
31 |
32 | # Remove the packed zxp file if it exists
33 | ZXP_FILE=${SCRIPT_DIR}/latex2ai_ui.zxp
34 | rm -f $ZXP_FILE
35 |
36 | # Create the signed zxp file
37 | ${SCRIPT_DIR}/ZXPSignCmd-64bit -sign ${SCRIPT_DIR}/../../ui $ZXP_FILE ${SCRIPT_DIR}/latex2ai_certificate.p12 $LATEX2AI_CERTIFICATE_PASSWORD -tsa http://timestamp.digicert.com
38 |
39 | # Unzip to folder
40 | SIGNED_UI_FOLDER=${SCRIPT_DIR}/../release_files/com.isteinbrecher.latex2ai.${L2A_GIT_IDENTIFIER}
41 | rm -rf $SIGNED_UI_FOLDER
42 | mkdir $SIGNED_UI_FOLDER
43 | unzip $ZXP_FILE -d $SIGNED_UI_FOLDER
44 | rm -f $ZXP_FILE
45 |
--------------------------------------------------------------------------------
/src/l2a_annotator.h:
--------------------------------------------------------------------------------
1 | // -----------------------------------------------------------------------------
2 | // MIT License
3 | //
4 | // Copyright (c) 2020-2025 Ivo Steinbrecher
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | // SOFTWARE.
23 | // -----------------------------------------------------------------------------
24 |
25 | /**
26 | * \brief Object that handles everython annotator related.
27 | */
28 |
29 |
30 | #ifndef L2A_ANNOTATOR_H_
31 | #define L2A_ANNOTATOR_H_
32 |
33 |
34 | #include "l2a_suites.h"
35 |
36 | #include