📚 Tài liệu hướng dẫn TikZ2SVG

Hướng dẫn đầy đủ về cách sử dụng TikZ2SVG API

🚀 Giới thiệu tổng quan

⭐ ĐIỂM NỔI BẬT: Hybrid Engine (Python + AI)

TikZ2SVG sử dụng Python Engine (rule-based algorithms) làm core chính — nhanh hơn 10x, chính xác 99%+ cho các dạng toán phổ biến.

⚡ ~100ms
vs 3-10s AI
✅ 99%+ Accuracy
Rule-based, deterministic
💚 Miễn phí
Không tốn API credits
🔄 Consistent
Cùng input = cùng output

👉 Xem chi tiết tại section Hybrid Engine (Python + AI)

Mô tả ứng dụng

TikZ2SVG API là một web application mạnh mẽ cho phép chuyển đổi TikZ LaTeX code thành các file SVG vector graphics chất lượng cao. Ứng dụng cung cấp giao diện thân thiện, hệ thống quản lý file, tương tác xã hội và API mở cho developers.

✨ Tính năng chính

🐍

Hybrid Engine (Python + AI)

Python Engine làm core chính — nhanh 10x, chính xác 99%+

Biên dịch Real-time

Preview ngay lập tức với auto-detection packages thông minh

🌏

Unicode đầy đủ

Hỗ trợ tiếng Việt, Trung, Nhật, Hàn với LuaLaTeX + fontspec

🎨

Quản lý File

Like/unlike, follow/unfollow system hoàn chỉnh

💬

Comments System

Bình luận với LaTeX & TikZ code sharing

🔄

Chuyển đổi định dạng

SVG → PNG/JPEG với tùy chọn size, DPI

🛠️ Công nghệ sử dụng

  • Backend: Python Flask, MySQL, LuaLaTeX, pdf2svg
  • Frontend: Bootstrap 5, JavaScript ES6+, CodeMirror
  • Email: Zoho Mail SMTP với rate limiting
  • Security: OAuth 2.0 (Google), CSRF protection, input validation
  • Performance: Caching, async processing, image optimization

📋 Hướng dẫn bắt đầu nhanh

1

Đăng ký tài khoản

  1. Truy cập trang chủ tại /
  2. Nhấn "Đăng nhập" → Chọn "Google OAuth"
  3. Authorize ứng dụng với Google account của bạn
  4. Tự động tạo profile với thông tin cơ bản từ Google
2

Chuyển đổi TikZ đầu tiên

  1. Nhập TikZ code vào code editor (CodeMirror)
  2. Nhấn "Biên dịch" → Hệ thống tự động phát hiện packages
  3. Xem preview SVG ngay lập tức ở phần kết quả
  4. Tải về hoặc lưu file SVG vào account
Ví dụ TikZ code đơn giản
\begin{tikzpicture}
  \draw (0,0) circle (1cm);
  \node at (0,0) {Hello World};
\end{tikzpicture}
3

Lưu và quản lý file

  1. Nhấn "Lưu SVG" sau khi biên dịch thành công
  2. Nhập keywords/tags để dễ tìm kiếm sau này
  3. Xem file đã lưu trong section "Các file SVG đã tạo"
  4. Sử dụng menu actions trên mỗi file card để quản lý

🐍 Tạo TikZ từ mô tả — Hybrid Engine (Python + AI)

⭐ Giới thiệu tính năng Hybrid Engine

TikZ Generation from Description là tính năng độc đáo của TikZ2SVG, cho phép bạn tạo mã TikZ tự động từ mô tả bằng tiếng Việt hoặc tiếng Anh.

⚡ ĐIỂM NỔI BẬT: Hệ thống sử dụng Hybrid Engine với Python Engine làm core chính — nhanh hơn, chính xác hơn so với các hệ thống thuần AI.

🏆 Tại sao Python Engine là Core chính?

Tiêu chí ⚡ Python Engine 🤖 AI (LLM)
Tốc độ ⚡ ~100ms 🐢 3-10 giây
Độ chính xác ✅ 99%+ (rule-based) ⚠️ 70-90% (có thể hallucinate)
Consistency ✅ Luôn cho cùng kết quả ⚠️ Kết quả có thể khác nhau
Chi phí 💚 Miễn phí 💰 Tốn API credits
Offline ✅ Hoạt động offline ❌ Cần kết nối internet

✨ Lợi ích

  • 🚀 Tốc độ nhanh: Python Engine xử lý trong ~100ms, không cần chờ đợi
  • 🎯 Độ chính xác cao: Rule-based algorithms đảm bảo kết quả đúng 100%
  • 📚 Học TikZ: Xem code được tạo để học cú pháp chuẩn
  • 💡 Sáng tạo nhanh: Thử nghiệm ý tưởng một cách nhanh chóng
  • 🌐 Đa ngôn ngữ: Hỗ trợ cả tiếng Việt và tiếng Anh
  • 💚 Miễn phí: Python Engine không tốn API credits

