| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525 |
- import {
- packageSuggestionsForCommands,
- packageSuggestionsForEnvironments,
- } from './HumanReadableLogsPackageSuggestions'
- import getMeta from '@/utils/meta'
- function WikiLink({
- url,
- children,
- }: {
- url: string
- children: React.ReactNode
- }) {
- if (getMeta('ol-wikiEnabled')) {
- return (
- <a href={url} target="_blank" rel="noopener">
- {children}
- </a>
- )
- } else {
- return <>{children}</>
- }
- }
- type LogHint = {
- extraInfoURL?: string | null
- formattedContent: (details?: string[]) => React.ReactNode
- }
- const hints: { [ruleId: string]: LogHint } = {
- hint_misplaced_alignment_tab_character: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors/Misplaced_alignment_tab_character_%26',
- formattedContent: () => (
- <>
- You have placed an alignment tab character '&' in the wrong place. If
- you want to align something, you must write it inside an align
- environment such as \begin
- {'{align}'} … \end
- {'{align}'}, \begin
- {'{tabular}'} … \end
- {'{tabular}'}, etc. If you want to write an ampersand '&' in text, you
- must write \& instead.
- </>
- ),
- },
- hint_extra_alignment_tab_has_been_changed: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors/Extra_alignment_tab_has_been_changed_to_%5Ccr',
- formattedContent: () => (
- <>
- You have written too many alignment tabs in a table, causing one of them
- to be turned into a line break. Make sure you have specified the correct
- number of columns in your{' '}
- <WikiLink url="https://www.overleaf.com/learn/Tables">table</WikiLink>.
- </>
- ),
- },
- hint_display_math_should_end_with: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors/Display_math_should_end_with_$$',
- formattedContent: () => (
- <>
- You have forgotten a $ sign at the end of 'display math' mode. When
- writing in display math mode, you must always math write inside $$ … $$.
- Check that the number of $s match around each math expression.
- </>
- ),
- },
- hint_missing_inserted: {
- extraInfoURL: 'https://www.overleaf.com/learn/Errors/Missing_$_inserted',
- formattedContent: () => (
- <>
- <p>
- You need to enclose all mathematical expressions and symbols with
- special markers. These special markers create a ‘math mode’.
- </p>
- <p>
- Use <code>$...$</code> for inline math mode, and <code>\[...\]</code>
- or one of the mathematical environments (e.g. equation) for display
- math mode.
- </p>
- <p>
- This applies to symbols such as subscripts ( <code>_</code> ),
- integrals ( <code>\int</code> ), Greek letters ( <code>\alpha</code>,{' '}
- <code>\beta</code>, <code>\delta</code> ) and modifiers{' '}
- <code>{'(\\vec{x}'}</code>, <code>{'\\tilde{x}'})</code>.
- </p>
- </>
- ),
- },
- hint_reference_undefined: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors/There_were_undefined_references',
- formattedContent: () => (
- <>
- You have referenced something which has not yet been labelled. If you
- have labelled it already, make sure that what is written inside \ref
- {'{...}'} is the same as what is written inside \label
- {'{...}'}.
- </>
- ),
- },
- hint_there_were_undefined_references: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors/There_were_undefined_references',
- formattedContent: () => (
- <>
- You have referenced something which has not yet been labelled. If you
- have labelled it already, make sure that what is written inside \ref
- {'{...}'} is the same as what is written inside \label
- {'{...}'}.
- </>
- ),
- },
- hint_citation_on_page_undefined_on_input_line: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors/Citation_XXX_on_page_XXX_undefined_on_input_line_XXX',
- formattedContent: () => (
- <>
- You have cited something which is not included in your bibliography.
- Make sure that the citation (\cite
- {'{...}'}) has a corresponding key in your bibliography, and that both
- are spelled the same way.
- </>
- ),
- },
- hint_label_multiply_defined_labels: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors/There_were_multiply-defined_labels',
- formattedContent: () => (
- <>
- You have used the same label more than once. Check that each \label
- {'{...}'} labels only one item.
- </>
- ),
- },
- hint_float_specifier_changed: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors/%60!h%27_float_specifier_changed_to_%60!ht%27',
- formattedContent: () => (
- <>
- The float specifier 'h' is too strict of a demand for LaTeX to place
- your float in a nice way here. Try relaxing it by using 'ht', or even
- 'htbp' if necessary. If you want to try keep the float here anyway,
- check out the{' '}
- <WikiLink url="https://www.overleaf.com/learn/Positioning_of_Figures">
- float package
- </WikiLink>
- .
- </>
- ),
- },
- hint_no_positions_in_optional_float_specifier: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors/No_positions_in_optional_float_specifier',
- formattedContent: () => (
- <>
- You have forgotten to include a float specifier, which tells LaTeX where
- to position your figure. To fix this, either insert a float specifier
- inside the square brackets (e.g. \begin
- {'{figure}'}
- [h]), or remove the square brackets (e.g. \begin
- {'{figure}'}
- ). Find out more about float specifiers{' '}
- <WikiLink url="https://www.overleaf.com/learn/Positioning_of_Figures">
- here
- </WikiLink>
- .
- </>
- ),
- },
- hint_undefined_control_sequence: {
- formattedContent: details => {
- if (details?.length) {
- const command = details[0]
- const suggestion = packageSuggestionsForCommands.get(command)
- if (suggestion) {
- return (
- <>
- <p>
- We think you’ve got a missing package! The{' '}
- <code>{command}</code> command won't work unless you include
- <code>{suggestion.command}</code> in your{' '}
- <WikiLink url="https://www.overleaf.com/learn/latex/Learn_LaTeX_in_30_minutes#The_preamble_of_a_document">
- document preamble
- </WikiLink>
- .{' '}
- <WikiLink url="https://www.overleaf.com/learn/latex/Learn_LaTeX_in_30_minutes#Finding_and_using_LaTeX_packages">
- Learn more about packages
- </WikiLink>
- .
- </p>
- </>
- )
- }
- }
- return (
- <>
- The compiler is having trouble understanding a command you have used.
- Check that the command is spelled correctly. If the command is part of
- a package, make sure you have included the package in your preamble
- using <code>\usepackage</code>
- {'{...}'}.
- <div className="log-entry-content-link">
- <a
- href="https://www.overleaf.com/learn/Errors/Undefined_control_sequence"
- target="_blank"
- rel="noopener"
- >
- Learn more
- </a>
- </div>
- </>
- )
- },
- },
- hint_undefined_environment: {
- formattedContent: details => {
- if (details?.length) {
- const environment = details[0]
- const suggestion = packageSuggestionsForEnvironments.get(environment)
- if (suggestion) {
- return (
- <>
- <p>
- We think you’ve got a missing package! The{' '}
- <code>{environment}</code> environment won't work unless you
- include <code>{suggestion.command}</code> in your{' '}
- <WikiLink url="https://www.overleaf.com/learn/latex/Learn_LaTeX_in_30_minutes#The_preamble_of_a_document">
- document preamble
- </WikiLink>
- .{' '}
- <WikiLink url="https://www.overleaf.com/learn/latex/Learn_LaTeX_in_30_minutes#Finding_and_using_LaTeX_packages">
- Learn more about packages
- </WikiLink>
- .
- </p>
- </>
- )
- }
- }
- return (
- <>
- You have created an environment (using \begin
- {'{…}'} and \end
- {'{…}'} commands) which is not recognized. Make sure you have included
- the required package for that environment in your preamble, and that
- the environment is spelled correctly.
- <div className="log-entry-content-link">
- <a
- href="https://www.overleaf.com/learn/Errors%2FLaTeX%20Error%3A%20Environment%20XXX%20undefined"
- target="_blank"
- rel="noopener"
- >
- Learn more
- </a>
- </div>
- </>
- )
- },
- },
- hint_file_not_found: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors/File_XXX_not_found_on_input_line_XXX',
- formattedContent: () => (
- <>
- The compiler cannot find the file you want to include. Make sure that
- you have{' '}
- <WikiLink url="https://www.overleaf.com/learn/how-to/Including_images_on_Overleaf">
- uploaded the file
- </WikiLink>{' '}
- and{' '}
- <WikiLink url="https://www.overleaf.com/learn/Errors/File_XXX_not_found_on_input_line_XXX.">
- specified the file location correctly
- </WikiLink>
- .
- </>
- ),
- },
- hint_unknown_graphics_extension: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors/LaTeX_Error:_Unknown_graphics_extension:_.XXX',
- formattedContent: () => (
- <>
- The compiler does not recognise the file type of one of your images.
- Make sure you are using a{' '}
- <WikiLink url="https://www.overleaf.com/learn/Errors/LaTeX_Error:_Unknown_graphics_extension:_.gif.">
- supported image format
- </WikiLink>{' '}
- for your choice of compiler, and check that there are no periods (.) in
- the name of your image.
- </>
- ),
- },
- hint_unknown_float_option_h: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors/LaTeX_Error:_Unknown_float_option_%60H%27',
- formattedContent: () => (
- <>
- The compiler isn't recognizing the float option 'H'. Include \usepackage
- {'{float}'} in your preamble to fix this.
- </>
- ),
- },
- hint_unknown_float_option_q: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors/LaTeX_Error:_Unknown_float_option_%60q%27',
- formattedContent: () => (
- <>
- You have used a float specifier which the compiler does not understand.
- You can learn more about the different float options available for
- placing figures{' '}
- <WikiLink url="https://www.overleaf.com/learn/Positioning_of_Figures">
- here
- </WikiLink>{' '}
- .
- </>
- ),
- },
- hint_math_allowed_only_in_math_mode: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors/LaTeX_Error:_%5Cmathrm_allowed_only_in_math_mode',
- formattedContent: () => (
- <>
- You have used a font command which is only available in math mode. To
- use this command, you must be in maths mode (E.g. $ … $ or \begin
- {'{math}'} … \end
- {'{math}'}
- ). If you want to use it outside of math mode, use the text version
- instead: \textrm, \textit, etc.
- </>
- ),
- },
- hint_mismatched_environment: {
- formattedContent: () => (
- <>
- You have used \begin
- {'{...}'} without a corresponding \end
- {'{...}'}.
- </>
- ),
- },
- hint_mismatched_brackets: {
- formattedContent: () => (
- <>You have used an open bracket without a corresponding close bracket.</>
- ),
- },
- hint_can_be_used_only_in_preamble: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors/LaTeX_Error:_Can_be_used_only_in_preamble',
- formattedContent: () => (
- <>
- You have used a command in the main body of your document which should
- be used in the preamble. Make sure that \documentclass[…]
- {'{…}'} and all \usepackage
- {'{…}'} commands are written before \begin
- {'{document}'}.
- </>
- ),
- },
- hint_missing_right_inserted: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors/Missing_%5Cright_insertede',
- formattedContent: () => (
- <>
- You have started an expression with a \left command, but have not
- included a corresponding \right command. Make sure that your \left and
- \right commands balance everywhere, or else try using \Biggl and \Biggr
- commands instead as shown{' '}
- <WikiLink url="https://www.overleaf.com/learn/Errors/Missing_%5Cright_inserted">
- here
- </WikiLink>
- .
- </>
- ),
- },
- hint_double_superscript: {
- extraInfoURL: 'https://www.overleaf.com/learn/Errors/Double_superscript',
- formattedContent: () => (
- <>
- You have written a double superscript incorrectly as a^b^c, or else you
- have written a prime with a superscript. Remember to include {'{and}'}{' '}
- when using multiple superscripts. Try a^
- {'{b ^ c}'} instead.
- </>
- ),
- },
- hint_double_subscript: {
- extraInfoURL: 'https://www.overleaf.com/learn/Errors/Double_subscript',
- formattedContent: () => (
- <>
- You have written a double subscript incorrectly as a_b_c. Remember to
- include {'{and}'} when using multiple subscripts. Try a_
- {'{b_c}'} instead.
- </>
- ),
- },
- hint_no_author_given: {
- extraInfoURL: 'https://www.overleaf.com/learn/Errors/No_%5Cauthor_given',
- formattedContent: () => (
- <>
- You have used the \maketitle command, but have not specified any
- \author. To fix this, include an author in your preamble using the
- \author
- {'{…}'} command.
- </>
- ),
- },
- hint_somethings_wrong_perhaps_a_missing_item: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors/LaTeX_Error:_Something%27s_wrong--perhaps_a_missing_%5Citem',
- formattedContent: () => (
- <>
- There are no entries found in a list you have created. Make sure you
- label list entries using the \item command, and that you have not used a
- list inside a table.
- </>
- ),
- },
- hint_misplaced_noalign: {
- extraInfoURL: 'https://www.overleaf.com/learn/Errors/Misplaced_%5Cnoalign',
- formattedContent: () => (
- <>
- You have used a \hline command in the wrong place, probably outside a
- table. If the \hline command is written inside a table, try including \\
- before it.
- </>
- ),
- },
- hint_no_line_here_to_end: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors/LaTeX_Error:_There%27s_no_line_here_to_end',
- formattedContent: () => (
- <>
- You have used a \\ or \newline command where LaTeX was not expecting
- one. Make sure that you only use line breaks after blocks of text, and
- be careful using linebreaks inside lists and other environments.
- </>
- ),
- },
- hint_verb_ended_by_end_of_line: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors/LaTeX_Error:_%5Cverb_ended_by_end_of_line',
- formattedContent: () => (
- <>
- You have used a \verb command incorrectly. Try replacling the \verb
- command with \begin
- {'{verbatim}'}
- …\end
- {'{verbatim}'}
- .\
- </>
- ),
- },
- hint_illegal_unit_of_measure_pt_inserted: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors%2FIllegal%20unit%20of%20measure%20(pt%20inserted)',
- formattedContent: () => (
- <>
- You have written a length, but have not specified the appropriate units
- (pt, mm, cm etc.). If you have not written a length, check that you have
- not witten a linebreak \\ followed by square brackets […] anywhere.
- </>
- ),
- },
- hint_extra_right: {
- extraInfoURL: 'https://www.overleaf.com/learn/Errors/Extra_%5Cright',
- formattedContent: () => (
- <>
- You have written a \right command without a corresponding \left command.
- Check that all \left and \right commands balance everywhere.
- </>
- ),
- },
- hint_missing_begin_document_: {
- extraInfoURL:
- 'https://www.overleaf.com/learn/Errors%2FLaTeX%20Error%3A%20Missing%20%5Cbegin%20document',
- formattedContent: () => (
- <>
- No \begin
- {'{document}'} command was found. Make sure you have included \begin
- {'{document}'} in your preamble, and that your main document is set
- correctly.
- </>
- ),
- },
- hint_mismatched_environment2: {
- formattedContent: () => (
- <>
- You have used \begin
- {'{}'} without a corresponding \end
- {'{}'}.
- </>
- ),
- },
- hint_mismatched_environment3: {
- formattedContent: () => (
- <>
- You have used \begin
- {'{}'} without a corresponding \end
- {'{}'}.
- </>
- ),
- },
- hint_mismatched_environment4: {
- formattedContent: () => (
- <>
- You have used \begin
- {'{}'} without a corresponding \end
- {'{}'}.
- </>
- ),
- },
- }
- export const ruleIds = Object.keys(hints)
- if (!getMeta('ol-wikiEnabled')) {
- Object.keys(hints).forEach(ruleId => {
- hints[ruleId].extraInfoURL = null
- })
- }
- export default hints
|