> ## 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.

# Article Templates

> Professional LaTeX article templates for academic papers, journals, and scientific publications. Copy-paste ready templates with examples.

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>;
};

Professional article templates for academic papers, journal submissions, and scientific publications. All templates are ready to use - just copy the code and start writing your content.

<Info>
  **Quick start**: Copy any template below, paste it into [LaTeX Cloud Studio](/getting-started/cloud-studio), and start writing your content immediately.
  Use the copy button on a code block below to take the complete template into your project.
</Info>

## Choose This Template When

* You are writing a paper, report, assignment, or preprint
* You need a clean article structure before moving to a publisher-specific class
* You want a working starting point with sections, abstract, figures, tables, and bibliography

## Start in LaTeX Cloud Studio

<CardGroup cols={2}>
  <Card title="Open the Editor" icon="cloud" href="https://app.latex-cloud-studio.com/?utm_source=resources&utm_medium=card&utm_campaign=docs_open_app&utm_content=template_article_open_editor">
    Paste a template into the browser editor, compile it, and adapt the title block first.
  </Card>

  <Card title="Using Templates Guide" icon="file-text" href="/learn/latex/how-to/using-templates">
    Follow the template workflow if you need help adapting structure, bibliography, or figures.
  </Card>
</CardGroup>

## How to Adapt These Templates

1. Choose the target outlet (course submission, journal, or preprint).
2. Set document class options (`font size`, `paper size`, `onecolumn` or `twocolumn`).
3. Replace title block, author data, and abstract first.
4. Decide bibliography workflow early with [BibLaTeX guide](/learn/latex/bibliography/biblatex-guide) or [Natbib guide](/learn/latex/bibliography/natbib-guide).
5. Validate structure with [Sections and chapters](/learn/latex/document-structure/sections-and-chapters) and [Table of contents](/learn/latex/document-structure/table-of-contents).

## Basic Academic Article

Perfect for most academic papers, assignments, and research documents.