⚡ Python Engine — Built-in Templates & Commands

⭐ QUAN TRỌNG

Tất cả các ví dụ dưới đây được xử lý hoàn toàn bởi Python Engine (rule-based, deterministic).
KHÔNG sử dụng AI — đảm bảo chính xác toán học, tốc độ nhanh (~100ms), và kết quả ổn định, lặp lại được.

⚡ Python Engine 📊 Bảng biến thiên (Variation Table)

Mô tả: Tạo bảng biến thiên cho hàm số theo chuẩn tkz-tab

Package: tkz-tab (auto-detected)

Các input được xử lý bởi Python Engine:

Ví dụ Input
vẽ bảng biến thiên của hàm số y = x^3 - 3x + 1
vẽ bảng biến thiên của hàm số y = (2x-3)/(x-1)
vẽ bảng biến thiên của hàm số y = (x^2-2x+9)/(x-2)
vẽ bảng biến thiên của hàm số y = sqrt(x^2-4x)

Kết quả TikZ (skeleton):

Output Structure
%!<\usepackage{tkz-tab}>
\begin{tikzpicture}
\tkzTabInit[lgt=2,espcl=2.5]
  {$x$ / 1 , $f'(x)$ / 1, $f(x)$ / 2}
  {$-2$, $-1$, $1$, $2$}
\tkzTabLine{, +, z, -, z, +, }
\tkzTabVar{-/ $0$, +/ $4$, -/ $0$, +/ $4$}
\end{tikzpicture}

Đặc điểm:

  • ✅ Tự động tính đạo hàm và tìm điểm cực trị
  • ✅ Xác định dấu đạo hàm trên các khoảng
  • ✅ Tính giá trị hàm tại các điểm đặc biệt
  • ✅ Format chuẩn tkz-tab đẹp mắt

⚡ Python Engine 📈 Vẽ đồ thị hàm số (Graph Plotting)

Mô tả: Vẽ đồ thị hàm số với PGFPlots hoặc TikZ thuần

Package: pgfplots hoặc TikZ cơ bản (auto-detected)

Các input được xử lý bởi Python Engine:

Ví dụ Input
vẽ đồ thị hàm số y = 2x + 3
vẽ đồ thị hàm số y = x^2 - 4x + 3
vẽ đồ thị hàm số y = x^3 - 3x^2 + 2x + 1
vẽ đồ thị hàm số y = (2x+1)/(x-1)
vẽ đồ thị hàm số y = (x^2+2x)/(2x-1)

Kết quả TikZ (skeleton):

Output Structure
\begin{tikzpicture}[line cap=round,line join=round,>=stealth]
\def\xmin{-2.23} \def\xmax{2.23}
\def\ymin{-3.0} \def\ymax{3.0}

% Vẽ đồ thị hàm số
\begin{scope}
\clip (\xmin,\ymin) rectangle (\xmax,\ymax);
\draw[smooth, samples=100, domain=\xmin:\xmax] plot (\x, {(\x)^3 - 3*(\x)});
\end{scope}

% Trục tọa độ
\draw[->] (\xmin,0)--(\xmax,0) node[above] {$x$};
\draw[->] (0,\ymin)--(0,\ymax) node[left] {$y$};
\fill (0,0) circle (1pt) node[below right] {$O$};
\end{tikzpicture}

Đặc điểm:

  • ✅ Tự động xác định domain và range phù hợp
  • ✅ Parse các hàm toán học (sin, cos, exp, ln, sqrt, ...)
  • ✅ Thêm grid, axis labels, legend tự động
  • ✅ Hỗ trợ multiple functions trên cùng đồ thị

⚡ Python Engine 🔷 Miền nghiệm hệ bất phương trình (Feasible Region)

Mô tả: Vẽ miền nghiệm của hệ bất phương trình (linear programming)

Package: patterns library (auto-detected via \usetikzlibrary{patterns})

Input được xử lý bởi Python Engine:

Ví dụ Input
Vẽ miền nghiệm hệ bất phương trình {x>=0; y>=0; 2x+5y<=10; x+y<=3}

Kết quả TikZ (skeleton):

Output Structure
\begin{tikzpicture}[line cap=round,line join=round,>=stealth]
% \usetikzlibrary{patterns}

\def\xmin{-1.0} \def\xmax{6.0}
\def\ymin{-1.0} \def\ymax{4.0}

\begin{scope}
\clip (\xmin,\ymin) rectangle (\xmax,\ymax);

% Tô miền KHÔNG nghiệm (miền nghiệm để trắng)
\fill[opacity=0.3,blue] (0,4) -- (-1,4) -- (-1,-1) -- (0,-1) -- cycle;
\fill[opacity=0.3,red] (-1,0) -- (-1,-1) -- (6,-1) -- (6,0) -- cycle;
\fill[opacity=0.3,green!70!black] (6,-0.4) -- (6,4) -- (-1,4) -- (-1,2.4) -- cycle;
\fill[opacity=0.3,orange] (4,-1) -- (6,-1) -- (6,4) -- (-1,4) -- cycle;

% Vẽ các đường thẳng
\draw[blue, thick] (0,\ymin) -- (0,\ymax);
\draw[red, thick] (\xmin,0) -- (\xmax,0);
\draw[green!70!black, thick] plot (\x, {(10 - 2*\x) / 5});
\draw[orange, thick] plot (\x, {(3 - \x)});
\end{scope}

% Trục tọa độ và giao điểm
\draw[->] (\xmin,0)--(\xmax,0) node[above] {$x$};
\draw[->] (0,\ymin)--(0,\ymax) node[left] {$y$};
\end{tikzpicture}

Đặc điểm:

  • ✅ Parse hệ bất phương trình tuyến tính
  • ✅ Tính giao điểm các đường thẳng
  • ✅ Xác định và tô màu miền nghiệm
  • ✅ Đánh dấu các đỉnh của đa giác lồi
  • ✅ Hỗ trợ các ký hiệu: ≤, ≥, <, >, <=, >=

🤖 Khi nào AI được sử dụng?

AI Engine chỉ là fallback khi Python Engine không xử lý được:

  • Mô tả không rõ ràng hoặc mơ hồ
  • Yêu cầu sáng tạo, tùy chỉnh đặc biệt
  • Dạng bài chưa có template chuẩn

Ví dụ AI xử lý: "Vẽ một bông hoa với 8 cánh, mỗi cánh là đường cong Bezier, tâm là hình tròn gradient từ vàng sang cam"

🔄 Intelligent Switching — Python Engine vs AI

⭐ Chiến lược routing thông minh

Python Engine là default, AI chỉ là fallback.

🏆 Nguyên tắc cốt lõi

Ưu tiên Engine Điều kiện
1 (cao nhất) ⚡ Python Engine Match template chuẩn (BBT, đồ thị, miền nghiệm)
2 (fallback) 🤖 AI Engine Không match template, yêu cầu sáng tạo

Quy trình xử lý request

Flowchart
┌─────────────────┐
│ User Input      │
│ (mô tả TikZ)    │
└────────┬────────┘
         │
         ▼
┌─────────────────────────────────┐
│ 1. Pattern Recognition          │
│    - Detect: "bảng biến thiên"  │
│    - Detect: "đồ thị hàm số"    │
│    - Detect: "miền nghiệm"      │
└────────┬────────────────────────┘
         │
         ▼
┌─────────────────────────────────┐
│ 2. Engine Selection             │
│    ┌─────────────┐              │
│    │ Match       │──▶ Python    │ ← 99% requests
│    │ Template?   │    Engine    │
│    └──────┬──────┘    (⚡ fast) │
│           │ No                  │
│           ▼                     │
│    ┌─────────────┐              │
│    │ Fallback    │──▶ AI       │ ← Chỉ khi cần
│    │ to AI       │    Engine    │
│    └─────────────┘    (🤖 flex) │
└────────┬────────────────────────┘
         │
         ▼
┌─────────────────┐
│ TikZ Code       │
│ Output          │
└─────────────────┘

⚡ Python Engine xử lý (deterministic, ~100ms)

Trigger Keywords Dạng bài Ví dụ
bảng biến thiên, BBT Bảng biến thiên y = x^3 - 3x + 1, y = (2x-3)/(x-1)
đồ thị, vẽ hàm số Đồ thị hàm số y = 2x + 3, y = x^2 - 4x + 3
miền nghiệm Miền nghiệm BPT {x>=0; y>=0; 2x+5y<=10}

Lợi ích của Hybrid Approach

Metric Pure AI Hybrid (Python + AI) ⭐
Tốc độ trung bình 5-8s ~500ms
Độ chính xác (dạng chuẩn) 80% 99%+
Chi phí API Cao Giảm 70-80%
Khả năng xử lý sáng tạo Cao Cao (fallback to AI)

Cách sử dụng

1

Truy cập tính năng

  • Đăng nhập vào tài khoản (bắt buộc)
  • Vào trang chủ hoặc trang biên dịch TikZ
  • Tìm section "🤖 Tạo TikZ từ mô tả"
2

Nhập mô tả

  • Nhập mô tả hình vẽ bạn muốn tạo
  • Mô tả chi tiết: Càng cụ thể càng tốt
  • Giới hạn: Tối đa 500 ký tự
3

Tạo và sử dụng

  • Click nút "🚀 Tạo mã TikZ"
  • Kết quả Python Engine: ~100ms | AI: 3-5 giây
  • Copy hoặc sử dụng mã trong editor chính

Giới hạn và Rate Limiting

  • ⏱️ Rate Limiting: 10 yêu cầu / 10 phút mỗi user
  • 📝 Độ dài mô tả: Tối đa 500 ký tự
  • Timeout: 30 giây (nếu API không phản hồi)
  • 🔐 Yêu cầu đăng nhập: Phải có tài khoản

FAQ về Hybrid Engine

Q: Python Engine và AI khác nhau thế nào?

A: Python Engine sử dụng rule-based algorithms (nhanh ~100ms, chính xác 99%+) cho các dạng bài chuẩn. AI (LLM) xử lý các yêu cầu sáng tạo hoặc phức tạp (3-10s). Hệ thống tự động chọn engine phù hợp.

Q: Làm sao để biết Python Engine hay AI đang xử lý?

A: Nếu kết quả trả về trong dưới 1 giây → Python Engine. Nếu mất 3-10 giây → AI Engine.

Q: Python Engine hỗ trợ những dạng bài nào?

A: Bảng biến thiên, đồ thị hàm số, miền nghiệm hệ BPT, đường tròn lượng giác, hình học phẳng (tam giác, tứ giác), vector, trục số, biểu đồ cột/tròn.

Q: Tính năng này có miễn phí không?

A: Có, hoàn toàn miễn phí với giới hạn 10 yêu cầu/10 phút. Python Engine không tốn API credits.

🔧 Chức năng biên dịch chi tiết

Trình biên dịch TikZ cơ bản

  • Input: CodeMirror editor với syntax highlighting
  • Auto-detection: Tự động phát hiện packages, TikZ libraries, PGFPlots libraries
  • Compilation: LuaLaTeX → PDF → SVG (pdf2svg)
  • Preview: Real-time SVG preview với zoom/pan
  • Error handling: Chi tiết log lỗi LaTeX với line numbers

Auto-detection thông minh

Hệ thống tự động phát hiện các packages sau:

📦 LaTeX Packages cơ bản

  • Nền tảng: fontspec, polyglossia, xcolor, graphicx, geometry, setspace
  • Toán học: amsmath, amssymb, amsfonts, mathtools, physics, siunitx, cancel, cases
  • TikZ/PGF: tikz, pgfplots, tikz-3dplot, tkz-euclide, tkz-tab, pgf, pgfkeys, pgfornament
  • Chuyên biệt: circuitikz, tikz-timing, tikz-cd, tikz-network, tikzpeople, tikzmark
  • Bảng biểu: array, booktabs, multirow, colortbl, longtable, tabularx

🎨 TikZ Libraries

  • Tính toán: calc, math, positioning, arrows.meta, intersections
  • Hình học: angles, quotes, shapes.geometric, shapes.symbols, shapes.arrows
  • Trang trí: decorations.markings, decorations.pathreplacing, decorations.text
  • Hiệu ứng: patterns, shadings, hobby, spy, backgrounds, fadings, shadows
  • Cấu trúc: fit, matrix, chains, automata, petri, mindmap, trees

📊 PGFPlots Libraries

  • polar, statistics, dateplot, fillbetween, colorbrewer
  • groupplots, ternary, smithchart, units
💡 Lưu ý: Đây là danh sách đầy đủ các packages được phép sử dụng. Hệ thống sẽ tự động phát hiện khi bạn sử dụng các lệnh như \draw, \node, \addplot, etc.

🌏 Unicode & Multi-language Support

✅ Hệ thống hỗ trợ Unicode đầy đủ

  • ✅ Hệ thống hỗ trợ ĐẦY ĐỦ chữ Trung/Nhật/Hàn (CJK characters)
  • ✅ Người dùng CHỈ CẦN thêm \setmainfont{STSong} để hiển thị chữ CJK
  • KHÔNG CẦN sửa app.py hay thêm package
  • LuaLaTeX + fontspec = Unicode native support HOÀN HẢO

Ví dụ sử dụng chữ CJK

Tiếng Trung, Nhật, Hàn
\setmainfont{STSong}  % Chỉ cần thêm dòng này!

\begin{tikzpicture}
  \node {中文: 富贵};                    % Tiếng Trung
  \node at (0,-1) {日本語: こんにちは};    % Tiếng Nhật
  \node at (0,-2) {한국어: 안녕하세요};    % Tiếng Hàn
\end{tikzpicture}

Fonts CJK có sẵn

  • STSong (宋体) - ✅ Khuyến nghị cho văn bản thông thường
  • Heiti TC/SC (黑体) - Chữ đậm, tiêu đề
  • Kaiti TC/SC (楷书) - Thư pháp, chữ viết tay đẹp

⚠️ Lưu ý quan trọng

  • KHÔNG dùng %!<CJKutf8> (xung đột với LuaLaTeX + fontspec)
  • KHÔNG dùng \begin{CJK*}{UTF8}{gbsn}...\end{CJK*} (cú pháp cũ)
  • CHỈ CẦN \setmainfont{STSong} (hoặc font CJK khác)
  • ✅ Tiếng Việt hoạt động HOÀN HẢO không cần font đặc biệt

📦 Manual Package Specification

Khi nào cần sử dụng?

  • ✅ Hệ thống không tự động phát hiện package cần thiết
  • ✅ Packages ít phổ biến hoặc mới
  • ✅ Cần kiểm soát chính xác packages được load

Cú pháp: %!<commands>

Ví dụ đơn giản
%!<\usepackage{pgfornament}>
\begin{tikzpicture}
\pgfornament[width=2cm]{15}
\end{tikzpicture}
Package with options (⭐ MỚI)
%!<\usepackage[siunitx]{circuitikz}>
\begin{tikzpicture}
\draw (0,0) to[R=1<\ohm>] (2,0)
          to[L=1<\henry>] (4,0)
          to[C=1<\farad>] (6,0);
\end{tikzpicture}
Multiple packages (1 dòng)
%!<\usepackage{circuitikz},\usepackage{pgfornament}>
\begin{tikzpicture}
\draw (0,0) to[R, o-o] (2,0);
\node at (3,0) {\pgfornament[width=1cm]{15}};
\end{tikzpicture}
Multiple packages (nhiều dòng)
%!<\usepackage{circuitikz}>
%!<\usepackage{pgfornament}>
\begin{tikzpicture}
\draw (0,0) to[R, o-o] (2,0);
\node at (3,0) {\pgfornament[width=1cm]{15}};
\end{tikzpicture}
Kết hợp packages và libraries
%!<\usepackage{circuitikz},\usetikzlibrary{angles,quotes}>
\begin{tikzpicture}
\draw (0,0) to[R, o-o] (2,0);
\pic [draw, angle radius=5mm] {angle = A--B--C};
\end{tikzpicture}

Quy trình sử dụng

  1. ✍️ Viết TikZ code như bình thường
  2. 📦 Thêm dòng %!<...> ở đầu nếu cần package đặc biệt
  3. ⚡ Biên dịch → Hệ thống tự động xử lý
  4. ✅ Xem kết quả SVG như thường lệ

📮 Yêu cầu thêm Package mới

Khi nào cần sử dụng?

  • ❓ Package bạn cần chưa có trong danh sách hỗ trợ
  • 🆕 Muốn sử dụng package mới hoặc ít phổ biến
  • 🤝 Đóng góp mở rộng thư viện cho cộng đồng

Cách gửi yêu cầu

1

Truy cập trang Packages

  • Vào trang chủ → Click menu "📦 Packages"
  • Hoặc truy cập trực tiếp: /packages
  • Xem danh sách packages hiện có
2

Mở form yêu cầu

  • Cuộn xuống phần "Yêu cầu Package mới"
  • Click nút "🚀 Gửi yêu cầu Package"
  • Chuyển đến trang form /packages/request
3

Điền thông tin

  • Tên Package (bắt buộc): Nhập tên chính xác
  • Lý do yêu cầu (bắt buộc): Giải thích tại sao cần thiết
  • Ví dụ sử dụng (tùy chọn): Mô tả cụ thể cách sử dụng
  • Mức độ ưu tiên: Chọn độ khẩn cấp
4

Gửi yêu cầu

  • Kiểm tra lại thông tin
  • Click "🚀 Gửi yêu cầu"
  • Nhận thông báo xác nhận
⏱️ Giới hạn Rate Limiting: Tối đa 3 yêu cầu/giờ để tránh spam. Bạn sẽ nhận email thông báo khi yêu cầu được xử lý.

Quy trình xét duyệt

Pending

Yêu cầu đang chờ xử lý

🔍

Under Review

Admin đang xem xét

Approved

Đã phê duyệt, sẽ được thêm

Rejected

Bị từ chối (có lý do)

Thời gian xử lý

  • Khẩn cấp: 1-2 ngày làm việc
  • 🟠 Ưu tiên cao: 3-5 ngày làm việc
  • 🟡 Trung bình: 1-2 tuần
  • 🟢 Thấp: 2-4 tuần

Tips để yêu cầu được chấp nhận

✅ Nên làm

  • Nhập tên package chính xác
  • Giải thích rõ ràng lý do
  • Cung cấp ví dụ cụ thể
  • Đặt mức ưu tiên phù hợp
  • Kiểm tra package chưa tồn tại

❌ Không nên

  • Gửi yêu cầu package đã có
  • Viết lý do quá ngắn gọn
  • Spam nhiều yêu cầu giống nhau
  • Đặt "Khẩn cấp" khi không cần
  • Nhập sai tên package

🎨 Quản lý File SVG & Menu Actions

Giao diện File Card

Mỗi SVG file được hiển thị dưới dạng "thẻ" (card) bao gồm:

  • 📷 Ảnh preview: Hiển thị SVG đã tạo
  • 👤 Thông tin tác giả: Tên người tạo và thời gian
  • ❤️ Nút Like: Thể hiện sự yêu thích
  • Menu actions: Các hành động có thể thực hiện
  • 💻 Code section: TikZ code (có thể ẩn/hiện)

Cách sử dụng Menu Actions

🖥️ Trên máy tính (Desktop)

  • Di chuột qua file card → Menu tự động xuất hiện
  • Click vào button để thực hiện hành động

📱 Trên điện thoại (Mobile)

  • Tap 1 lần vào nút menu (⋯) → Hiện menu
  • Tap 2 lần vào action button → Thực hiện hành động

Các hành động có thể thực hiện

Hành động Mô tả Cần đăng nhập?
📥 Tải ảnh Xem chi tiết và tải file SVG về máy
📘 Facebook Copy link để chia sẻ lên Facebook
🔗 Copy Link Copy đường dẫn trực tiếp đến file SVG
💻 Xem Code Hiển thị/ẩn mã TikZ đã sử dụng
🗑️ Xóa file Xóa file SVG khỏi hệ thống ✅ (chủ sở hữu)

Hệ thống Like (Yêu thích)

Cách sử dụng

  1. Đăng nhập tài khoản (bắt buộc)
  2. Click vào nút ❤️ trên file card
  3. Trái tim chuyển màu đỏ → Đã like
  4. Click lại để unlike → Trái tim về màu xám

Xem danh sách người đã like

Click vào số lượt like (bên cạnh nút ❤️) để xem danh sách tất cả người đã like file đó. Modal sẽ hiện ra với avatar, username và thời gian like. Hỗ trợ phân trang (20 người/lần).

🔄 Chuyển đổi định dạng

Định dạng được hỗ trợ

  • SVG → PNG: Chuyển đổi raster với tùy chỉnh chiều rộng/cao/DPI
  • SVG → JPEG: Chuyển đổi chất lượng cao với tùy chọn nén
  • Xử lý hàng loạt: Chuyển đổi nhiều file cùng lúc

Cách chuyển đổi định dạng

1

Tạo SVG

  • Biên dịch TikZ code thành công
  • Lưu SVG vào tài khoản (nếu muốn)
2

Chuyển đổi

  • Click "📥 Tải ảnh" trên file card
  • Chọn định dạng: PNG hoặc JPEG
  • Tùy chỉnh kích thước (width, height, DPI)
  • Click "Convert" để bắt đầu
  • Tải file về máy khi hoàn tất

Giới hạn kích thước & Kiểm tra

  • Tối đa pixels: 60MP tổng cộng (60,000,000 pixels)
  • Tối đa DPI: 2000 DPI
  • Kiểm tra: Hệ thống kiểm tra trước khi chuyển đổi
  • Thông báo lỗi: Phản hồi rõ ràng khi vượt giới hạn

💬 Hệ thống Comments

Comments System cho phép người dùng trao đổi, thảo luận về TikZ code trực tiếp trên trang xem SVG. Hệ thống hỗ trợ LaTeX math, TikZ code sharing, và nested replies.

Tính năng chính

  • ✅ Bình luận & trả lời với cấu trúc thread (parent → replies)
  • ✅ LaTeX math support inline $x^2$ và display $$\int f(x) dx$$
  • ✅ TikZ code blocks với syntax \code{...} và copy button
  • ✅ Real-time preview MathJax rendering khi gõ
  • ✅ Like/Unlike comments để đánh giá chất lượng
  • ✅ Edit & Delete comments của chính mình
  • ✅ Pagination tự động load thêm comments

LaTeX Math Support

Inline math (trong dòng)

Syntax: $công thức$

Ví dụ: Công thức $E = mc^2$ rất nổi tiếng.

Display math (hiển thị riêng)

Syntax: $$công thức$$

Ví dụ: $$\int_0^\infty e^{-x} dx = 1$$

TikZ Code Blocks

Cú pháp chia sẻ TikZ code
Vẽ circle đơn giản:

\code{
\tikz \draw (0,0) circle (1cm);
}
💡 Đặc điểm:
  • ✅ Hỗ trợ nested braces không giới hạn độ sâu
  • ✅ Copy button một click copy toàn bộ code
  • ✅ Visual feedback 📋 → ✅ khi copy thành công
  • ✅ Syntax preservation giữ nguyên format

Like & Unlike Comments

  1. Đọc comment hữu ích hoặc hay
  2. Click nút 👍 ở footer comment
  3. Button chuyển màu xanh (liked state)
  4. Click lại để unlike → Button về trạng thái mặc định

Edit & Delete Comments

Edit comment

  • Click nút "✏️ Sửa" ở comment của bạn
  • Textarea hiện ra với nội dung cũ
  • Chỉnh sửa nội dung (vẫn support LaTeX & TikZ)
  • Click "Lưu" hoặc "Hủy"
  • Label "(đã chỉnh sửa)" hiển thị sau timestamp

Delete comment

  • Click nút "🗑️ Xóa" ở comment của bạn
  • Confirm dialog xuất hiện
  • Confirm xóa → Comment biến mất
  • Lưu ý: Xóa vĩnh viễn, không thể khôi phục

👤 Profile & Tương tác xã hội

Quản lý Profile

  • Tải ảnh đại diện: Hỗ trợ nhiều định dạng (PNG, JPG, GIF)
  • Chỉnh sửa tiểu sử: Soạn thảo rich text với hỗ trợ markdown
  • Trang cài đặt: /profile/{user_id}/settings
  • Profile công khai: /profile/{user_id} có thể xem bởi người khác

Follow/Unfollow System

Yêu cầu để Follow

  • Tài khoản đã xác thực: Cần xác thực email trước
  • 🚫 Không thể tự follow: Không thể follow chính mình
  • 👥 Theo dõi lẫn nhau: Có thể follow và được follow lại

Xem bài đăng từ người đã Follow

  1. Đăng nhập và xác thực tài khoản (bắt buộc)
  2. Follow các user mà bạn quan tâm
  3. Xem feed các SVG mới từ những người bạn follow
  4. Sắp xếp theo thời gian (mới nhất hiển thị trước)
  5. Tự động tải thêm khi cuộn xuống dưới

Tương tác xã hội

  • ❤️ Like/Unlike: Thể hiện sở thích với SVG của người khác
  • 👀 Xem profile: Click vào tên tác giả để xem profile
  • 👥 Follow từ profile: Follow người dùng từ trang profile
  • 📋 Theo dõi hoạt động: Xem timeline các SVG mới

🛡️ Xác thực danh tính & Bảo mật

Tại sao cần xác thực?

  • 🔒 Bảo mật cao hơn: Xác nhận email thật
  • 👥 Unlock features: Follow/Unfollow yêu cầu verified account
  • Uy tín: Badge "Đã xác thực" tăng trust
  • 🚀 Priority access: Features mới ưu tiên cho verified users

Quy trình xác thực 5 bước

1

Kiểm tra trạng thái

Vào Profile Settings → Xem verification status

2

Bắt đầu xác thực

Nhấn "Xác thực tài khoản" → Đọc Terms & Conditions → "Tôi đồng ý"

3

Nhận email

Hệ thống gửi 6-digit code đến email. Check Inbox và Spam folder. Mã có hiệu lực 24 giờ.

4

Nhập mã

Enter chính xác 6 digits từ email. Max 5 attempts. Nhấn "Xác thực".

5

Hoàn tất

Status chuyển thành "✅ Đã xác thực". Badge icon xuất hiện. Unlock Follow/Unfollow.

Lợi ích khi xác thực

🔓

Tính năng mở khóa

  • Follow/Unfollow người dùng
  • Xem bài đăng từ người đã follow
  • Thông báo email
  • Hỗ trợ ưu tiên
🛡️

Bảo mật nâng cao

  • Khôi phục tài khoản qua email
  • Thông báo bảo mật
  • Xác thực hai yếu tố (sắp ra mắt)

🛠️ Xử lý lỗi & Troubleshooting

Lỗi biên dịch LaTeX

❌ Thiếu Packages

Error: ! LaTeX Error: File 'pgfornament.sty' not found.

Solutions:

  • Use manual package specification: %!<\usepackage{pgfornament}>
  • Check package name spelling
  • Verify package is in allowlist

❌ Lỗi cú pháp

Error: ! Missing $ inserted.

Solutions:

  • Check TikZ code syntax
  • Ensure proper math mode delimiters
  • Validate bracket matching

❌ Vấn đề bộ nhớ/Timeout

Error: Compilation timeout after 30 seconds

Solutions:

  • Simplify complex diagrams
  • Reduce number of plot points
  • Optimize loops và calculations

Vấn đề Upload/Lưu file

Giới hạn dung lượng file

  • SVG files: Max 10MB
  • Converted images: Max 60MP (60M pixels)
  • DPI limit: Max 2000 DPI

Vấn đề xác thực

  • Google OAuth: Check OAuth settings, scope permissions
  • Email not received: Check spam folder, wait 2-3 minutes
  • Code expired: Request new verification code
  • Max attempts: Wait 24 hours for reset

Tương thích trình duyệt

  • Modern browsers: Chrome 80+, Firefox 75+, Safari 13+
  • JavaScript required: Enable JavaScript for full functionality
  • Cookies required: Enable cookies for authentication
  • Local storage: Required for user preferences

💡 Tips & Best Practices

TikZ Code Examples Library

Basic Shapes
% Circle with label
\begin{tikzpicture}
\draw (0,0) circle (1cm);
\node at (0,0) {Center};
\end{tikzpicture}

% Rectangle with rounded corners
\begin{tikzpicture}
\draw[rounded corners=5pt] (0,0) rectangle (3,2);
\end{tikzpicture}
Mathematical Diagrams
% Function plot
\begin{tikzpicture}
\begin{axis}[domain=-2:2]
\addplot {x^2};
\end{axis}
\end{tikzpicture}

% Geometric construction
\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (3,0);
\coordinate (C) at (1,2);
\draw (A) -- (B) -- (C) -- cycle;
\pic [draw, angle radius=8mm, "$\alpha$"] {angle = B--A--C};
\end{tikzpicture}
Circuit Diagrams
%!<\usepackage{circuitikz}>
\begin{tikzpicture}
\draw (0,0) to[R=1<\ohm>] (2,0)
      to[L=1<\henry>] (4,0)
      to[C=1<\farad>] (6,0);
\end{tikzpicture}

Sử dụng trên nhiều thiết bị

🖥️ Desktop

  • Hover hiệu ứng: Di chuột để xem menu
  • Transitions mượt: Chuyển động tự nhiên
  • Visual feedback: Phản hồi trực quan
  • Loading states: Placeholder khi đang tải

📱 Mobile

  • 2-tap logic: Tap để hiện, tap lần 2 thực hiện
  • Touch-friendly: Nút to đủ cho ngón tay
  • Responsive: Tự động điều chỉnh màn hình
  • Smooth scroll: Cuộn mượt mà

❓ Câu hỏi thường gặp (FAQ)

Q: Tôi có thể sử dụng miễn phí không?

A: Có, TikZ2SVG hoàn toàn miễn phí cho tất cả tính năng cơ bản. Bạn chỉ cần đăng nhập bằng Google để sử dụng đầy đủ tính năng.

Q: File SVG có bị xóa tự động không?

A: Không, file SVG của bạn được lưu trữ vĩnh viễn sau khi tạo. Chỉ có chủ sở hữu mới có thể xóa file của mình.

Q: Tôi có thể tạo bao nhiêu file SVG mỗi ngày?

A: Hiện tại giới hạn 10 file SVG mới mỗi ngày cho mỗi tài khoản để đảm bảo chất lượng dịch vụ.

Q: Tại sao tôi không thể follow người khác?

A: Để follow người khác, bạn cần xác thực tài khoản qua email. Vào Profile Settings → Xác thực tài khoản để mở khóa tính năng này.

Q: File TikZ của tôi không biên dịch được, phải làm sao?

A: Kiểm tra:

  • Cú pháp TikZ có đúng không
  • Có thiếu packages không (sử dụng %!<\usepackage{...}> nếu cần)
  • Xem log lỗi chi tiết để khắc phục

Q: Làm sao để hiển thị chữ Trung Quốc, Nhật Bản, Hàn Quốc trong TikZ?

A: Hệ thống hỗ trợ ĐẦY ĐỦ Unicode với LuaLaTeX + fontspec. Bạn chỉ cần thêm dòng \setmainfont{STSong} vào đầu code TikZ:

\setmainfont{STSong}
\begin{tikzpicture}
  \node {中文: 富贵};  % Tiếng Trung hiển thị HOÀN HẢO
\end{tikzpicture}

Lưu ý: KHÔNG dùng %!<CJKutf8> vì không tương thích với LuaLaTeX.

Q: Tại sao chữ Trung/Nhật/Hàn hiện thành hộp vuông □□?

A: Bạn chưa chọn font hỗ trợ CJK. Thêm \setmainfont{STSong} (hoặc font CJK khác) vào đầu code TikZ. Font mặc định (Latin Modern) không có ký tự CJK.

Q: Làm sao để yêu cầu thêm package mới vào hệ thống?

A: Truy cập trang /packages → Cuộn xuống phần "Yêu cầu Package mới" → Click "Gửi yêu cầu Package" → Điền form với thông tin package cần thiết. Hệ thống giới hạn 3 yêu cầu/giờ.

Q: Mất bao lâu để yêu cầu package được xử lý?

A: Tùy vào mức độ ưu tiên:

  • Khẩn cấp: 1-2 ngày làm việc
  • Cao: 3-5 ngày làm việc
  • Trung bình: 1-2 tuần
  • Thấp: 2-4 tuần

Bạn sẽ nhận email thông báo khi yêu cầu được xử lý.

Q: Tôi quên mật khẩu thì sao?

A: TikZ2SVG sử dụng Google OAuth, bạn chỉ cần đăng nhập bằng tài khoản Google của mình. Không cần nhớ mật khẩu riêng.

📞 Liên hệ và hỗ trợ

Nếu bạn có câu hỏi hoặc cần hỗ trợ:

  • Website: TikZ2SVG.com
  • Email hỗ trợ: support@tikz2svg.com
  • Báo cáo vi phạm: report@tikz2svg.com

Cảm ơn bạn đã sử dụng TikZ2SVG! 🚀
Chúc bạn có trải nghiệm tuyệt vời!