> ## Documentation Index
> Fetch the complete documentation index at: https://resources.latex-cloud-studio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Writing a Research Paper in LaTeX

> Write academic research papers in LaTeX. Learn structure, citations, formatting, and submission preparation for journals and conferences.

export const RenderedOutput = ({title = "Rendered output", ctaHref, ctaLabel = "Open LaTeX Cloud Studio", children}) => {
  const [isExpanded, setIsExpanded] = useState(false);
  const trackEditorCta = () => {
    const target = new URL(ctaHref, window.location.href);
    globalThis.posthog?.capture?.("docs_app_cta_clicked", {
      source_page: window.location.pathname,
      source_section: "rendered_output",
      cta_variant: "first_compiled_example",
      target_url: target.toString(),
      target_utm_source: target.searchParams.get("utm_source"),
      target_utm_medium: target.searchParams.get("utm_medium"),
      target_utm_campaign: target.searchParams.get("utm_campaign"),
      target_utm_content: target.searchParams.get("utm_content")
    }, {
      transport: "sendBeacon",
      send_instantly: true
    });
  };
  return <details className="rendered-output" onToggle={event => setIsExpanded(event.currentTarget.open)}>
      <summary className="rendered-output__summary">
        <span className="rendered-output__title">{title}</span>
        <span className="rendered-output__hint" aria-hidden="true">View compiled result</span>
      </summary>
      {isExpanded && <div className="rendered-output__content">
          {children}
          {ctaHref && <aside className="rendered-output__cta" aria-label="Continue in the LaTeX editor">
              <span>
                <strong>Ready to use this syntax?</strong>
                Continue in the browser editor when you want to adapt the example in a real project.
              </span>
              <a href={ctaHref} onClick={trackEditorCta}>{ctaLabel}<span aria-hidden="true"> →</span></a>
            </aside>}
        </div>}
    </details>;
};

export const LatexSource = ({filename, source}) => {
  const [copyStatus, setCopyStatus] = useState("Copy");
  const copySource = async () => {
    try {
      await navigator.clipboard.writeText(source);
      setCopyStatus("Copied");
    } catch {
      setCopyStatus("Select and copy");
    }
  };
  return <figure className="latex-source">
      <figcaption className="latex-source__header">
        <span className="latex-source__filename">{filename}</span>
        <button type="button" className="latex-source__copy" onClick={copySource} aria-live="polite">
          {copyStatus}
        </button>
      </figcaption>
      <pre className="latex-source__pre" aria-label={`LaTeX source: ${filename}`} tabIndex="0">
        <code className="language-latex">{source}</code>
      </pre>
    </figure>;
};

