diff --git a/README.latex b/README.latex new file mode 100644 index 0000000..136030a --- /dev/null +++ b/README.latex @@ -0,0 +1,378 @@ +\hypertarget{panconverter}{% +\section{PanConverter}\label{panconverter}} + +A cross-platform Markdown editor and converter powered by Pandoc. + +\begin{figure} +\centering +\includegraphics{assets/icon.png} +\caption{PanConverter} +\end{figure} + +\hypertarget{features}{% +\subsection{Features}\label{features}} + +\hypertarget{advanced-markdown-editor}{% +\subsubsection{✨ Advanced Markdown +Editor}\label{advanced-markdown-editor}} + +\begin{itemize} +\tightlist +\item + 🗂️ \textbf{Tabbed Interface} - Work with multiple files simultaneously + in separate tabs +\item + 📝 \textbf{Rich Text Editor} - Full-featured editor with syntax + highlighting and comprehensive toolbar +\item + 🔍 \textbf{Find \& Replace} - Powerful search and replace with match + highlighting and navigation +\item + 🔢 \textbf{Line Numbers} - Toggle line numbers for easier code editing + and navigation +\item + ↩️ \textbf{Smart Auto-Indentation} - Automatic list continuation and + intelligent indentation +\item + ⏪ \textbf{Undo/Redo} - Full undo/redo support with keyboard shortcuts +\item + ⌨️ \textbf{Advanced Shortcuts} - Tab indentation, line selection, and + smart text formatting +\item + 📂 \textbf{File Association Support} - Open markdown files directly + from file manager +\end{itemize} + +\hypertarget{themes-interface}{% +\subsubsection{🎨 Themes \& Interface}\label{themes-interface}} + +\begin{itemize} +\tightlist +\item + 👁️ \textbf{Live Preview} - See your markdown rendered in real-time + with synchronized scrolling +\item + 🎨 \textbf{Multiple Themes} - Choose from Light, Dark, Solarized, + Monokai, or GitHub themes +\item + 💾 \textbf{Auto-Save} - Never lose your work with automatic saving + every 30 seconds +\end{itemize} + +\hypertarget{export-conversion}{% +\subsubsection{📤 Export \& Conversion}\label{export-conversion}} + +\begin{itemize} +\tightlist +\item + 📄 \textbf{Enhanced PDF Export} - Robust PDF generation with multiple + LaTeX engine fallbacks (XeLaTeX, PDFLaTeX, wkhtmltopdf) +\item + 📄 \textbf{Document Export} - Convert to HTML, DOCX, LaTeX, RTF, ODT, + EPUB, PowerPoint (PPTX), and OpenDocument Presentation (ODP) +\item + 📊 \textbf{Spreadsheet Export} - Export markdown tables to Excel + (XLSX/XLS) and OpenDocument Spreadsheet (ODS) formats +\item + 📥 \textbf{Document Import} - Import DOCX, ODT, RTF, HTML, PDF, and + presentation files to markdown +\item + 📋 \textbf{Table Creation Helper} - Built-in table generator for easy + markdown table creation +\end{itemize} + +\hypertarget{platform-support}{% +\subsubsection{🖥️ Platform Support}\label{platform-support}} + +\begin{itemize} +\tightlist +\item + \textbf{Cross-Platform} - Works seamlessly on Windows, macOS, and + Linux +\end{itemize} + +\hypertarget{installation}{% +\subsection{Installation}\label{installation}} + +\hypertarget{prerequisites}{% +\subsubsection{Prerequisites}\label{prerequisites}} + +\begin{itemize} +\tightlist +\item + \href{https://pandoc.org/installing.html}{Pandoc} must be installed + for export functionality + + \begin{itemize} + \tightlist + \item + \textbf{Ubuntu/Debian}: \texttt{sudo\ apt-get\ install\ pandoc} + \item + \textbf{macOS}: \texttt{brew\ install\ pandoc} + \item + \textbf{Windows}: Download installer from Pandoc website + \end{itemize} +\end{itemize} + +\hypertarget{pdf-export-requirements}{% +\subsubsection{PDF Export Requirements}\label{pdf-export-requirements}} + +For optimal PDF export, install a LaTeX engine (recommended): - +\textbf{Ubuntu/Debian}: +\texttt{sudo\ apt-get\ install\ texlive-xetex\ texlive-latex-base} - +\textbf{macOS}: \texttt{brew\ install\ -\/-cask\ mactex} - +\textbf{Windows}: Install MiKTeX or TeX Live - \textbf{Alternative}: +\texttt{sudo\ apt-get\ install\ wkhtmltopdf} (fallback option) + +\hypertarget{download}{% +\subsubsection{Download}\label{download}} + +Download the latest release for your platform from the +\href{https://github.com/amitwh/pan-converter/releases}{Releases} page. + +\hypertarget{linux}{% +\paragraph{Linux}\label{linux}} + +\begin{itemize} +\tightlist +\item + \textbf{AppImage}: \texttt{PanConverter-1.3.1.AppImage} (universal, + may require \texttt{-\/-no-sandbox} flag) +\item + \textbf{Debian Package}: \texttt{pan-converter\_1.3.1\_amd64.deb} +\item + \textbf{Snap Package}: \texttt{pan-converter\_1.3.1\_amd64.snap} +\end{itemize} + +\hypertarget{install-from-source}{% +\subsubsection{Install from Source}\label{install-from-source}} + +\begin{Shaded} +\begin{Highlighting}[] +\FunctionTok{git}\NormalTok{ clone https://github.com/amitwh/pan{-}converter.git} +\BuiltInTok{cd}\NormalTok{ pan{-}converter} +\ExtensionTok{npm}\NormalTok{ install} +\ExtensionTok{npm}\NormalTok{ start} +\end{Highlighting} +\end{Shaded} + +\hypertarget{usage}{% +\subsection{Usage}\label{usage}} + +\hypertarget{basic-workflow}{% +\subsubsection{Basic Workflow}\label{basic-workflow}} + +\begin{enumerate} +\def\labelenumi{\arabic{enumi}.} +\tightlist +\item + \textbf{Write} - Use the editor to write your Markdown content +\item + \textbf{Preview} - Toggle the preview pane to see rendered output +\item + \textbf{Theme} - Choose your preferred theme from the View menu +\item + \textbf{Export} - Export your document to various formats +\end{enumerate} + +\hypertarget{export-options}{% +\subsubsection{Export Options}\label{export-options}} + +\begin{itemize} +\tightlist +\item + \textbf{Documents}: HTML, PDF, DOCX, LaTeX, RTF, ODT, EPUB +\item + \textbf{Presentations}: PowerPoint (PPTX), OpenDocument Presentation + (ODP) +\item + \textbf{Spreadsheets}: Excel (XLSX/XLS), OpenDocument Spreadsheet + (ODS) +\end{itemize} + +\hypertarget{import-conversion}{% +\subsubsection{Import \& Conversion}\label{import-conversion}} + +\begin{itemize} +\tightlist +\item + \textbf{Import Documents}: Convert DOCX, ODT, RTF, HTML, PDF, and + presentation files to Markdown +\item + \textbf{Cross-Format Conversion}: Convert current file between + multiple formats +\item + \textbf{Smart Presentation Handling}: Automatic slide-level formatting + for PPTX/ODP exports +\end{itemize} + +\hypertarget{table-creation}{% +\subsubsection{Table Creation}\label{table-creation}} + +\begin{itemize} +\tightlist +\item + Click the table button in the toolbar +\item + Specify number of rows and columns +\item + Automatically generates properly formatted Markdown tables +\end{itemize} + +\hypertarget{keyboard-shortcuts}{% +\subsection{Keyboard Shortcuts}\label{keyboard-shortcuts}} + +\hypertarget{file-operations}{% +\subsubsection{File Operations}\label{file-operations}} + +\begin{itemize} +\tightlist +\item + \texttt{Ctrl/Cmd\ +\ N} - New file/tab +\item + \texttt{Ctrl/Cmd\ +\ T} - New tab +\item + \texttt{Ctrl/Cmd\ +\ W} - Close current tab +\item + \texttt{Ctrl/Cmd\ +\ Tab} - Switch to next tab +\item + \texttt{Ctrl/Cmd\ +\ O} - Open file +\item + \texttt{Ctrl/Cmd\ +\ S} - Save file +\item + \texttt{Ctrl/Cmd\ +\ Shift\ +\ S} - Save as +\item + \texttt{Ctrl/Cmd\ +\ I} - Import document +\end{itemize} + +\hypertarget{editor-features}{% +\subsubsection{Editor Features}\label{editor-features}} + +\begin{itemize} +\tightlist +\item + \texttt{Ctrl/Cmd\ +\ F} - Find \& Replace +\item + \texttt{Ctrl/Cmd\ +\ Z} - Undo +\item + \texttt{Ctrl/Cmd\ +\ Shift\ +\ Z} - Redo +\item + \texttt{Tab} - Indent lines or insert 4 spaces +\item + \texttt{Shift\ +\ Tab} - Outdent selected lines +\item + \texttt{Enter} - Auto-continue lists with proper indentation +\end{itemize} + +\hypertarget{view-navigation}{% +\subsubsection{View \& Navigation}\label{view-navigation}} + +\begin{itemize} +\tightlist +\item + \texttt{Ctrl/Cmd\ +\ P} - Toggle preview +\item + \texttt{Ctrl/Cmd\ +\ Enter} - Toggle preview (alternative) +\item + \texttt{Escape} - Close find dialog +\end{itemize} + +\hypertarget{building}{% +\subsection{Building}\label{building}} + +\begin{Shaded} +\begin{Highlighting}[] +\CommentTok{\# Install dependencies} +\ExtensionTok{npm}\NormalTok{ install} + +\CommentTok{\# Generate icons} +\ExtensionTok{npm}\NormalTok{ run generate{-}icons} + +\CommentTok{\# Build for current platform} +\ExtensionTok{npm}\NormalTok{ run build} + +\CommentTok{\# Build for specific platform} +\ExtensionTok{npm}\NormalTok{ run build:win }\CommentTok{\# Windows} +\ExtensionTok{npm}\NormalTok{ run build:mac }\CommentTok{\# macOS } +\ExtensionTok{npm}\NormalTok{ run build:linux }\CommentTok{\# Linux (generates .deb, .AppImage, and .snap)} + +\CommentTok{\# Build for all platforms} +\ExtensionTok{npm}\NormalTok{ run dist:all} +\end{Highlighting} +\end{Shaded} + +\hypertarget{version-history}{% +\subsection{Version History}\label{version-history}} + +\begin{itemize} +\tightlist +\item + \textbf{v1.3.1} - Bug fixes: Fixed file associations for + double-clicking .md files, corrected 50/50 layout alignment for + editor/preview panes +\item + \textbf{v1.3.0} - Major update: Tabbed interface for multiple files, + enhanced PDF export with LaTeX engines, fixed file associations, + removed redundant converter menu, improved UI architecture +\item + \textbf{v1.2.1} - Comprehensive editor enhancements: Find \& Replace, + Line Numbers, Undo/Redo, Auto-indentation, PowerPoint export, document + conversion menu, table creation helper, spreadsheet export +\item + \textbf{v1.1.0} - Added Excel/ODS spreadsheet export, updated author + information, renamed to PanConverter +\item + \textbf{v1.0.0} - Initial release with basic markdown editing, themes, + and Pandoc export +\end{itemize} + +\hypertarget{known-issues}{% +\subsection{Known Issues}\label{known-issues}} + +\begin{itemize} +\tightlist +\item + AppImage may require \texttt{-\/-no-sandbox} flag on some Linux + systems +\item + Windows/Mac builds require platform-specific build environments +\item + Large files may cause performance issues +\end{itemize} + +\hypertarget{contributing}{% +\subsection{Contributing}\label{contributing}} + +Contributions are welcome! Please feel free to submit a Pull Request to +the \href{https://github.com/amitwh/pan-converter}{GitHub repository}. + +\hypertarget{license}{% +\subsection{License}\label{license}} + +MIT License - see LICENSE file for details. + +\hypertarget{author}{% +\subsection{Author}\label{author}} + +\textbf{Amit Haridas} - +\href{mailto:amit.wh@gmail.com}{\nolinkurl{amit.wh@gmail.com}} + +\hypertarget{acknowledgments}{% +\subsection{Acknowledgments}\label{acknowledgments}} + +\begin{itemize} +\tightlist +\item + Built with \href{https://www.electronjs.org/}{Electron} +\item + Markdown parsing by \href{https://marked.js.org/}{marked} +\item + Export functionality powered by \href{https://pandoc.org/}{Pandoc} +\item + Syntax highlighting by \href{https://highlightjs.org/}{highlight.js} +\item + Spreadsheet export by \href{https://www.npmjs.com/package/xlsx}{XLSX} +\item + HTML sanitization by + \href{https://www.npmjs.com/package/dompurify}{DOMPurify} +\end{itemize} diff --git a/README.pdf b/README.pdf new file mode 100644 index 0000000..7b3cc6d Binary files /dev/null and b/README.pdf differ diff --git a/package.json b/package.json index e7a8b20..e87174a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pan-converter", - "version": "1.3.1", + "version": "1.3.2", "description": "Cross-platform Markdown editor and converter using Pandoc", "main": "src/main.js", "scripts": { diff --git a/src/main.js b/src/main.js index 2f62010..d71a634 100644 --- a/src/main.js +++ b/src/main.js @@ -171,7 +171,7 @@ function createMenu() { type: 'info', title: 'About PanConverter', message: 'PanConverter', - detail: 'A cross-platform Markdown editor and converter using Pandoc.\n\nVersion: 1.3.1\nAuthor: Amit Haridas\nEmail: amit.wh@gmail.com\nLicense: MIT\n\nFeatures:\n• Tabbed interface for multiple files\n• Advanced markdown editing with live preview\n• Enhanced PDF export with LaTeX engines\n• File association support for .md files\n• Find & replace with match highlighting\n• Line numbers and auto-indentation\n• Export to multiple formats via Pandoc\n• PowerPoint & presentation export\n• Export tables to Excel/ODS spreadsheets\n• Document import & conversion\n• Table creation helper\n• Multiple themes support\n• Undo/redo functionality', + detail: 'A cross-platform Markdown editor and converter using Pandoc.\n\nVersion: 1.3.2\nAuthor: Amit Haridas\nEmail: amit.wh@gmail.com\nLicense: MIT\n\nFeatures:\n• Tabbed interface for multiple files\n• Advanced markdown editing with live preview\n• Enhanced PDF export with LaTeX engines\n• File association support for .md files\n• Improved preview typography and spacing\n• Find & replace with match highlighting\n• Line numbers and auto-indentation\n• Export to multiple formats via Pandoc\n• PowerPoint & presentation export\n• Export tables to Excel/ODS spreadsheets\n• Document import & conversion\n• Table creation helper\n• Multiple themes support\n• Undo/redo functionality', buttons: ['OK'] }); } diff --git a/src/styles.css b/src/styles.css index 8a10aa5..b529d5f 100644 --- a/src/styles.css +++ b/src/styles.css @@ -172,13 +172,16 @@ body { } .pane:last-child { - padding: 20px; + padding: 0; background: #fff; } .preview-content { - max-width: 800px; - margin: 0 auto; + max-width: none; + margin: 0; + padding: 20px 24px 24px 24px; + line-height: 1.6; + font-size: 14px; } /* Legacy support for old selectors */ @@ -220,31 +223,33 @@ body { } /* Preview Styles */ -#preview h1, #preview h2, #preview h3, #preview h4, #preview h5, #preview h6 { +#preview h1, #preview h2, #preview h3, #preview h4, #preview h5, #preview h6, +.preview-content h1, .preview-content h2, .preview-content h3, .preview-content h4, .preview-content h5, .preview-content h6 { margin-top: 24px; margin-bottom: 16px; font-weight: 600; line-height: 1.25; } -#preview h1 { +#preview h1, .preview-content h1 { font-size: 2em; border-bottom: 1px solid #eaecef; padding-bottom: 0.3em; + margin-top: 0; } -#preview h2 { +#preview h2, .preview-content h2 { font-size: 1.5em; border-bottom: 1px solid #eaecef; padding-bottom: 0.3em; } -#preview p { +#preview p, .preview-content p { margin-bottom: 16px; line-height: 1.6; } -#preview code { +#preview code, .preview-content code { padding: 0.2em 0.4em; margin: 0; font-size: 85%; @@ -253,7 +258,7 @@ body { font-family: 'SF Mono', Monaco, 'Courier New', monospace; } -#preview pre { +#preview pre, .preview-content pre { padding: 16px; overflow: auto; font-size: 85%; @@ -263,7 +268,7 @@ body { margin-bottom: 16px; } -#preview pre code { +#preview pre code, .preview-content pre code { display: inline; max-width: auto; padding: 0; @@ -275,54 +280,54 @@ body { border: 0; } -#preview blockquote { +#preview blockquote, .preview-content blockquote { padding: 0 1em; color: #6a737d; border-left: 0.25em solid #dfe2e5; margin-bottom: 16px; } -#preview ul, #preview ol { +#preview ul, #preview ol, .preview-content ul, .preview-content ol { padding-left: 2em; margin-bottom: 16px; } -#preview li { +#preview li, .preview-content li { margin-bottom: 4px; } -#preview a { +#preview a, .preview-content a { color: #0366d6; text-decoration: none; } -#preview a:hover { +#preview a:hover, .preview-content a:hover { text-decoration: underline; } -#preview img { +#preview img, .preview-content img { max-width: 100%; height: auto; } -#preview table { +#preview table, .preview-content table { border-collapse: collapse; margin-bottom: 16px; width: 100%; } -#preview table th, -#preview table td { +#preview table th, #preview table td, +.preview-content table th, .preview-content table td { padding: 6px 13px; border: 1px solid #dfe2e5; } -#preview table th { +#preview table th, .preview-content table th { font-weight: 600; background-color: #f6f8fa; } -#preview table tr:nth-child(2n) { +#preview table tr:nth-child(2n), .preview-content table tr:nth-child(2n) { background-color: #f6f8fa; } @@ -394,7 +399,7 @@ body.theme-dark .editor-textarea { } body.theme-dark .pane:last-child { - background: #252526; + background: #1e1e1e; } /* Legacy support */ @@ -411,42 +416,42 @@ body.theme-dark #preview-pane { background: #252526; } -body.theme-dark #preview { +body.theme-dark #preview, body.theme-dark .preview-content { color: #d4d4d4; } -body.theme-dark #preview h1, -body.theme-dark #preview h2 { +body.theme-dark #preview h1, body.theme-dark #preview h2, +body.theme-dark .preview-content h1, body.theme-dark .preview-content h2 { border-bottom-color: #3e3e42; } -body.theme-dark #preview code { +body.theme-dark #preview code, body.theme-dark .preview-content code { background-color: rgba(255,255,255,0.1); } -body.theme-dark #preview pre { +body.theme-dark #preview pre, body.theme-dark .preview-content pre { background-color: #2d2d30; } -body.theme-dark #preview blockquote { +body.theme-dark #preview blockquote, body.theme-dark .preview-content blockquote { color: #808080; border-left-color: #3e3e42; } -body.theme-dark #preview a { +body.theme-dark #preview a, body.theme-dark .preview-content a { color: #569cd6; } -body.theme-dark #preview table th, -body.theme-dark #preview table td { +body.theme-dark #preview table th, body.theme-dark #preview table td, +body.theme-dark .preview-content table th, body.theme-dark .preview-content table td { border-color: #3e3e42; } -body.theme-dark #preview table th { +body.theme-dark #preview table th, body.theme-dark .preview-content table th { background-color: #2d2d30; } -body.theme-dark #preview table tr:nth-child(2n) { +body.theme-dark #preview table tr:nth-child(2n), body.theme-dark .preview-content table tr:nth-child(2n) { background-color: #2d2d30; } @@ -481,19 +486,19 @@ body.theme-solarized #editor { color: #657b83; } -body.theme-solarized #preview { +body.theme-solarized #preview, body.theme-solarized .preview-content { color: #586e75; } -body.theme-solarized #preview code { +body.theme-solarized #preview code, body.theme-solarized .preview-content code { background-color: #eee8d5; } -body.theme-solarized #preview pre { +body.theme-solarized #preview pre, body.theme-solarized .preview-content pre { background-color: #eee8d5; } -body.theme-solarized #preview a { +body.theme-solarized #preview a, body.theme-solarized .preview-content a { color: #268bd2; } @@ -526,29 +531,29 @@ body.theme-monokai #preview-pane { background: #272822; } -body.theme-monokai #preview { +body.theme-monokai #preview, body.theme-monokai .preview-content { color: #f8f8f2; } -body.theme-monokai #preview h1, -body.theme-monokai #preview h2 { +body.theme-monokai #preview h1, body.theme-monokai #preview h2, +body.theme-monokai .preview-content h1, body.theme-monokai .preview-content h2 { border-bottom-color: #75715e; } -body.theme-monokai #preview code { +body.theme-monokai #preview code, body.theme-monokai .preview-content code { background-color: #3e3d32; } -body.theme-monokai #preview pre { +body.theme-monokai #preview pre, body.theme-monokai .preview-content pre { background-color: #3e3d32; } -body.theme-monokai #preview blockquote { +body.theme-monokai #preview blockquote, body.theme-monokai .preview-content blockquote { color: #75715e; border-left-color: #75715e; } -body.theme-monokai #preview a { +body.theme-monokai #preview a, body.theme-monokai .preview-content a { color: #66d9ef; } @@ -583,29 +588,29 @@ body.theme-github #editor { color: #24292e; } -body.theme-github #preview { +body.theme-github #preview, body.theme-github .preview-content { color: #24292e; } -body.theme-github #preview h1, -body.theme-github #preview h2 { +body.theme-github #preview h1, body.theme-github #preview h2, +body.theme-github .preview-content h1, body.theme-github .preview-content h2 { border-bottom-color: #eaecef; } -body.theme-github #preview code { +body.theme-github #preview code, body.theme-github .preview-content code { background-color: rgba(27,31,35,0.05); } -body.theme-github #preview pre { +body.theme-github #preview pre, body.theme-github .preview-content pre { background-color: #f6f8fa; } -body.theme-github #preview blockquote { +body.theme-github #preview blockquote, body.theme-github .preview-content blockquote { color: #6a737d; border-left-color: #dfe2e5; } -body.theme-github #preview a { +body.theme-github #preview a, body.theme-github .preview-content a { color: #0366d6; }