增加渲染方式

This commit is contained in:
JackLee 2025-03-09 19:59:23 +08:00
parent 8874cf2462
commit 2dde514696
6 changed files with 30 additions and 13 deletions

View File

@ -23,6 +23,7 @@ void ctaiHistoryTextEdit::init_layout(msg_type msg_type_mode)
main_layout->setSpacing(1);
main_layout->setContentsMargins(0, 0, 0, 0);
setLayout(main_layout);
set_default_opts();
connect_signals(msg_type_mode);
}
void ctaiHistoryTextEdit::init_msg_line()
@ -108,6 +109,9 @@ void ctaiHistoryTextEdit::init_msg_header_layout(msg_type msg_type_mode)
header_layout->addLayout(header_info_layout);
}
}
void ctaiHistoryTextEdit::set_default_opts(){
m_msg_history->setFont(QFont(m_font,m_font_size));
}
void ctaiHistoryTextEdit::connect_signals(msg_type msg_type_mode)
{
if (msg_type_mode == SYSTEM)
@ -206,11 +210,16 @@ void ctaiHistoryTextEdit::on_display_changed(QString mode)
{
m_msg_history->setText(m_current_content);
}
else if (mode == "LaTeX Markdown")
else if (mode == "HTML源码")
{
m_msg_history->setHtml(m_math_convert->replace_tags_svg(m_current_content));
}else if(mode == "HTML渲染"){
}else if(mode == "Markdown源码"){
}else if(mode == "Markdown渲染"){
m_msg_history->setMarkdown(m_math_convert->replace_tags_svg(m_current_content,m_font_size));
qDebug() << "LaTeX Markdown:" << m_msg_history->toMarkdown();
qDebug() << "Html:" << m_msg_history->toHtml();
}
}
// tokens按钮实现功能的槽函数

View File

@ -80,6 +80,7 @@ signals:
private:
void connect_signals(msg_type msg_type_mode); // 连接信号和槽
void set_default_opts();
private:
ctaiMathConvert *m_math_convert;
QFrame *msg_line;
@ -118,8 +119,12 @@ private:
QString m_msg_sned_id = {};
// 本次信息
QString m_current_content;
QString m_font = "Arial";
int m_font_size = 8;
//默认字体跟随软件全局字体
QString m_font = sui_font_table[sui_config.font];//"Arial";
//粗体字
bool m_bold=false;
//字号大小
int m_font_size = 14;
QSpacerItem *bottom_spacer = new QSpacerItem(0, 0, QSizePolicy::Fixed, QSizePolicy::Expanding);
};

View File

@ -63,6 +63,8 @@ void ctaiHistoryTools::initDisplayMode()
for(auto str:sui_font_table){
m_msg_display_font_combobox->addItem(str);
}
m_msg_display_font_size_combobox->setCurrentIndex(5);
m_msg_display_font_combobox->setCurrentIndex(sui_config.font);
}
void ctaiHistoryTools::initConnect()
{

View File

@ -40,7 +40,7 @@ private:
QAction *m_msg_save_markdown = {};
QAction *m_msg_save_pdf = {};
QSpacerItem *sparcer_item = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Fixed);
QStringList ds_mode_str={"原始文本","LaTeX Markdown"};
QStringList ds_mode_str={"原始文本","HTML源码","HTML渲染","Markdown源码","Markdown渲染"};
QStringList ds_font_size_str={"4","6","8","10","12","14","16","18","20"};
private:

View File

@ -69,8 +69,9 @@ QString ctaiMathConvert::clean_latex_for_mula(const QString &formula)
return result;
}
QString ctaiMathConvert::replace_tags_svg(const QString &text)
QString ctaiMathConvert::replace_tags_svg(const QString &text,int font_size)
{
m_text_size=font_size;
//QString result("4566545646\\[\n f'(a) = \\lim_{h \\to 0} \\frac{f(a + h) - f(a)}{h}\n \\]654564646");
QString result=text;
// 使用改进的正则表达式模式
@ -100,12 +101,12 @@ QString ctaiMathConvert::replace_tags_svg(const QString &text)
debug_latex_match(result, match);
// 清理和转换公式
//QString cleanFormula = clean_latex_for_mula(matchedText);
//QString svg_markdown = markdown_base + math_convert_svg(matchedText) + ")";
QString svg_html = html_base + math_convert_svg(matchedText) + "/>";
QString svg_markdown = markdown_base + math_convert_svg(matchedText) + ")";
//QString svg_html = html_base + math_convert_svg(matchedText) + "/>";
// 保存替换信息
replacements.prepend({match.capturedStart(), match.capturedLength()});
//svgResults.prepend(svg_markdown);
svgResults.prepend(svg_html);
svgResults.prepend(svg_markdown);
//svgResults.prepend(svg_html);
}
// 从后向前执行替换,避免位置改变影响

View File

@ -42,7 +42,7 @@ class ctaiMathConvert :public QObject
public:
explicit ctaiMathConvert();
~ctaiMathConvert();
QString replace_tags_svg(const QString &text);
QString replace_tags_svg(const QString &text,int font_size);
void set_convert_opts();
void save_svg(QPixmap& img);
@ -53,7 +53,7 @@ private:
QByteArray svg_to_base64(QPixmap& pix);
TexGuard texGuard;
//宽度
int m_render_width=300;
int m_render_width=600;
int m_render_height=64;
//文本大小
int m_text_size=20;