From 1db74c78abc87dbadd6b5f86234c5218acee54de Mon Sep 17 00:00:00 2001 From: fmOOmf <98671961+fmOOmf@users.noreply.github.com> Date: Thu, 9 Jun 2022 17:10:07 +0200 Subject: [PATCH] Ajout de \binom pour afficher les coefficients binomiaux (#250) --- apps/reader/tex_parser.cpp | 16 ++++++++++++++-- apps/reader/tex_parser.h | 2 ++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/apps/reader/tex_parser.cpp b/apps/reader/tex_parser.cpp index 79b9ff0e4..238e09da2 100644 --- a/apps/reader/tex_parser.cpp +++ b/apps/reader/tex_parser.cpp @@ -190,7 +190,12 @@ Layout TexParser::popCommand() { return popOverrightarrowCommand(); } } - + if (strncmp(k_binomCommand, m_text, strlen(k_binomCommand)) == 0) { + if (isCommandEnded(*(m_text + strlen(k_binomCommand)))) { + m_text += strlen(k_binomCommand); + return popBinomCommand(); + } + } for (int i = 0; i < k_NumberOfSymbols; i++) { if (strncmp(k_SymbolsCommands[i], m_text, strlen(k_SymbolsCommands[i])) == 0) { if (isCommandEnded(*(m_text + strlen(k_SymbolsCommands[i])))) { @@ -264,6 +269,13 @@ Layout TexParser::popOverrightarrowCommand() { return VectorLayout::Builder(popBlock()); } +Layout TexParser::popBinomCommand() { + Layout numerator = popBlock(); + Layout denominator = popBlock(); + BinomialCoefficientLayout b = BinomialCoefficientLayout::Builder(numerator, denominator); + return b; +} + Layout TexParser::popSymbolCommand(int SymbolIndex) { uint32_t codePoint = k_SymbolsCodePoints[SymbolIndex]; return CodePointLayout::Builder(codePoint); @@ -273,4 +285,4 @@ inline bool TexParser::isCommandEnded(char c) const { return !(c >= 'a' && c <= 'z') && !(c >= 'A' && c <= 'Z'); } -} \ No newline at end of file +} diff --git a/apps/reader/tex_parser.h b/apps/reader/tex_parser.h index ef2e30b4f..bcc539656 100644 --- a/apps/reader/tex_parser.h +++ b/apps/reader/tex_parser.h @@ -28,6 +28,7 @@ private: Layout popSqrtCommand(); Layout popSpaceCommand(); Layout popOverrightarrowCommand(); + Layout popBinomCommand(); //Symbols Layout popSymbolCommand(int SymbolIndex); @@ -47,6 +48,7 @@ private: static constexpr char const * k_sqrtCommand = "sqrt"; static constexpr char const * k_spaceCommand = "space"; static constexpr char const * k_overrightArrowCommand = "overrightarrow"; + static constexpr char const * k_binomCommand = "binom"; }; }