export const LatexPreview = ({src, alt, caption, width, height}) => {
  const minZoom = 1;
  const maxZoom = 3;
  const zoomStep = 0.5;
  const measureSvgContent = async (assetSrc, pageWidth, pageHeight) => {
    const cacheKey = "__latexCloudSvgContentBoxCache";
    const contentBoxCache = globalThis[cacheKey] ?? new Map();
    globalThis[cacheKey] = contentBoxCache;
    if (contentBoxCache.has(assetSrc)) return contentBoxCache.get(assetSrc);
    const measurement = (async () => {
      const assetUrl = new URL(assetSrc, window.location.href);
      if (assetUrl.origin !== window.location.origin) {
        throw new Error("Rendered output must use a same-origin SVG asset.");
      }
      const response = await fetch(assetUrl, {
        credentials: "same-origin"
      });
      if (!response.ok) throw new Error(`Rendered output request failed with ${response.status}.`);
      const source = await response.text();
      const documentNode = new DOMParser().parseFromString(source, "image/svg+xml");
      if (documentNode.querySelector("parsererror")) throw new Error("Rendered output is not valid SVG.");
      const sourceSvg = documentNode.documentElement;
      sourceSvg.querySelectorAll("script, foreignObject").forEach(node => node.remove());
      [sourceSvg, ...sourceSvg.querySelectorAll("*")].forEach(node => {
        [...node.attributes].forEach(attribute => {
          if ((/^on/i).test(attribute.name)) node.removeAttribute(attribute.name);
          if ((attribute.name === "href" || attribute.name === "xlink:href") && !attribute.value.startsWith("#")) {
            node.removeAttribute(attribute.name);
          }
        });
      });
      const measurementHost = document.createElement("div");
      measurementHost.className = "latex-preview__measurement-host";
      const measuredSvg = document.importNode(sourceSvg, true);
      measuredSvg.setAttribute("aria-hidden", "true");
      measurementHost.appendChild(measuredSvg);
      document.body.appendChild(measurementHost);
      try {
        const measuredElements = [...measuredSvg.children].filter(node => !["defs", "desc", "metadata", "style", "title"].includes(node.tagName.toLowerCase()));
        const elementBounds = measuredElements.map(node => node.getBBox()).filter(box => [box.x, box.y, box.width, box.height].every(Number.isFinite) && box.width > 0 && box.height > 0);
        if (elementBounds.length === 0) {
          throw new Error("Rendered output has no measurable visible content.");
        }
        const sortedBounds = [...elementBounds].sort((left, right) => left.y - right.y);
        const clusterGap = pageHeight * 0.045;
        const clusters = [];
        sortedBounds.forEach(box => {
          const current = clusters[clusters.length - 1];
          if (!current || box.y - current.bottom > clusterGap) {
            clusters.push({
              boxes: [box],
              bottom: box.y + box.height
            });
            return;
          }
          current.boxes.push(box);
          current.bottom = Math.max(current.bottom, box.y + box.height);
        });
        const contentClusters = clusters.filter(cluster => {
          const clusterBox = cluster.boxes.reduce((combined, box) => {
            const right = Math.max(combined.x + combined.width, box.x + box.width);
            const bottom = Math.max(combined.y + combined.height, box.y + box.height);
            const x = Math.min(combined.x, box.x);
            const y = Math.min(combined.y, box.y);
            return {
              x,
              y,
              width: right - x,
              height: bottom - y
            };
          });
          const centerY = clusterBox.y + clusterBox.height / 2;
          const isMarginFurniture = cluster.boxes.length <= 2 && clusterBox.width < pageWidth * 0.2 && clusterBox.height < pageHeight * 0.04 && (centerY < pageHeight * 0.08 || centerY > pageHeight * 0.8);
          return !isMarginFurniture;
        });
        const visibleBounds = (contentClusters.length > 0 ? contentClusters : clusters).flatMap(cluster => cluster.boxes);
        const bounds = visibleBounds.reduce((combined, box) => {
          const right = Math.max(combined.x + combined.width, box.x + box.width);
          const bottom = Math.max(combined.y + combined.height, box.y + box.height);
          const x = Math.min(combined.x, box.x);
          const y = Math.min(combined.y, box.y);
          return {
            x,
            y,
            width: right - x,
            height: bottom - y
          };
        });
        const clampValue = (value, minimum, maximum) => Math.min(maximum, Math.max(minimum, value));
        const padding = Math.max(8, Math.min(pageWidth, pageHeight) * 0.025);
        const x = clampValue(bounds.x - padding, 0, pageWidth);
        const y = clampValue(bounds.y - padding, 0, pageHeight);
        const right = clampValue(bounds.x + bounds.width + padding, 0, pageWidth);
        const bottom = clampValue(bounds.y + bounds.height + padding, 0, pageHeight);
        return {
          x,
          y,
          width: right - x,
          height: bottom - y
        };
      } finally {
        measurementHost.remove();
      }
    })();
    contentBoxCache.set(assetSrc, measurement);
    measurement.catch(() => contentBoxCache.delete(assetSrc));
    return measurement;
  };
  const renderPreviewAsset = ({contentBox: assetContentBox, loading}) => {
    if (!assetContentBox) {
      return <img className="latex-preview__asset" src={src} alt={alt} width={width} height={height} loading={loading} draggable="false" />;
    }
    return <svg className="latex-preview__asset" viewBox={`${assetContentBox.x} ${assetContentBox.y} ${assetContentBox.width} ${assetContentBox.height}`} preserveAspectRatio="xMidYMid meet" role="img" aria-label={alt}>
        <image href={src} x="0" y="0" width={width} height={height} />
      </svg>;
  };
  const [isOpen, setIsOpen] = useState(false);
  const [frameMode, setFrameMode] = useState("content");
  const [viewMode, setViewMode] = useState("fit");
  const [zoom, setZoom] = useState(minZoom);
  const [contentBox, setContentBox] = useState(null);
  const [measurementStatus, setMeasurementStatus] = useState("loading");
  const dialogRef = useRef(null);
  const closeButtonRef = useRef(null);
  const viewportRef = useRef(null);
  const previousFocusRef = useRef(null);
  const dragRef = useRef(null);
  useEffect(() => {
    let isCurrent = true;
    setMeasurementStatus("loading");
    measureSvgContent(src, width, height).then(box => {
      if (!isCurrent) return;
      setContentBox(box);
      setMeasurementStatus("ready");
    }).catch(() => {
      if (!isCurrent) return;
      setContentBox(null);
      setFrameMode("page");
      setMeasurementStatus("error");
    });
    return () => {
      isCurrent = false;
    };
  }, [height, src, width]);
  const closeViewer = useCallback(() => {
    setIsOpen(false);
  }, []);
  const openViewer = () => {
    previousFocusRef.current = document.activeElement;
    setFrameMode(contentBox ? "content" : "page");
    setViewMode("fit");
    setZoom(minZoom);
    setIsOpen(true);
  };
  const applyZoom = useCallback(nextZoom => {
    const boundedZoom = Math.min(maxZoom, Math.max(minZoom, nextZoom));
    setViewMode("custom");
    setZoom(boundedZoom);
  }, []);
  const zoomIn = useCallback(() => {
    applyZoom(viewMode === "fit" ? minZoom + zoomStep : zoom + zoomStep);
  }, [applyZoom, viewMode, zoom]);
  const zoomOut = useCallback(() => {
    applyZoom(viewMode === "fit" ? minZoom : zoom - zoomStep);
  }, [applyZoom, viewMode, zoom]);
  useEffect(() => {
    if (!isOpen) return undefined;
    const previousOverflow = document.body.style.overflow;
    document.body.style.overflow = "hidden";
    closeButtonRef.current?.focus();
    return () => {
      document.body.style.overflow = previousOverflow;
      previousFocusRef.current?.focus?.();
    };
  }, [isOpen]);
  useEffect(() => {
    if (!isOpen) return undefined;
    const handleKeyDown = event => {
      if (event.key === "Escape") {
        event.preventDefault();
        closeViewer();
        return;
      }
      if ((event.key === "+" || event.key === "=") && !event.metaKey && !event.ctrlKey) {
        event.preventDefault();
        zoomIn();
        return;
      }
      if (event.key === "-" && !event.metaKey && !event.ctrlKey) {
        event.preventDefault();
        zoomOut();
        return;
      }
      if (event.key !== "Tab" || !dialogRef.current) return;
      const focusable = [...dialogRef.current.querySelectorAll('button:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])')];
      if (focusable.length === 0) return;
      const first = focusable[0];
      const last = focusable[focusable.length - 1];
      if (event.shiftKey && document.activeElement === first) {
        event.preventDefault();
        last.focus();
      } else if (!event.shiftKey && document.activeElement === last) {
        event.preventDefault();
        first.focus();
      }
    };
    window.addEventListener("keydown", handleKeyDown);
    return () => {
      window.removeEventListener("keydown", handleKeyDown);
    };
  }, [closeViewer, isOpen, zoomIn, zoomOut]);
  const startDrag = event => {
    if (event.button !== 0 || !viewportRef.current) return;
    const viewport = viewportRef.current;
    dragRef.current = {
      pointerId: event.pointerId,
      x: event.clientX,
      y: event.clientY,
      scrollLeft: viewport.scrollLeft,
      scrollTop: viewport.scrollTop
    };
    viewport.setPointerCapture(event.pointerId);
    viewport.dataset.dragging = "true";
  };
  const continueDrag = event => {
    const drag = dragRef.current;
    const viewport = viewportRef.current;
    if (!drag || !viewport || drag.pointerId !== event.pointerId) return;
    viewport.scrollLeft = drag.scrollLeft - (event.clientX - drag.x);
    viewport.scrollTop = drag.scrollTop - (event.clientY - drag.y);
  };
  const stopDrag = event => {
    const viewport = viewportRef.current;
    if (viewport?.hasPointerCapture(event.pointerId)) viewport.releasePointerCapture(event.pointerId);
    if (viewport) delete viewport.dataset.dragging;
    dragRef.current = null;
  };
  const activeContentBox = frameMode === "content" ? contentBox : null;
  const activeWidth = activeContentBox?.width ?? width;
  const activeHeight = activeContentBox?.height ?? height;
  const activeRatio = activeWidth / activeHeight;
  const inlineContentBox = measurementStatus === "ready" ? contentBox : null;
  const inlineWidth = inlineContentBox?.width ?? width;
  const inlineHeight = inlineContentBox?.height ?? height;
  const inlineGeometry = {
    aspectRatio: `${inlineWidth} / ${inlineHeight}`,
    maxWidth: `${30 * inlineWidth / inlineHeight}rem`
  };
  const imageStyle = viewMode === "fit" ? {
    aspectRatio: `${activeWidth} / ${activeHeight}`,
    width: "100%",
    maxWidth: `${Math.max(16, activeRatio * 78)}dvh`
  } : {
    aspectRatio: `${activeWidth} / ${activeHeight}`,
    width: `${zoom * 100}%`,
    maxWidth: "none"
  };
  const zoomLabel = viewMode === "fit" ? frameMode === "content" ? "Fit content" : "Full page" : `${Math.round(zoom * 100)}%`;
  return <figure className="latex-preview">
      <button type="button" className="latex-preview__trigger" onClick={openViewer} aria-haspopup="dialog" aria-label={`Open zoomable preview: ${alt}`}>
        <span className="latex-preview__page" style={inlineGeometry}>
          {measurementStatus === "loading" ? <span className="latex-preview__loading" role="status">Preparing compiled output…</span> : renderPreviewAsset({
    src,
    alt,
    width,
    height,
    contentBox: inlineContentBox,
    loading: "lazy"
  })}
        </span>
        <span className="latex-preview__trigger-label" aria-hidden="true">
          <span className="latex-preview__trigger-icon">⌕</span>
          Open viewer
        </span>
      </button>
      <figcaption className="latex-preview__caption">
        <span>
          {caption}
          {measurementStatus === "error" && <span className="latex-preview__status" role="status"> Content fit is unavailable; the complete vector page is shown.</span>}
        </span>
        <a href={src} target="_blank" rel="noreferrer" className="latex-preview__source-link">Open SVG</a>
      </figcaption>

      {isOpen && <div className="latex-preview__backdrop" onMouseDown={event => {
    if (event.target === event.currentTarget) closeViewer();
  }}>
          <section ref={dialogRef} className="latex-preview__dialog" role="dialog" aria-modal="true" aria-label={`Rendered LaTeX viewer: ${alt}`}>
            <header className="latex-preview__toolbar">
              <div className="latex-preview__identity">
                <span className="latex-preview__eyebrow">Compiled LaTeX</span>
                <span className="latex-preview__filename">{alt}</span>
              </div>
              <div className="latex-preview__controls" aria-label="Preview controls">
                <button type="button" className={frameMode === "content" && viewMode === "fit" ? "is-active" : undefined} disabled={!contentBox} onClick={() => {
    setFrameMode("content");
    setViewMode("fit");
    setZoom(minZoom);
  }}>
                  Fit content
                </button>
                <button type="button" className={frameMode === "page" && viewMode === "fit" ? "is-active" : undefined} onClick={() => {
    setFrameMode("page");
    setViewMode("fit");
    setZoom(minZoom);
  }}>
                  Full page
                </button>
                <span className="latex-preview__zoom-group">
                  <button type="button" onClick={zoomOut} disabled={viewMode === "fit" || zoom <= minZoom} aria-label="Zoom out">−</button>
                  <output aria-live="polite" aria-label="Current zoom">{zoomLabel}</output>
                  <button type="button" onClick={zoomIn} disabled={viewMode !== "fit" && zoom >= maxZoom} aria-label="Zoom in">+</button>
                </span>
                <a href={src} target="_blank" rel="noreferrer">Open SVG</a>
                <button ref={closeButtonRef} type="button" className="latex-preview__close" onClick={closeViewer} aria-label="Close rendered LaTeX viewer">
                  Close
                </button>
              </div>
            </header>
            <div ref={viewportRef} className="latex-preview__viewport" data-view-mode={viewMode} onPointerDown={startDrag} onPointerMove={continueDrag} onPointerUp={stopDrag} onPointerCancel={stopDrag}>
              <span className="latex-preview__dialog-page" style={imageStyle}>
                {renderPreviewAsset({
    src,
    alt,
    width,
    height,
    contentBox: activeContentBox
  })}
              </span>
            </div>
            <footer className="latex-preview__viewer-note">
              Compiler-generated vector output · Use +/− to zoom · Drag to pan · Esc to close
            </footer>
          </section>
        </div>}
    </figure>;
};

