Skip to content

Commit d979b40

Browse files
Add LaTeX expressions using Mathjax lib
1 parent 175eedf commit d979b40

File tree

6 files changed

+42
-3
lines changed

6 files changed

+42
-3
lines changed

frontend/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ declare global {
149149
taskSettings?: any,
150150
initBlocklySubTask?: () => void,
151151
instructionsPostProcessing?: (() => void)[],
152+
MathJax: any,
152153
}
153154
}
154155

frontend/submission/task_platform.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ export function getTaskDataFromTaskSettings(taskSettings: any) {
123123
return taskData;
124124
}
125125

126-
export function getServerTaskFromTaskData(taskData: any, task: TaskServer = null) {
126+
export function getServerTaskFromTaskData(taskData: any, task: TaskServer = null): Task {
127127
if (taskData.data) {
128128
taskData.gridInfos.allowClientExecution = true;
129129
}
@@ -136,6 +136,16 @@ export function getServerTaskFromTaskData(taskData: any, task: TaskServer = null
136136
if (window.PEMTaskMetaData.supportedLanguages) {
137137
taskData.supportedLanguages = window.PEMTaskMetaData.supportedLanguages.join(',');
138138
}
139+
if (window.PEMTaskMetaData.useLatex) {
140+
taskData.useLatex = !!window.PEMTaskMetaData.useLatex;
141+
}
142+
}
143+
144+
if (task.useLatex) {
145+
taskData.gridInfos.importModules = [
146+
...(taskData.gridInfos.importModules ?? []),
147+
'mathjax',
148+
];
139149
}
140150

141151
return {

frontend/task/instructions/instructions.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,7 @@
4646
.task-instructions-video.is-not-shown {
4747
cursor: pointer;
4848
}
49+
50+
.mjx-chtml {
51+
font-size: 100% !important;
52+
}

frontend/task/libs/import_modules.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,27 @@ export function loadFonts(theme: string, task: Task|null) {
361361
}
362362
}
363363

364+
let mathJaxConfigured = false;
365+
export function loadMathJax() {
366+
if (mathJaxConfigured) {
367+
return;
368+
}
369+
370+
window.MathJax.Hub.Config({
371+
tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]},
372+
messageStyle: "none",
373+
});
374+
window.MathJax.Hub.processSectionDelay = 0;
375+
376+
window.instructionsPostProcessing = [
377+
...(window.instructionsPostProcessing ?? []),
378+
() => {
379+
window.MathJax.Hub.Queue(['Typeset', window.MathJax.Hub]);
380+
},
381+
];
382+
mathJaxConfigured = true;
383+
}
384+
364385
export function getJsLibLoaded() {
365386
return jsLibLoaded;
366387
}

frontend/task/libs/quickalgo_library_factory.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import {appSelect} from '../../hooks';
22
import {quickAlgoLibraries} from './quick_algo_libraries_model';
33
import log from 'loglevel';
44
import {extractLevelSpecific, extractVariantSpecific} from '../utils';
5-
import {call, put, select} from 'typed-redux-saga';
6-
import {importModules, importPlatformModules, loadFonts} from './import_modules';
5+
import {call, put} from 'typed-redux-saga';
6+
import {importModules, importPlatformModules, loadFonts, loadMathJax} from './import_modules';
77
import {SmartContractLib} from './smart_contract/smart_contract_lib';
88
import {DefaultQuickalgoLibrary} from './default_quickalgo_library';
99
import {PrinterLib} from './printer/printer_lib';
@@ -81,6 +81,8 @@ export function* createQuickalgoLibrary(platformAlreadyChanged: boolean = false)
8181
yield* call(importModules, levelGridInfos.importModules, window.modulesPath);
8282
}
8383
}
84+
85+
yield* call(loadMathJax);
8486
yield* call(loadFonts, state.options.theme, currentTask);
8587

8688
// Reset fully local strings when creating a new context to avoid keeping strings from an other language

frontend/task/task_types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ export interface TaskNormalized {
164164
author: string,
165165
showLimits: boolean,
166166
userTests: boolean,
167+
useLatex: boolean,
167168
isEvaluable: boolean,
168169
scriptAnimation: string,
169170
hasSubtasks: boolean,

0 commit comments

Comments
 (0)