X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FEncoding.h;h=b57ad7aa08f1aca65959ebbd5ea0b45bdaf96218;hb=5170489b983c08c8be8d878996710eb0f6db2679;hp=f955fa966ace9f0585769aca497d2678c2bb24f0;hpb=411b7a1dec437a8a4416af13f5a8bbb39f2cbd70;p=lyx.git diff --git a/src/Encoding.h b/src/Encoding.h index f955fa966a..b57ad7aa08 100644 --- a/src/Encoding.h +++ b/src/Encoding.h @@ -67,6 +67,8 @@ public: std::string const & iconvName() const { return iconvName_; } /// bool const & hasFixedWidth() const { return fixedwidth_; } + /// \p c is representable in this encoding without a LaTeX macro + bool encodable(char_type c) const; /** * Convert \p c to something that LaTeX can understand. * This is either the character itself (if it is representable @@ -74,8 +76,23 @@ public: * If the character is not representable in this encoding, but no * LaTeX macro is known, a warning is given of lyxerr, and the * character is returned. + * \return the converted character and a flag indicating whether + * the command needs to be terminated by {} or a space. */ - docstring latexChar(char_type c, bool for_mathed = false) const; + std::pair latexChar(char_type c) const; + /** + * Convert \p input to something that LaTeX can understand. + * This is either the string itself (if it is representable + * in this encoding), or a LaTeX macro. + * If a character is not representable in this encoding, but no + * LaTeX macro is known, a warning is given of lyxerr, and the + * character is returned in the second string of the pair and + * omitted in the first. + * \p dryrun specifies whether the string is used within source + * preview (which yields a special warning). + */ + std::pair latexString(docstring const input, + bool dryrun = false) const; /// Which LaTeX package handles this encoding? Package package() const { return package_; } /// A list of all characters usable in this encoding @@ -172,6 +189,8 @@ public: static char_type transformChar(char_type c, LetterForm form); /// Is this a combining char? static bool isCombiningChar(char_type c); + /// Return the TIPA shortcut + static std::string const TIPAShortcut(char_type c); /** * Is this a known char from some language? * If \p preamble is empty and code point \p c is known to belong @@ -220,19 +239,26 @@ public: /** * Initialize mathcmd, textcmd, and mathsym sets. */ - static void initUnicodeMath(Buffer const & buffer, bool clear_sets = true); + static void initUnicodeMath(Buffer const & buffer, bool for_master = true); /** * If \p c cannot be encoded in the given \p encoding, convert * it to something that LaTeX can understand in mathmode. + * \p needsTermination indicates whether the command needs to be + * terminated by {} or a space. * \return whether \p command is a mathmode command */ static bool latexMathChar(char_type c, bool mathmode, - Encoding const * encoding, docstring & command); + Encoding const * encoding, docstring & command, + bool & needsTermination); /** * Convert the LaTeX command in \p cmd to the corresponding unicode - * point and set \p combining to true if it is a combining symbol + * point and set \p combining to true if it is a combining symbol. + * \p needsTermination indicates whether the command needs to be + * terminated by {} or a space. */ - static char_type fromLaTeXCommand(docstring const & cmd, bool & combining); + static char_type fromLaTeXCommand(docstring const & cmd, int cmdtype, + bool & combining, bool & needsTermination, + std::set * req = 0); /// enum LatexCmd { /// @@ -247,9 +273,12 @@ public: * unconverted commands are returned in \p rem. * The \p cmdtype parameter can be used to limit recognized * commands to math or text mode commands only. + * \p needsTermination indicates whether the command needs to be + * terminated by {} or a space. */ - static docstring fromLaTeXCommand(docstring const & cmd, - docstring & rem, int cmdtype = MATH_CMD | TEXT_CMD); + static docstring fromLaTeXCommand(docstring const & cmd, int cmdtype, + bool & needsTermination, docstring & rem, + std::set * req = 0); /** * Add the preamble snippet needed for the output of \p c to * \p features.