Master the complete workflow for writing professional research papers in LaTeX. This guide covers paper structure, academic writing conventions, bibliography management, journal requirements, and submission preparation.

<Info>
  **Prerequisites**: Basic LaTeX knowledge, understanding of academic writing\
  **Time to complete**: 40-45 minutes\
  **Difficulty**: Intermediate to Advanced\
  **What you'll learn**: Paper structure, citations, formatting, journal templates, and submission process
</Info>

## Keep Sources And Writing In One Project

If you use LaTeX Cloud Studio for paper writing, keep the source workflow close to the manuscript instead of splitting it across disconnected tools.

<CardGroup cols={2}>
  <Card title="Knowledge Base" icon="book-open" href="/product/knowledge-base?utm_source=resources&utm_medium=internal_card&utm_campaign=research_workflow&utm_content=writing_research_paper">
    Keep project papers and reference PDFs inside the same project so they can become reusable source context.
  </Card>

  <Card title="AI Research Agent" icon="magnifying-glass" href="/product/ai-research-agent?utm_source=resources&utm_medium=internal_card&utm_campaign=research_workflow&utm_content=writing_research_paper">
    Find external literature, expand from accepted sources, and move strong evidence toward citation handoff.
  </Card>
</CardGroup>

Typical workflow:

1. Upload the core papers for the project into the knowledge base.
2. Draft the section that needs support or related-work coverage.
3. Use the research workspace to find stronger evidence, newer follow-up work, or counterarguments.
4. Accept the sources worth keeping in project memory.
5. Move accepted evidence toward bibliography and citation workflows in the manuscript.

<Warning>
  The current public knowledge-base upload flow is documented for PDF documents. Keep the public workflow description narrow unless the product UI changes.
</Warning>

## Research Paper Overview

### Standard Paper Structure

<CardGroup cols={2}>
  <Card title="Front Matter" icon="file-lines">
    Title, authors, abstract, keywords
  </Card>

  <Card title="Main Content" icon="align-left">
    Introduction, methods, results, discussion
  </Card>

  <Card title="Back Matter" icon="book-bookmark">
    Conclusions, references, appendices
  </Card>

  <Card title="Supplementary" icon="paperclip">
    Data, code, additional figures
  </Card>
</CardGroup>

### Planning Your Paper

<Tabs>
  <Tab title="Journal Article">
    <LatexSource filename="example.tex" source={"% Typical structure:\n% - Title page\n% - Abstract (150-250 words)\n% - Keywords (3-7 terms)\n% - Introduction\n% - Related Work\n% - Methodology\n% - Results\n% - Discussion\n% - Conclusion\n% - References\n% - Appendices (optional)"} />

    <RenderedOutput title="Expected effect">
      <Info>
        This is setup or structural LaTeX code. It changes available commands or document behavior, but it does not produce meaningful standalone page content by itself.
      </Info>
    </RenderedOutput>
  </Tab>

  <Tab title="Conference Paper">
    <LatexSource filename="example.tex" source={"% Common structure:\n% - Title and authors\n% - Abstract (100-200 words)\n% - Introduction\n% - Background\n% - Approach/Method\n% - Evaluation\n% - Related Work\n% - Conclusion\n% - References\n% Page limit: 6-10 pages"} />

    <RenderedOutput title="Expected effect">
      <Info>
        This is setup or structural LaTeX code. It changes available commands or document behavior, but it does not produce meaningful standalone page content by itself.
      </Info>
    </RenderedOutput>
  </Tab>

  <Tab title="Technical Report">
    <LatexSource filename="example.tex" source={"% Extended structure:\n% - Cover page\n% - Executive summary\n% - Table of contents\n% - Introduction\n% - Literature review\n% - Methodology\n% - Results\n% - Analysis\n% - Recommendations\n% - Conclusion\n% - References\n% - Appendices"} />

    <RenderedOutput title="Expected effect">
      <Info>
        This is setup or structural LaTeX code. It changes available commands or document behavior, but it does not produce meaningful standalone page content by itself.
      </Info>
    </RenderedOutput>
  </Tab>
</Tabs>

## Document Setup

### Basic Research Paper Template

<LatexSource filename="research-paper-template.tex" source={"\\documentclass[11pt, a4paper]{article}\n\n% Essential packages\n\\usepackage[utf8]{inputenc}\n\\usepackage[T1]{fontenc}\n\\usepackage{lmodern}\n\\usepackage[margin=1in]{geometry}\n\\usepackage{amsmath, amssymb, amsthm}\n\\usepackage{graphicx}\n\\usepackage{booktabs}\n\\usepackage{algorithm2e}\n\\usepackage{listings}\n\\usepackage{hyperref}\n\\usepackage{cleveref}\n\n% Bibliography\n\\usepackage[\n    backend=biber,\n    style=authoryear-comp,\n    sorting=nyt,\n    natbib=true\n]{biblatex}\n\\addbibresource{references.bib}\n\n% Custom commands\n\\newcommand{\\keywords}[1]{\\par\\noindent\\textbf{Keywords:} #1}\n\\newcommand{\\email}[1]{\\href{mailto:#1}{\\texttt{#1}}}\n\n% Theorem environments\n\\theoremstyle{definition}\n\\newtheorem{definition}{Definition}[section]\n\\newtheorem{theorem}{Theorem}[section]\n\\newtheorem{lemma}[theorem]{Lemma}\n\\newtheorem{proposition}[theorem]{Proposition}\n\\newtheorem{corollary}[theorem]{Corollary}\n\n% Document metadata\n\\title{Your Research Paper Title: A Comprehensive Study of Important Topics}\n\\author{\n    First Author\\thanks{Corresponding author}\\textsuperscript{1} \\and\n    Second Author\\textsuperscript{2} \\and\n    Third Author\\textsuperscript{1,2}\n}\n\\date{}\n\n\\begin{document}\n\n\\maketitle\n\n% Author affiliations\n\\begin{center}\n\\textsuperscript{1}Department of Computer Science, University Name\\\\\n\\textsuperscript{2}Research Institute, City, Country\\\\\n\\email{first.author&#64;university.edu}\n\\end{center}\n\n\\begin{abstract}\nThe abstract should be a self-contained summary of your paper, typically 150-250 words. It should include: (1) motivation and problem statement, (2) approach/methodology, (3) main results, and (4) conclusions. Avoid citations in the abstract.\n\\end{abstract}\n\n\\keywords{keyword1, keyword2, keyword3, keyword4, keyword5}\n\n\\section{Introduction}\n\\label{sec:introduction}\n\nThe introduction should provide context and motivate your research. Start with the broad context, narrow down to your specific problem, state your contributions clearly, and outline the paper structure.\n\n\\subsection{Motivation}\nExplain why this research is important...\n\n\\subsection{Contributions}\nOur main contributions are:\n\\begin{itemize}\n    \\item First contribution with brief description\n    \\item Second contribution with impact\n    \\item Third contribution and its novelty\n\\end{itemize}\n\n\\subsection{Paper Organization}\nThe remainder of this paper is organized as follows. \\Cref{sec:related} reviews related work. \\Cref{sec:methodology} presents our methodology. \\Cref{sec:results} shows experimental results. \\Cref{sec:discussion} discusses implications. \\Cref{sec:conclusion} concludes the paper.\n\n\\section{Related Work}\n\\label{sec:related}\n\nReview relevant literature, grouping by themes or approaches. Show how your work differs from and builds upon existing research.\n\n\\section{Methodology}\n\\label{sec:methodology}\n\nDescribe your approach in detail, allowing others to reproduce your work.\n\n\\section{Results}\n\\label{sec:results}\n\nPresent your findings objectively with appropriate visualizations.\n\n\\section{Discussion}\n\\label{sec:discussion}\n\nInterpret results, discuss limitations, and suggest future work.\n\n\\section{Conclusion}\n\\label{sec:conclusion}\n\nSummarize key findings and contributions.\n\n\\printbibliography\n\n\\appendix\n\\section{Supplementary Material}\nAdditional details, proofs, or data.\n\n\\end{document}"} />