<LatexSource filename="article-template.tex" source={"\\documentclass[11pt,a4paper]{article}\n\n% Essential packages\n\\usepackage[utf8]{inputenc}\n\\usepackage[T1]{fontenc}\n\\usepackage{amsmath,amssymb,amsthm}\n\\usepackage{graphicx}\n\\usepackage{hyperref}\n\\usepackage[margin=1in]{geometry}\n\\usepackage{enumitem}\n\\usepackage{cite}\n\n% Metadata\n\\title{Your Article Title Here}\n\\author{\n    First Author\\thanks{Department of Mathematics, University Name} \\\\\n    \\texttt{first.author&#64;email.com} \\\\\n    \\and\n    Second Author\\thanks{Department of Physics, Another University} \\\\\n    \\texttt{second.author&#64;email.com}\n}\n\\date{\\today}\n\n% Custom commands (optional)\n\\newcommand{\\R}{\\mathbb{R}}\n\\newcommand{\\N}{\\mathbb{N}}\n\n\\begin{document}\n\n\\maketitle\n\n\\begin{abstract}\nThis abstract should summarize your article in 150-250 words. Include the main objectives, methodology, key findings, and conclusions. Make it self-contained so readers can understand your work without reading the full article.\n\n\\textbf{Keywords:} keyword1, keyword2, keyword3, keyword4\n\\end{abstract}\n\n\\section{Introduction}\n\nBegin your article with context and motivation. Explain why this topic is important and what problem you're addressing. Include relevant background information and cite previous work \\cite{example2023}.\n\nState your main contributions clearly:\n\\begin{itemize}\n    \\item First contribution\n    \\item Second contribution\n    \\item Third contribution\n\\end{itemize}\n\n\\section{Background and Related Work}\n\nProvide necessary background information and review related literature. This helps readers understand the context of your work.\n\n\\subsection{Theoretical Background}\n\nExplain key concepts and theories. For example, consider the equation:\n\\begin{equation}\n    E = mc^2\n    \\label{eq:einstein}\n\\end{equation}\n\nAs shown in Equation \\ref{eq:einstein}, energy and mass are related...\n\n\\subsection{Previous Approaches}\n\nDiscuss how others have approached this problem. Compare and contrast different methods, highlighting their strengths and limitations.\n\n\\section{Methodology}\n\n\\subsection{Problem Formulation}\n\nClearly define your problem. Use mathematical notation when appropriate:\n\n\\begin{definition}\nLet $X$ be a set and $f: X \\to \\R$ be a function. We say $f$ is \\emph{continuous} if...\n\\end{definition}\n\n\\subsection{Proposed Solution}\n\nDescribe your approach in detail. Use algorithms, flowcharts, or diagrams as needed.\n\n\\begin{theorem}\nUnder conditions A and B, our method converges in $O(n \\log n)$ time.\n\\end{theorem}\n\n\\begin{proof}\nThe proof follows from...\n\\end{proof}\n\n\\section{Results and Discussion}\n\n\\subsection{Experimental Setup}\n\nDescribe your experiments, data, and evaluation metrics.\n\n\\subsection{Results}\n\nPresent your findings using tables and figures:\n\n\\begin{table}[h]\n\\centering\n\\caption{Comparison of different methods}\n\\label{tab:results}\n\\begin{tabular}{|l|c|c|c|}\n\\hline\n\\textbf{Method} & \\textbf{Accuracy} & \\textbf{Speed} & \\textbf{Memory} \\\\\n\\hline\nBaseline & 85.2\\% & 1.0x & 100 MB \\\\\nOur Method & \\textbf{92.7\\%} & 0.8x & 95 MB \\\\\nState-of-art & 91.3\\% & 0.5x & 150 MB \\\\\n\\hline\n\\end{tabular}\n\\end{table}\n\n\\begin{figure}[h]\n\\centering\n\\includegraphics[width=0.8\\textwidth]{figure1.png}\n\\caption{Performance comparison across different datasets}\n\\label{fig:performance}\n\\end{figure}\n\n\\subsection{Discussion}\n\nAnalyze your results. Discuss:\n\\begin{itemize}\n    \\item Why your method works\n    \\item Limitations and edge cases\n    \\item Comparison with existing approaches\n    \\item Practical implications\n\\end{itemize}\n\n\\section{Conclusion}\n\nSummarize your key findings and contributions. Discuss the broader impact of your work and suggest future research directions.\n\n\\subsection{Future Work}\n\nOutline potential extensions:\n\\begin{enumerate}\n    \\item Extension to other domains\n    \\item Improving computational efficiency\n    \\item Addressing current limitations\n\\end{enumerate}\n\n\\section*{Acknowledgments}\n\nThank funding agencies, collaborators, and anyone who helped with the work.\n\n% Bibliography\n\\bibliographystyle{plain}\n\\bibliography{references}\n\n% Or use manual bibliography\n\\begin{thebibliography}{9}\n\\bibitem{example2023}\nAuthor, A. B.,\n\\textit{Title of the Article},\nJournal Name, vol. 10, no. 2, pp. 123-145, 2023.\n\n\\bibitem{book2022}\nWriter, C. D.,\n\\textit{Book Title},\nPublisher, 2nd ed., 2022.\n\\end{thebibliography}\n\n% Appendix (optional)\n\\appendix\n\\section{Additional Proofs}\n\nInclude lengthy proofs or technical details that would interrupt the main flow.\n\n\\section{Implementation Details}\n\nProvide code snippets or algorithms:\n\n\\begin{verbatim}\ndef algorithm(data):\n    # Process data\n    result = process(data)\n    return result\n\\end{verbatim}\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>

## IEEE Conference Paper

Standard IEEE format for conference submissions.

<LatexSource filename="ieee-conference.tex" source={"\\documentclass[conference]{IEEEtran}\n\n% Essential packages\n\\usepackage{amsmath,amssymb,amsfonts}\n\\usepackage{graphicx}\n\\usepackage{textcomp}\n\\usepackage{xcolor}\n\\usepackage{cite}\n\n% Correct bad hyphenation\n\\hyphenation{op-tical net-works semi-conduc-tor}\n\n\\begin{document}\n\n\\title{Your Paper Title: Should Be Descriptive and Specific}\n\n\\author{\n\\IEEEauthorblockN{First Author}\n\\IEEEauthorblockA{\\textit{Department Name} \\\\\n\\textit{University Name}\\\\\nCity, Country \\\\\nemail&#64;university.edu}\n\\and\n\\IEEEauthorblockN{Second Author}\n\\IEEEauthorblockA{\\textit{Department Name} \\\\\n\\textit{Company Name}\\\\\nCity, Country \\\\\nemail&#64;company.com}\n}\n\n\\maketitle\n\n\\begin{abstract}\nThis document presents a template for IEEE conference papers. The abstract should be approximately 150-250 words and should summarize the key contributions, methodology, and results of your work.\n\\end{abstract}\n\n\\begin{IEEEkeywords}\ncomponent, formatting, style, styling, insert, IEEE, conference\n\\end{IEEEkeywords}\n\n\\section{Introduction}\n\nThis template provides guidance for preparing papers for IEEE conferences. The introduction should provide background information and clearly state the contribution of your work.\n\n\\subsection{Motivation}\nClearly state why this work is important and what problem you are solving.\n\n\\subsection{Contributions}\nList your main contributions:\n\\begin{itemize}\n\\item First major contribution\n\\item Second significant contribution\n\\item Third important contribution\n\\end{itemize}\n\n\\section{Related Work}\nDiscuss previous work relevant to your research.\n\n\\section{Proposed Method}\nDescribe your approach in detail.\n\n\\section{Experimental Results}\nPresent your experimental setup and results.\n\n\\section{Conclusion}\nSummarize your work and its significance.\n\n\\begin{thebibliography}{00}\n\\bibitem{b1} G. Eason, B. Noble, and I. N. Sneddon, ``On certain integrals of Lipschitz-Hankel type involving products of Bessel functions,'' Phil. Trans. Roy. Soc. London, vol. A247, pp. 529--551, April 1955.\n\\end{thebibliography}\n\n\\end{document}"} />

<RenderedOutput title="Expected effect">
  <Info>
    This is document setup or preamble code. It changes the behavior of a containing document but does not produce an honest standalone page by itself.
  </Info>
</RenderedOutput>

## Scientific Report Template

Perfect for lab reports, technical reports, and scientific documentation.

<LatexSource filename="scientific-report.tex" source={"\\documentclass[11pt,a4paper]{article}\n\n% Essential packages\n\\usepackage[utf8]{inputenc}\n\\usepackage[T1]{fontenc}\n\\usepackage[english]{babel}\n\\usepackage{amsmath,amsfonts,amssymb}\n\\usepackage{graphicx}\n\\usepackage[margin=1in]{geometry}\n\\usepackage{fancyhdr}\n\\usepackage{siunitx}\n\\usepackage{booktabs}\n\\usepackage{caption}\n\\usepackage[colorlinks=true,linkcolor=blue,citecolor=blue,urlcolor=blue]{hyperref}\n\n% Header and footer\n\\pagestyle{fancy}\n\\fancyhf{}\n\\fancyhead[L]{Scientific Report}\n\\fancyhead[R]{\\today}\n\\fancyfoot[C]{\\thepage}\n\n% Title page information\n\\title{\\textbf{Scientific Report Title}\\\\\n       \\large Subtitle or Course Information}\n\\author{Student Name\\\\\n        Student ID: 123456789\\\\\n        \\textit{Department of Science}\\\\\n        \\textit{University Name}}\n\\date{\\today}\n\n\\begin{document}\n\n% Title page\n\\maketitle\n\\thispagestyle{empty}\n\n\\newpage\n\n% Table of contents\n\\tableofcontents\n\\newpage\n\n\\section{Executive Summary}\nProvide a concise summary of the entire report, including objectives, methods, key findings, and conclusions.\n\n\\section{Introduction}\n\n\\subsection{Background}\nProvide relevant background information and context for your study.\n\n\\subsection{Objectives}\nClearly state the objectives of your investigation:\n\\begin{enumerate}\n\\item Primary objective\n\\item Secondary objective\n\\item Tertiary objective\n\\end{enumerate}\n\n\\section{Methodology}\n\n\\subsection{Experimental Design}\nDescribe your experimental approach and design.\n\n\\subsection{Materials and Equipment}\nList all materials, chemicals, and equipment used:\n\\begin{itemize}\n\\item Material 1 (purity, supplier)\n\\item Material 2 (specifications)\n\\item Equipment: Model XYZ Spectrometer\n\\end{itemize}\n\n\\section{Results}\n\n\\subsection{Experimental Data}\nPresent your experimental data clearly and systematically.\n\n\\begin{table}[htbp]\n\\centering\n\\caption{Experimental measurements}\n\\label{tab:measurements}\n\\begin{tabular}{@{}lSSS@{}}\n\\toprule\n{Sample} & {Temperature (\\si{\\celsius})} & {Pressure (\\si{\\kPa})} & {Volume (\\si{\\mL})} \\\\\n\\midrule\nSample 1 & 25.0 & 101.3 & 250.0 \\\\\nSample 2 & 30.0 & 98.7 & 275.5 \\\\\nSample 3 & 35.0 & 102.1 & 301.2 \\\\\n\\bottomrule\n\\end{tabular}\n\\end{table}\n\n\\section{Discussion}\nInterpret your findings and relate them to your objectives.\n\n\\section{Conclusion}\nSummarize your main findings and their significance.\n\n\\bibliographystyle{plain}\n\\bibliography{references}\n\n\\end{document}"} />

<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=templates_article">
  <LatexPreview src="/images/rendered/templates-article-03/page-1.svg" alt="Compiled PDF page 1 from scientific-report.tex" caption="Page 1 of 4. Generated from the shown source with pdfLaTeX in the pinned LaTeXCloud TeX Live 2026 environment." width={595.276} height={841.89} />

  <LatexPreview src="/images/rendered/templates-article-03/page-2.svg" alt="Compiled PDF page 2 from scientific-report.tex" caption="Page 2 of 4. Generated from the shown source with pdfLaTeX in the pinned LaTeXCloud TeX Live 2026 environment." width={595.276} height={841.89} />

  <LatexPreview src="/images/rendered/templates-article-03/page-3.svg" alt="Compiled PDF page 3 from scientific-report.tex" caption="Page 3 of 4. Generated from the shown source with pdfLaTeX in the pinned LaTeXCloud TeX Live 2026 environment." width={595.276} height={841.89} />

  <LatexPreview src="/images/rendered/templates-article-03/page-4.svg" alt="Compiled PDF page 4 from scientific-report.tex" caption="Page 4 of 4. Generated from the shown source with pdfLaTeX in the pinned LaTeXCloud TeX Live 2026 environment." width={595.276} height={841.89} />
</RenderedOutput>

## Template Features

### Document Structure

* Professional formatting with 11pt font on A4 paper
* Proper margins and spacing
* Automatic section numbering
* Table of contents support (add `\tableofcontents`)

### Mathematics Support

* Full AMS math packages included
* Theorem environments ready to use
* Custom math commands defined

### Bibliography

* Two options: BibTeX or manual bibliography
* Proper citation formatting
* Hyperlinked references

### Figures and Tables

* Centered figures with captions
* Professional table formatting
* Cross-referencing support

## Customization Guide

### Changing Document Class Options

<LatexSource filename="example.tex" source={"% Two-column layout\n\\documentclass[11pt,a4paper,twocolumn]{article}\n\n% Draft mode (shows overfull boxes)\n\\documentclass[11pt,a4paper,draft]{article}\n\n% US Letter paper\n\\documentclass[11pt,letterpaper]{article}"} />

<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>

### Adding More Packages

<LatexSource filename="packages.tex" source={"% For code listings\n\\usepackage{listings}\n\\usepackage{xcolor}\n\n% For better tables\n\\usepackage{booktabs}\n\\usepackage{multirow}\n\n% For subfigures\n\\usepackage{subcaption}\n\n% For algorithms\n\\usepackage{algorithm}\n\\usepackage{algorithmic}"} />

<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>

### Custom Theorem Environments

<LatexSource filename="theorems.tex" source={"% Define custom environments\n\\newtheorem{theorem}{Theorem}[section]\n\\newtheorem{lemma}[theorem]{Lemma}\n\\newtheorem{corollary}[theorem]{Corollary}\n\\newtheorem{proposition}[theorem]{Proposition}\n\n\\theoremstyle{definition}\n\\newtheorem{definition}[theorem]{Definition}\n\\newtheorem{example}[theorem]{Example}\n\n\\theoremstyle{remark}\n\\newtheorem{remark}[theorem]{Remark}\n\\newtheorem{note}[theorem]{Note}"} />

<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>

### Header and Footer Customization

<LatexSource filename="headers.tex" source={"\\usepackage{fancyhdr}\n\\pagestyle{fancy}\n\n% Clear default headers\n\\fancyhf{}\n\n% Custom headers\n\\fancyhead[L]{\\small Your Article Title}\n\\fancyhead[R]{\\small \\thepage}\n\n% Custom footers\n\\fancyfoot[C]{\\small Draft Version - \\today}\n\n% Header line\n\\renewcommand{\\headrulewidth}{0.4pt}"} />

<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>

## Best Practices

<Tip>
  **Structure Tips:**

  * Keep sections balanced in length
  * Use subsections for better organization
  * Number equations only when referenced
  * Place figures and tables near their first reference
</Tip>

### Writing Style

1. **Abstract**: Make it self-contained and informative
2. **Introduction**: Start broad, then narrow to your specific problem
3. **Methodology**: Be detailed enough for reproduction
4. **Results**: Let data speak first, then interpret
5. **Conclusion**: No new information, only synthesis

### Common Pitfalls to Avoid

<Warning>
  * Don't use too many packages (conflicts can occur)
  * Avoid manual spacing (`\\[1cm]` etc.) - use proper LaTeX spacing
  * Don't hardcode references - use `\label` and `\ref`
  * Check journal requirements for specific formatting
</Warning>

## Advanced Features

### Multi-column Sections

<LatexSource filename="multicol.tex" source={"\\usepackage{multicol}\n\n\\begin{multicols}{2}\nThis text will be formatted in two columns.\nGreat for saving space in certain sections.\n\\end{multicols}"} />

<RenderedOutput title="Rendered output">
  <LatexPreview src="/images/rendered/templates-article-08/page-1.svg" alt="Compiled PDF page 1 from multicol.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>

### Code Listings

<LatexSource filename="code.tex" source={"\\usepackage{listings}\n\\lstset{\n    language=Python,\n    basicstyle=\\ttfamily\\small,\n    keywordstyle=\\color{blue},\n    commentstyle=\\color{green},\n    numbers=left,\n    numberstyle=\\tiny,\n    frame=single\n}\n\n\\begin{lstlisting}\ndef hello_world():\n    print(\"Hello, LaTeX!\")\n    return True\n\\end{lstlisting}"} />

<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>

### Hyperlinks and Metadata

<LatexSource filename="hyperref.tex" source={"\\hypersetup{\n    colorlinks=true,\n    linkcolor=blue,\n    filecolor=magenta,\n    urlcolor=cyan,\n    pdftitle={Your Article Title},\n    pdfauthor={Your Name},\n    pdfsubject={Subject},\n    pdfkeywords={keyword1, keyword2}\n}"} />

<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>

## Choose a Starting Point

* [Basic Academic Article](#basic-academic-article) for assignments, papers, and preprints
* [IEEE Conference Paper](#ieee-conference-paper) for proceedings and technical conferences
* [Scientific Report Template](#scientific-report-template) for structured reports with deeper sectioning

Use the copy button on the selected code block, save the result as a `.tex` file, and compile it in your project.

## Related Templates

* [Thesis Template](/templates/thesis) - For dissertations and theses
* [CV Template](/templates/cv) - For professional CVs and resumes
* [Presentation Template](/templates/presentation) - For Beamer presentations

***

<Info>
  **Pro tip**: Save this template as `template.tex` in your projects folder. Copy it whenever you start a new article and customize as needed.
</Info>

Ready to write your article? Copy the template above and start writing! For more LaTeX tips, check our [writing guide](/learn/latex/how-to/articles).