<RenderedOutput title="Expected effect">
  <Info>
    This excerpt depends on project files such as images, bibliography data, or included TeX sources that are not part of this standalone code box. Its exact output is project-specific, so no fabricated preview is shown.
  </Info>
</RenderedOutput>

<LatexSource filename="journal-specific-template.tex" source={"% IEEE Transactions format\n\\documentclass[journal]{IEEEtran}\n\\usepackage{cite}\n\\usepackage{amsmath,amssymb,amsfonts}\n\\usepackage{algorithmic}\n\\usepackage{graphicx}\n\\usepackage{textcomp}\n\\usepackage{xcolor}\n\n\\begin{document}\n\n\\title{Paper Title for IEEE Journal}\n\n\\author{\\IEEEauthorblockN{First Author}\n\\IEEEauthorblockA{\\textit{Department Name} \\\\\n\\textit{University Name}\\\\\nCity, Country \\\\\nemail&#64;address.edu}\n\\and\n\\IEEEauthorblockN{Second Author}\n\\IEEEauthorblockA{\\textit{Company Name} \\\\\nCity, Country \\\\\nemail&#64;address.com}}\n\n\\maketitle\n\n\\begin{abstract}\nAbstract text here...\n\\end{abstract}\n\n\\begin{IEEEkeywords}\ncomponent, formatting, style, styling, insert\n\\end{IEEEkeywords}\n\n\\section{Introduction}\n\\IEEEPARstart{T}{his} is the first paragraph...\n\n\\section{Conclusion}\nThe conclusion goes here.\n\n\\bibliographystyle{IEEEtran}\n\\bibliography{IEEEabrv,references}\n\n\\end{document}"} />

<RenderedOutput title="Expected effect">
  <Info>
    This excerpt depends on project files such as images, bibliography data, or included TeX sources that are not part of this standalone code box. Its exact output is project-specific, so no fabricated preview is shown.
  </Info>
</RenderedOutput>

## Writing Best Practices

### Academic Writing Style

<LatexSource filename="academic-writing.tex" source={"% Professional academic writing conventions\n\n% Clear, concise sentences\nWe present a novel algorithm for graph analysis. % Good\nIn this paper, we are going to present and discuss\na new and novel algorithm that we developed for\nthe purpose of analyzing graphs. % Too verbose\n\n% Active voice for clarity\nWe conducted experiments... % Clear\nExperiments were conducted... % Passive, less clear\n\n% Precise language\nOur method achieves 95\\% accuracy. % Specific\nOur method works well. % Vague\n\n% Consistent terminology\n\\newcommand{\\ourmethod}{GraphNet} % Define once\nWe propose \\ourmethod{}, a neural network...\n\\ourmethod{} processes graphs efficiently...\n\n% Professional tone\nThe results demonstrate... % Professional\nThe results clearly prove that we were right... % Unprofessional"} />

<RenderedOutput title="Rendered output" ctaHref="https://app.latex-cloud-studio.com/?utm_source=resources&utm_medium=rendered_output&utm_campaign=docs_open_app&utm_content=learn_latex_how_to_writing_research_paper">
  <LatexPreview src="/images/rendered/learn-latex-how-to-writing-research-paper-06/page-1.svg" alt="Compiled PDF page 1 from academic-writing.tex" caption="Generated from the shown source with pdfLaTeX in the pinned LaTeXCloud TeX Live 2026 environment. The visible fragment is compiled inside the documented minimal article wrapper." width={595.276} height={841.89} />
</RenderedOutput>

<LatexSource filename="technical-writing.tex" source={"% Technical writing elements\n\n% Definitions\n\\begin{definition}[Graph Neural Network]\n\\label{def:gnn}\nA Graph Neural Network (GNN) is a neural network architecture designed to work directly on graph-structured data, where $G = (V, E)$ represents a graph with vertices $V$ and edges $E$.\n\\end{definition}\n\n% Algorithms\n\\begin{algorithm}[htbp]\n\\caption{Our Proposed Method}\n\\label{alg:method}\n\\KwData{Input graph $G = (V, E)$}\n\\KwResult{Processed output $Y$}\n\\ForEach{node $v \\in V$}{\n    $h_v \\leftarrow \\text{Initialize}(v)$\\;\n}\n\\For{$t = 1$ \\KwTo $T$}{\n    \\ForEach{node $v \\in V$}{\n        $h_v \\leftarrow \\text{Update}(h_v, \\{h_u : u \\in \\mathcal{N}(v)\\})$\\;\n    }\n}\n\\Return{$Y = \\text{Readout}(\\{h_v : v \\in V\\})$}\\;\n\\end{algorithm}\n\n% Mathematical notation\nWe define the loss function as:\n\\begin{equation}\n\\mathcal{L} = \\sum_{i=1}^{N} \\ell(y_i, \\hat{y}_i) + \\lambda \\|\\theta\\|_2^2\n\\label{eq:loss}\n\\end{equation}\nwhere $\\ell$ is the individual loss, $\\lambda$ is the regularization parameter, and $\\theta$ represents model parameters."} />

<RenderedOutput title="Expected effect">
  <Info>
    This code is a contextual or intentionally partial LaTeX excerpt, not a self-contained compilable document. Its visible result depends on the surrounding document, so the documentation shows the expected role without inventing a standalone preview.
  </Info>
</RenderedOutput>

### Figures and Tables

<LatexSource filename="research-figures.tex" source={"% Professional figure presentation\n\n\\begin{figure}[tbp]\n    \\centering\n    \\includegraphics[width=0.8\\columnwidth]{results-plot}\n    \\caption{Performance comparison of different methods. Our approach (red) consistently outperforms baselines across all datasets. Error bars indicate 95\\% confidence intervals over 5 runs.}\n    \\label{fig:results}\n\\end{figure}\n\n% Subfigures for comparison\n\\begin{figure}[tbp]\n    \\centering\n    \\begin{subfigure}{0.48\\columnwidth}\n        \\includegraphics[width=\\textwidth]{method-a}\n        \\caption{Baseline method}\n        \\label{fig:baseline}\n    \\end{subfigure}\n    \\hfill\n    \\begin{subfigure}{0.48\\columnwidth}\n        \\includegraphics[width=\\textwidth]{method-b}\n        \\caption{Our method}\n        \\label{fig:ourmethod}\n    \\end{subfigure}\n    \\caption{Visual comparison of processing pipelines. (a) shows the traditional approach while (b) illustrates our streamlined method.}\n    \\label{fig:comparison}\n\\end{figure}\n\n% Reference in text\nAs shown in \\cref{fig:results}, our method achieves superior performance. The visual comparison in \\cref{fig:comparison} highlights the efficiency gains."} />

<RenderedOutput title="Expected effect">
  <Info>
    This excerpt depends on project files such as images, bibliography data, or included TeX sources that are not part of this standalone code box. Its exact output is project-specific, so no fabricated preview is shown.
  </Info>
</RenderedOutput>

<LatexSource filename="research-tables.tex" source={"% Professional tables for research\n\n\\begin{table}[tbp]\n    \\centering\n    \\caption{Comparison of state-of-the-art methods on benchmark datasets}\n    \\label{tab:comparison}\n    \\begin{tabular}{lcccc}\n        \\toprule\n        Method & Dataset A & Dataset B & Dataset C & Avg. Rank \\\\\n        \\midrule\n        Baseline-1 \\citep{author2020} & 82.3±1.2 & 76.5±2.1 & 69.8±1.8 & 3.7 \\\\\n        Baseline-2 \\citep{author2021} & 84.1±0.9 & 78.2±1.5 & 71.2±1.6 & 2.7 \\\\\n        Recent-Work \\citep{author2023} & 85.7±0.8 & 79.8±1.2 & 73.5±1.4 & 2.0 \\\\\n        \\midrule\n        \\textbf{Our Method} & \\textbf{87.4±0.6} & \\textbf{81.3±1.0} & \\textbf{75.9±1.1} & \\textbf{1.0} \\\\\n        \\bottomrule\n    \\end{tabular}\n    \\begin{tablenotes}\n        \\small\n        \\item Values show accuracy ± standard deviation. Best results in bold.\n    \\end{tablenotes}\n\\end{table}\n\n% Ablation study table\n\\begin{table}[tbp]\n    \\centering\n    \\caption{Ablation study of proposed components}\n    \\label{tab:ablation}\n    \\begin{tabular}{lccc}\n        \\toprule\n        Configuration & Accuracy & F1-Score & Time (ms) \\\\\n        \\midrule\n        Full model & \\textbf{87.4} & \\textbf{0.862} & 142 \\\\\n        w/o component A & 85.1 & 0.831 & 128 \\\\\n        w/o component B & 84.8 & 0.825 & \\textbf{95} \\\\\n        w/o both A\\&B & 82.3 & 0.798 & 87 \\\\\n        \\bottomrule\n    \\end{tabular}\n\\end{table}"} />

<RenderedOutput title="Expected effect">
  <Info>
    This code is a contextual or intentionally partial LaTeX excerpt, not a self-contained compilable document. Its visible result depends on the surrounding document, so the documentation shows the expected role without inventing a standalone preview.
  </Info>
</RenderedOutput>

## Citations and References

### Bibliography Management

<CodeGroup>
  ```bibtex references.bib theme={null}
  % Well-formatted bibliography entries

  @article{smith2023deep,
      title={Deep Learning for Graph Analysis: A Comprehensive Survey},
      author={Smith, John and Doe, Jane and Johnson, Alice},
      journal={IEEE Transactions on Neural Networks and Learning Systems},
      volume={34},
      number={5},
      pages={2145--2168},
      year={2023},
      publisher={IEEE},
      doi={10.1109/TNNLS.2023.1234567}
  }

  @inproceedings{doe2022efficient,
      title={Efficient Graph Neural Networks for Large-Scale Applications},
      author={Doe, Jane and Smith, John},
      booktitle={Proceedings of the 39th International Conference on Machine Learning},
      pages={3421--3430},
      year={2022},
      organization={PMLR},
      url={https://proceedings.mlr.press/v162/doe22a.html}
  }

  @book{johnson2021graph,
      title={Graph Theory and Machine Learning},
      author={Johnson, Alice and Brown, Bob},
      year={2021},
      publisher={MIT Press},
      address={Cambridge, MA},
      edition={2nd},
      isbn={978-0-262-04567-8}
  }

  @misc{brown2023preprint,
      title={Scalable Graph Processing with Neural Networks},
      author={Brown, Bob and Wilson, Carol},
      year={2023},
      eprint={2301.12345},
      archivePrefix={arXiv},
      primaryClass={cs.LG}
  }

  @phdthesis{wilson2022thesis,
      title={Advanced Methods in Graph Neural Networks},
      author={Wilson, Carol},
      year={2022},
      school={Stanford University},
      address={Stanford, CA},
      type={{Ph.D.} dissertation}
  }
  ```

  ```latex citation-styles.tex theme={null}
  % Different citation styles and usage

  % Parenthetical citations
  Recent work has shown significant improvements \citep{smith2023deep}.
  Multiple studies confirm this \citep{doe2022efficient, johnson2021graph}.

  % Textual citations
  \citet{smith2023deep} demonstrated that graph neural networks...
  As shown by \citet{doe2022efficient}, the efficiency gains...

  % Specific page/section citations
  The theoretical foundation \citep[Chapter~3]{johnson2021graph}...
  This contradicts earlier findings \citep[pp.~123--125]{wilson2022thesis}.

  % Multiple author handling
  \citet{brown2023preprint} extend the work of \citet{smith2023deep}...

  % Citation commands for different styles
  % natbib: \citep, \citet, \citealp, \citealt
  % biblatex: \cite, \parencite, \textcite, \autocite

  % Formatting citations
  \citeauthor{smith2023deep} (\citeyear{smith2023deep}) showed...
  In \citeyear{doe2022efficient}, \citeauthor{doe2022efficient} proposed...
  ```
</CodeGroup>

<RenderedOutput title="Expected effect">
  <Info>
    This code group documents a multi-step workflow across LaTeX and another file or command language. The blocks work together in a project, so there is no single standalone LaTeX page that would honestly represent the whole group.
  </Info>
</RenderedOutput>

### Managing Citations

<LatexSource filename="citation-management.tex" source={"% Best practices for citations\n\n% Group related work\n\\subsection{Graph Neural Networks}\nEarly work on graph neural networks \\citep{early2018, another2018}\nfocused on simple architectures. Recent advances\n\\citep{smith2023deep, doe2022efficient} have dramatically\nimproved performance.\n\n% Cite primary sources\n% Bad: GNNs were introduced [survey paper]\n% Good: GNNs were introduced by \\citet{original2009}\n\n% Balance citations\nOur work builds on three main areas:\n\\begin{itemize}\n    \\item Graph theory \\citep{graph1, graph2, graph3}\n    \\item Neural networks \\citep{nn1, nn2, nn3}\n    \\item Optimization \\citep{opt1, opt2, opt3}\n\\end{itemize}\n\n% Recent and relevant\n% Aim for recent papers (last 5 years) unless citing foundational work\n% Include relevant conference and journal papers"} />

<RenderedOutput title="Expected effect">
  <Info>
    This code is a contextual or intentionally partial LaTeX excerpt, not a self-contained compilable document. Its visible result depends on the surrounding document, so the documentation shows the expected role without inventing a standalone preview.
  </Info>
</RenderedOutput>

<LatexSource filename="bibliography-formatting.tex" source={"% Bibliography formatting options\n\n% Sort by appearance\n\\usepackage[style=unsrt]{biblatex}\n\n% Sort alphabetically\n\\usepackage[style=alphabetic]{biblatex}\n\n% Compressed numeric citations [1-3] instead of [1,2,3]\n\\usepackage[style=numeric-comp]{biblatex}\n\n% Custom bibliography sections\n\\printbibliography[heading=bibintoc, title={References}]\n\n% Separate bibliographies\n\\printbibliography[type=article, title={Journal Articles}]\n\\printbibliography[type=inproceedings, title={Conference Papers}]\n\\printbibliography[type=book, title={Books}]\n\n% Filter by keywords\n\\printbibliography[keyword=experiment, title={Experimental Studies}]"} />

<RenderedOutput title="Expected effect">
  <Info>
    This code is a contextual or intentionally partial LaTeX excerpt, not a self-contained compilable document. Its visible result depends on the surrounding document, so the documentation shows the expected role without inventing a standalone preview.
  </Info>
</RenderedOutput>

## Equations and Theorems

### Mathematical Content

<LatexSource filename="mathematical-content.tex" source={"% Professional mathematical presentation\n\n% Numbered equations for important results\n\\begin{equation}\n    f(x) = \\sum_{i=1}^{n} w_i \\phi_i(x) + b\n    \\label{eq:model}\n\\end{equation}\n\n% Unnumbered for intermediate steps\n\\begin{equation*}\n    \\frac{\\partial f}{\\partial w_i} = \\phi_i(x)\n\\end{equation*}\n\n% Multi-line equations\n\\begin{align}\n    \\mathcal{L}(\\theta) &= \\frac{1}{N} \\sum_{i=1}^{N} \\ell(f_\\theta(x_i), y_i) \\label{eq:loss1}\\\\\n    &= \\frac{1}{N} \\sum_{i=1}^{N} (f_\\theta(x_i) - y_i)^2 \\label{eq:loss2}\\\\\n    &\\quad + \\lambda \\|\\theta\\|_2^2 \\label{eq:loss3}\n\\end{align}\n\n% Equation arrays for cases\n\\begin{equation}\n    \\text{ReLU}(x) = \\begin{cases}\n        x & \\text{if } x > 0 \\\\\n        0 & \\text{otherwise}\n    \\end{cases}\n    \\label{eq:relu}\n\\end{equation}\n\n% Inline math\nThe complexity is $\\mathcal{O}(n \\log n)$ where $n$ is the input size."} />

<RenderedOutput title="Rendered output">
  <LatexPreview src="/images/rendered/learn-latex-how-to-writing-research-paper-12/page-1.svg" alt="Compiled PDF page 1 from mathematical-content.tex" caption="Generated from the shown source with pdfLaTeX in the pinned LaTeXCloud TeX Live 2026 environment. The visible fragment is compiled inside the documented minimal article wrapper." width={595.276} height={841.89} />
</RenderedOutput>

<LatexSource filename="theorems-proofs.tex" source={"% Theorems and formal statements\n\n\\begin{theorem}[Convergence Guarantee]\n\\label{thm:convergence}\nLet $f: \\mathbb{R}^n \\to \\mathbb{R}$ be a $\\beta$-smooth convex function.\nThen gradient descent with step size $\\alpha \\leq 1/\\beta$ satisfies:\n\\begin{equation}\n    f(x_k) - f(x^*) \\leq \\frac{\\|x_0 - x^*\\|^2}{2\\alpha k}\n\\end{equation}\n\\end{theorem}\n\n\\begin{proof}\nBy the smoothness condition, we have...\n[detailed proof steps]\nTherefore, the bound holds.\n\\end{proof}\n\n\\begin{lemma}\n\\label{lem:helper}\nUnder the conditions of \\cref{thm:convergence}, the iterates satisfy\n$\\|x_{k+1} - x^*\\| \\leq \\|x_k - x^*\\|$.\n\\end{lemma}\n\n\\begin{proposition}\nThe algorithm terminates in $\\mathcal{O}(1/\\epsilon)$ iterations.\n\\end{proposition}\n\n\\begin{corollary}\nFor strongly convex functions, the convergence rate improves to linear.\n\\end{corollary}\n\n% Reference theorems\nAs proven in \\cref{thm:convergence}, our method converges.\nUsing \\cref{lem:helper}, we can show..."} />

<RenderedOutput title="Expected effect">
  <Info>
    This code is a contextual or intentionally partial LaTeX excerpt, not a self-contained compilable document. Its visible result depends on the surrounding document, so the documentation shows the expected role without inventing a standalone preview.
  </Info>
</RenderedOutput>

## Journal Submission

### Preparing for Submission

<LatexSource filename="submission-checklist.tex" source={"% Pre-submission checklist\n\n% 1. Check journal requirements\n% - Page limit\n% - Format (single/double column)\n% - Reference style\n% - Figure resolution (usually 300 DPI)\n\n% 2. Anonymous submission\n\\usepackage{xifthen}\n\\newboolean{anonymous}\n\\setboolean{anonymous}{true} % for review\n\n\\ifthenelse{\\boolean{anonymous}}{\n    \\author{Anonymous Authors}\n    \\thanks{Details hidden for review}\n}{\n    \\author{Real Names}\n    \\thanks{Actual affiliations}\n}\n\n% 3. Supplementary material\n% Create separate PDF with:\n% - Additional experiments\n% - Detailed proofs\n% - Extended results\n% - Code listings\n\n% 4. Cover letter template\n% Dear Editor,\n% We submit our manuscript titled \"...\" for consideration...\n% The main contributions are:\n% 1. ...\n% 2. ...\n% This work has not been published elsewhere..."} />

<RenderedOutput title="Rendered output">
  <LatexPreview src="/images/rendered/learn-latex-how-to-writing-research-paper-14/page-1.svg" alt="Compiled PDF page 1 from submission-checklist.tex" caption="Generated from the shown source with pdfLaTeX in the pinned LaTeXCloud TeX Live 2026 environment. The visible fragment is compiled inside the documented minimal article wrapper." width={595.276} height={841.89} />
</RenderedOutput>

<LatexSource filename="journal-formatting.tex" source={"% Common journal formatting requirements\n\n% Double spacing for review\n\\usepackage{setspace}\n\\doublespacing\n\n% Line numbers for review\n\\usepackage{lineno}\n\\linenumbers\n\n% Wide margins for reviewer comments\n\\geometry{margin=1.5in}\n\n% Figure placement at end\n\\usepackage[nomarkers,figuresonly]{endfloat}\n\n% Word count\n\\usepackage{wordcount}\n\\newcommand{\\wordcount}{\\detokenize{bash wc -w main.tex}}\n\n% Page limits\n\\usepackage{pageslts}\n\\pagenumbering{arabic}\n\\pagestyle{plain}\n\n% Embedded fonts\n\\pdfminorversion=4\n\\pdfobjcompresslevel=0\n\n% PDF metadata\n\\hypersetup{\n    pdfauthor={Your Name},\n    pdftitle={Paper Title},\n    pdfsubject={Subject Area},\n    pdfkeywords={keyword1, keyword2}\n}"} />

<RenderedOutput title="Expected effect">
  <Info>
    This excerpt depends on project files such as images, bibliography data, or included TeX sources that are not part of this standalone code box. Its exact output is project-specific, so no fabricated preview is shown.
  </Info>
</RenderedOutput>

### Journal Templates

<Tabs>
  <Tab title="Elsevier">
    <LatexSource filename="example.tex" source={"\\documentclass[review]{elsarticle}\n\\usepackage{natbib}\n\\usepackage{graphicx}\n\\journal{Journal Name}\n\n\\begin{document}\n\\begin{frontmatter}\n\\title{Title}\n\\author[inst1]{First Author}\n\\author[inst2]{Second Author}\n\\address[inst1]{University One}\n\\address[inst2]{University Two}\n\n\\begin{abstract}\nAbstract text...\n\\end{abstract}\n\n\\begin{keyword}\nkeyword1 \\sep keyword2\n\\end{keyword}\n\\end{frontmatter}\n\n\\section{Introduction}\nMain text...\n\n\\bibliography{refs}\n\\end{document}"} />

    <RenderedOutput title="Rendered output">
      <LatexPreview src="/images/rendered/learn-latex-how-to-writing-research-paper-16/page-1.svg" alt="Compiled PDF page 1 from example.tex" caption="Generated from the shown source with pdfLaTeX in the pinned LaTeXCloud TeX Live 2026 environment." width={612} height={792} />
    </RenderedOutput>
  </Tab>

  <Tab title="Springer">
    <LatexSource filename="example.tex" source={"\\documentclass[twocolumn]{svjour3}\n\\usepackage{graphicx}\n\n\\begin{document}\n\\title{Your Title}\n\\author{First Author \\and Second Author}\n\\institute{F. Author \\at University}\n\\date{Received: date / Accepted: date}\n\n\\maketitle\n\n\\begin{abstract}\nAbstract text...\n\\keywords{First \\and Second}\n\\end{abstract}\n\n\\section{Introduction}\n\\label{intro}\nYour text...\n\n\\bibliography{refs}\n\\end{document}"} />

    <RenderedOutput title="Expected effect">
      <Info>
        This excerpt depends on project files such as images, bibliography data, or included TeX sources that are not part of this standalone code box. Its exact output is project-specific, so no fabricated preview is shown.
      </Info>
    </RenderedOutput>
  </Tab>

  <Tab title="ACM">
    <LatexSource filename="example.tex" source={"\\documentclass[sigconf]{acmart}\n\\usepackage{graphicx}\n\n\\title{Title}\n\\author{First Author}\n\\affiliation{%\n  \\institution{University}\n  \\city{City}\n  \\country{Country}\n}\n\\email{email&#64;inst.edu}\n\n\\begin{abstract}\nAbstract...\n\\end{abstract}\n\n\\keywords{keyword1, keyword2}\n\n\\maketitle\n\n\\section{Introduction}\nText...\n\n\\bibliographystyle{ACM-Reference-Format}\n\\bibliography{refs}"} />

    <RenderedOutput title="Expected effect">
      <Info>
        This excerpt depends on project files such as images, bibliography data, or included TeX sources that are not part of this standalone code box. Its exact output is project-specific, so no fabricated preview is shown.
      </Info>
    </RenderedOutput>
  </Tab>
</Tabs>

## Responding to Reviews

### Revision Management

<LatexSource filename="tracking-changes.tex" source={"% Track changes for revision\n\n\\usepackage{changes}\n\\definechangesauthor[name={Rev1}, color=blue]{R1}\n\\definechangesauthor[name={Rev2}, color=red]{R2}\n\\definechangesauthor[name={Rev3}, color=green]{R3}\n\n% Address reviewer comments\n\\section{Introduction}\n\\added[id=R1]{We added this sentence to address Reviewer 1's concern about motivation.}\n\n\\deleted[id=R2]{This sentence was removed.}\n\\replaced[id=R2]{new text}{old text}\n\n% Highlight changes\n\\usepackage{soul}\n\\newcommand{\\revision}[1]{\\hl{#1}}\n\n% Alternative: latexdiff\n% latexdiff original.tex revised.tex > diff.tex"} />

<RenderedOutput title="Rendered output">
  <LatexPreview src="/images/rendered/learn-latex-how-to-writing-research-paper-19/page-1.svg" alt="Compiled PDF page 1 from tracking-changes.tex" caption="Generated from the shown source with pdfLaTeX in the pinned LaTeXCloud TeX Live 2026 environment. The visible fragment is compiled inside the documented minimal article wrapper." width={612} height={792} />
</RenderedOutput>

<LatexSource filename="response-letter.tex" source={"\\documentclass{article}\n\\usepackage{xcolor}\n\\usepackage{framed}\n\n% Response formatting\n\\newcommand{\\reviewer}[1]{\\subsection*{Reviewer #1}}\n\\newcommand{\\comment}[1]{%\n    \\begin{framed}\n    \\noindent\\textbf{Comment:} #1\n    \\end{framed}\n}\n\\newcommand{\\response}[1]{%\n    \\noindent\\textbf{Response:} #1\\par\\medskip\n}\n\n\\title{Response to Reviewers}\n\\date{\\today}\n\n\\begin{document}\n\\maketitle\n\nWe thank the reviewers for their valuable feedback. We have carefully addressed all comments as detailed below. Changes in the manuscript are highlighted in \\textcolor{blue}{blue}.\n\n\\reviewer{1}\n\n\\comment{The motivation is not clear in the introduction.}\n\\response{We have expanded the introduction (pages 1-2) to better explain the motivation. Specifically, we added a new paragraph discussing the practical applications and importance of our work.}\n\n\\comment{The experimental setup needs more detail.}\n\\response{We have added Section 4.1 (page 8) with comprehensive details about our experimental setup, including hardware specifications, dataset preprocessing, and hyperparameter settings.}\n\n\\reviewer{2}\n\n\\comment{How does this work compare to [Smith et al., 2023]?}\n\\response{We have added a detailed comparison with Smith et al. in Section 2.3 (page 5). Our method differs in three key aspects: (1)..., (2)..., (3)...}\n\n\\end{document}"} />

<RenderedOutput title="Rendered output">
  <LatexPreview src="/images/rendered/learn-latex-how-to-writing-research-paper-20/page-1.svg" alt="Compiled PDF page 1 from response-letter.tex" caption="Generated from the shown source with pdfLaTeX in the pinned LaTeXCloud TeX Live 2026 environment." width={612} height={792} />
</RenderedOutput>

## Best Practices Summary

<Tip>
  ✅ **Research paper checklist**:

  * [ ] Clear, descriptive title
  * [ ] Structured abstract with all components
  * [ ] Well-defined contributions
  * [ ] Comprehensive literature review
  * [ ] Reproducible methodology
  * [ ] Objective results presentation
  * [ ] Thoughtful discussion
  * [ ] Strong conclusions
  * [ ] Complete, formatted references
  * [ ] Professional figures and tables
  * [ ] Proofread thoroughly
  * [ ] Check journal requirements
  * [ ] Prepare supplementary materials
</Tip>

## Complete Example

<LatexSource filename="complete-paper-example.tex" source={"\\documentclass[10pt, conference]{IEEEtran}\n\\usepackage{cite}\n\\usepackage{amsmath,amssymb,amsfonts}\n\\usepackage{algorithmic}\n\\usepackage{graphicx}\n\\usepackage{textcomp}\n\\usepackage{xcolor}\n\\usepackage{hyperref}\n\\usepackage{cleveref}\n\n\\def\\BibTeX{{\\rm B\\kern-.05em{\\sc i\\kern-.025em b}\\kern-.08em\n    T\\kern-.1667em\\lower.7ex\\hbox{E}\\kern-.125emX}}\n\n\\begin{document}\n\n\\title{Deep Graph Neural Networks for\\\\Large-Scale Network Analysis}\n\n\\author{\\IEEEauthorblockN{Jane Doe\\textsuperscript{1}, John Smith\\textsuperscript{2}, Alice Johnson\\textsuperscript{1}}\n\\IEEEauthorblockA{\\textsuperscript{1}Department of Computer Science, University Name\\\\\n\\textsuperscript{2}AI Research Lab, Tech Company\\\\\n\\{jdoe, ajohnson\\}&#64;university.edu, jsmith&#64;company.com}}\n\n\\maketitle\n\n\\begin{abstract}\nGraph Neural Networks (GNNs) have emerged as powerful tools for analyzing graph-structured data. However, scaling GNNs to large networks remains challenging due to computational and memory constraints. In this paper, we propose ScaleGNN, a novel architecture that efficiently processes graphs with millions of nodes. Our key contributions are: (1) a hierarchical sampling strategy that preserves graph structure while reducing computational cost, (2) an adaptive aggregation mechanism that dynamically adjusts to local graph topology, and (3) a distributed training framework that enables processing of web-scale graphs. Extensive experiments on five large-scale datasets demonstrate that ScaleGNN achieves state-of-the-art performance while reducing training time by 73\\% compared to existing methods. Our code is available at \\url{https://github.com/example/scalegnn}.\n\\end{abstract}\n\n\\begin{IEEEkeywords}\ngraph neural networks, large-scale graphs, distributed learning, network analysis\n\\end{IEEEkeywords}\n\n\\section{Introduction}\n\\label{sec:intro}\n\n\\IEEEPARstart{G}{raph}-structured data is ubiquitous in modern applications, from social networks and recommendation systems to biological networks and knowledge graphs. The ability to effectively analyze these complex structures has become crucial for many domains. Traditional machine learning approaches struggle with graph data due to its irregular structure and complex dependencies.\n\nGraph Neural Networks (GNNs) \\cite{kipf2017semi} have revolutionized graph analysis by providing a principled framework for learning on graph-structured data. However, real-world graphs often contain millions or billions of nodes, presenting significant scalability challenges for existing GNN architectures.\n\n\\subsection{Motivation}\nConsider a social network with a billion users, where we want to predict user interests for personalized recommendations. Existing GNN methods either:\n\\begin{itemize}\n    \\item Require the entire graph to fit in memory, which is infeasible\n    \\item Use sampling techniques that lose important structural information\n    \\item Sacrifice model expressiveness for computational efficiency\n\\end{itemize}\n\nThese limitations motivate our work on ScaleGNN, which addresses all three challenges simultaneously.\n\n\\subsection{Contributions}\nOur main contributions are:\n\n\\begin{enumerate}\n    \\item \\textbf{Hierarchical Importance Sampling}: We propose a novel sampling strategy that maintains critical graph structures while reducing the computational graph size by orders of magnitude.\n\n    \\item \\textbf{Adaptive Aggregation}: Our dynamic aggregation mechanism adjusts to local graph topology, allocating more capacity to complex neighborhoods.\n\n    \\item \\textbf{Distributed Framework}: We design a distributed training system that efficiently partitions and processes web-scale graphs across multiple machines.\n\n    \\item \\textbf{Comprehensive Evaluation}: We conduct extensive experiments showing that ScaleGNN outperforms state-of-the-art methods on five large-scale benchmarks while significantly reducing computational requirements.\n\\end{enumerate}\n\n\\section{Related Work}\n\\label{sec:related}\n\n\\subsection{Graph Neural Networks}\nThe concept of neural networks on graphs was first introduced by \\cite{gori2005new}. Modern GNNs can be broadly categorized into spectral approaches \\cite{bruna2014spectral, defferrard2016convolutional} and spatial approaches \\cite{hamilton2017inductive, velivckovic2018graph}.\n\n\\subsection{Scalable GNN Training}\nRecent work has focused on scaling GNNs through various techniques:\n\n\\textbf{Sampling-based methods}: GraphSAINT \\cite{zeng2019graphsaint} uses subgraph sampling, while FastGCN \\cite{chen2018fastgcn} employs layer-wise sampling. However, these methods often suffer from variance issues.\n\n\\textbf{Simplified architectures}: SGC \\cite{wu2019simplifying} removes nonlinearities between layers, achieving linear complexity but with reduced expressiveness.\n\nOur work differs by maintaining model expressiveness while achieving superior scalability through hierarchical sampling and distributed processing.\n\n\\section{Methodology}\n\\label{sec:method}\n\n\\subsection{Problem Formulation}\nLet $G = (V, E, X)$ denote a graph with nodes $V$, edges $E$, and node features $X \\in \\mathbb{R}^{|V| \\times d}$. Our goal is to learn node representations $Z \\in \\mathbb{R}^{|V| \\times d'}$ that capture both local structure and global context.\n\n\\subsection{ScaleGNN Architecture}\nThe core innovation of ScaleGNN lies in its three-component design:\n\n\\begin{equation}\n    Z = \\text{Distributed}(\\text{Adaptive}(\\text{HierSample}(G, X)))\n    \\label{eq:scalegnn}\n\\end{equation}\n\n\\subsubsection{Hierarchical Importance Sampling}\nWe construct a hierarchy of graph abstractions:\n\\begin{equation}\n    G_0 \\rightarrow G_1 \\rightarrow \\ldots \\rightarrow G_L\n    \\label{eq:hierarchy}\n\\end{equation}\nwhere $G_l = (V_l, E_l)$ and $|V_{l+1}| < |V_l|$.\n\n\\begin{algorithm}\n\\caption{Hierarchical Importance Sampling}\n\\label{alg:sampling}\n\\begin{algorithmic}[1]\n\\REQUIRE Graph $G = (V, E)$, importance scores $s$\n\\ENSURE Hierarchy $\\{G_0, G_1, \\ldots, G_L\\}$\n\\STATE $G_0 \\leftarrow G$\n\\FOR{$l = 0$ to $L-1$}\n    \\STATE $s_l \\leftarrow$ ComputeImportance($G_l$)\n    \\STATE $V_{l+1} \\leftarrow$ SelectTopK($V_l, s_l, k_l$)\n    \\STATE $E_{l+1} \\leftarrow$ InducedEdges($V_{l+1}, E_l$)\n    \\STATE $G_{l+1} \\leftarrow (V_{l+1}, E_{l+1})$\n\\ENDFOR\n\\RETURN $\\{G_0, G_1, \\ldots, G_L\\}$\n\\end{algorithmic}\n\\end{algorithm}\n\n\\section{Experiments}\n\\label{sec:experiments}\n\n\\subsection{Datasets}\nWe evaluate on five large-scale datasets:\n\n\\begin{table}[t]\n\\centering\n\\caption{Dataset Statistics}\n\\label{tab:datasets}\n\\begin{tabular}{lrrr}\n\\toprule\nDataset & Nodes & Edges & Classes \\\\\n\\midrule\nogbn-products & 2.4M & 61.9M & 47 \\\\\nogbn-papers100M & 111.1M & 1.6B & 172 \\\\\nReddit & 232.9K & 11.6M & 41 \\\\\nYelp & 716.8K & 6.9M & 100 \\\\\nAmazon & 1.6M & 132.2M & 107 \\\\\n\\bottomrule\n\\end{tabular}\n\\end{table}\n\n\\subsection{Results}\n\n\\begin{figure}[t]\n\\centering\n\\includegraphics[width=0.48\\textwidth]{scalability-plot}\n\\caption{Training time comparison on ogbn-papers100M dataset. ScaleGNN achieves 73\\% reduction in training time while maintaining accuracy.}\n\\label{fig:scalability}\n\\end{figure}\n\n\\begin{table}[t]\n\\centering\n\\caption{Node Classification Accuracy (\\%)}\n\\label{tab:accuracy}\n\\begin{tabular}{lccccc}\n\\toprule\nMethod & Products & Papers & Reddit & Yelp & Amazon \\\\\n\\midrule\nGraphSAGE & 78.5 & OOM & 95.4 & 63.2 & 82.1 \\\\\nFastGCN & 76.2 & OOM & 93.7 & 61.8 & 79.4 \\\\\nGraphSAINT & 79.1 & 65.3 & 96.2 & 64.5 & 83.6 \\\\\nClusterGCN & 78.9 & 67.1 & 96.6 & 64.9 & 84.2 \\\\\n\\midrule\n\\textbf{ScaleGNN} & \\textbf{81.4} & \\textbf{71.2} & \\textbf{97.1} & \\textbf{66.3} & \\textbf{85.8} \\\\\n\\bottomrule\n\\end{tabular}\n\\end{table}\n\nAs shown in \\cref{tab:accuracy}, ScaleGNN consistently outperforms baselines across all datasets. Notably, it is the only method that successfully processes the ogbn-papers100M dataset without running out of memory (OOM).\n\n\\section{Discussion}\n\\label{sec:discussion}\n\n\\subsection{Ablation Study}\nWe analyze the contribution of each component:\n\n\\begin{table}[t]\n\\centering\n\\caption{Ablation Study on Reddit Dataset}\n\\label{tab:ablation}\n\\begin{tabular}{lcc}\n\\toprule\nConfiguration & Accuracy & Time (min) \\\\\n\\midrule\nFull ScaleGNN & 97.1 & 12.3 \\\\\nw/o Hierarchical Sampling & 95.8 & 28.7 \\\\\nw/o Adaptive Aggregation & 96.2 & 14.1 \\\\\nw/o Distributed Training & 97.0 & 45.6 \\\\\n\\bottomrule\n\\end{tabular}\n\\end{table}\n\n\\subsection{Limitations}\nWhile ScaleGNN achieves impressive results, it has some limitations:\n\\begin{itemize}\n    \\item The hierarchical sampling may lose fine-grained local patterns in extremely sparse graphs\n    \\item The distributed framework requires careful hyperparameter tuning for optimal partitioning\n\\end{itemize}\n\n\\section{Conclusion}\n\\label{sec:conclusion}\n\nWe presented ScaleGNN, a novel architecture for processing large-scale graphs. Through hierarchical importance sampling, adaptive aggregation, and distributed training, ScaleGNN achieves state-of-the-art performance while significantly reducing computational requirements. Our extensive experiments demonstrate its effectiveness across diverse datasets.\n\nFuture work includes extending ScaleGNN to dynamic graphs and exploring its application to even larger networks with trillions of edges.\n\n\\section*{Acknowledgment}\nWe thank the anonymous reviewers for their valuable feedback. This work was supported by NSF Grant \\#1234567.\n\n\\bibliographystyle{IEEEtran}\n\\bibliography{references}\n\n\\appendix\n\\section{Implementation Details}\n\\label{app:implementation}\n\nOur implementation uses PyTorch Geometric and PyTorch Distributed. The complete training pipeline...\n\n\\end{document}"} />

<RenderedOutput title="Expected effect">
  <Info>
    This excerpt depends on project files such as images, bibliography data, or included TeX sources that are not part of this standalone code box. Its exact output is project-specific, so no fabricated preview is shown.
  </Info>
</RenderedOutput>

## Next Steps

Continue with academic writing:

<CardGroup cols={2}>
  <Card title="Creating Posters" icon="image" href="/learn/latex/how-to/creating-posters">
    Conference poster design
  </Card>

  <Card title="Presentations" icon="presentation-screen" href="/learn/latex/how-to/presentations">
    Academic presentations
  </Card>

  <Card title="Thesis Writing" icon="graduation-cap" href="/learn/latex/how-to/thesis-dissertation">
    Dissertation and thesis
  </Card>

  <Card title="Book Publishing" icon="book" href="/learn/latex/how-to/book-publishing">
    Academic book creation
  </Card>
</CardGroup>

### Research Paper Toolkit

* [BibLaTeX guide](/learn/latex/bibliography/biblatex-guide)
* [Natbib guide](/learn/latex/bibliography/natbib-guide)
* [Choosing citation styles](/learn/latex/bibliography/choosing-citation-styles)
* [Sections and chapters](/learn/latex/document-structure/sections-and-chapters)
* [Footnotes and margin notes](/learn/latex/document-structure/footnotes-and-margin-notes)
* [Table of contents](/learn/latex/document-structure/table-of-contents)
* [Operators and spacing](/learn/latex/mathematics/operators-and-spacing)
* [Plotting with pgfplots](/learn/latex/figures/plotting-with-pgfplots)

***

<Info>
  **Pro tip**: Start writing your paper early and iterate frequently. Use version control to track changes, and always keep your bibliography updated as you write. Consider using reference management software like Zotero or Mendeley that can export to BibTeX format.
</Info>

## Start in LaTeX Cloud Studio

<CardGroup cols={2}>
  <Card title="Open in LaTeX Cloud Studio" icon="cloud" href="https://app.latex-cloud-studio.com/?utm_source=resources&utm_medium=cta&utm_campaign=research_workflow&utm_content=writing_research_paper_open_app">
    Write, compile, and iterate directly in your browser.
  </Card>

  <Card title="Start from Article Template" icon="file-text" href="/templates/article">
    Use a ready-made template, then adapt it to your content.
  </Card>
</CardGroup>
