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

# LaTeX Packages Reference

> Complete guide to essential LaTeX packages. Learn what each package does, how to use it, and see practical 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>;
};

This reference covers the most important LaTeX packages organized by functionality. Each entry includes the package purpose, basic usage, and practical examples.

<Info>
  **Package installation**: LaTeX Cloud Studio includes all standard packages. No installation needed - just use `\usepackage{packagename}`.
</Info>

## Essential Packages

### Core Document Setup

<LatexSource filename="essential-packages.tex" source={"% Input encoding (for older documents)\n\\usepackage[utf8]{inputenc}\n\n% Font encoding\n\\usepackage[T1]{fontenc}\n\n% Language support\n\\usepackage[english]{babel}\n% or multiple languages\n\\usepackage[english,spanish,french]{babel}\n\n% Better fonts\n\\usepackage{lmodern}\n\n% Microtype (better typography)\n\\usepackage{microtype}"} />

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

### Page Layout

#### geometry

Controls page dimensions and margins.

<LatexSource filename="geometry-package.tex" source={"\\usepackage{geometry}\n\n% Common configurations\n\\geometry{margin=1in}\n\\geometry{left=1.5in, right=1in, top=1in, bottom=1in}\n\\geometry{a4paper, margin=2.5cm}\n\\geometry{letterpaper, landscape}\n\n% Advanced options\n\\geometry{\n  paperwidth=210mm,\n  paperheight=297mm,\n  left=25mm,\n  right=25mm,\n  top=30mm,\n  bottom=30mm,\n  headheight=15pt,\n  headsep=10mm,\n  footskip=15mm\n}"} />

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

#### fancyhdr

Custom headers and footers.

<LatexSource filename="fancyhdr-package.tex" source={"\\usepackage{fancyhdr}\n\\pagestyle{fancy}\n\n% Clear defaults\n\\fancyhf{}\n\n% Custom headers/footers\n\\fancyhead[L]{Left Header}\n\\fancyhead[C]{Center Header}\n\\fancyhead[R]{\\thepage}\n\\fancyfoot[C]{Footer Text}\n\n% Different odd/even pages\n\\fancyhead[LE,RO]{\\thepage}\n\\fancyhead[LO,RE]{\\leftmark}\n\n% Custom styles\n\\fancypagestyle{plain}{\n  \\fancyhf{}\n  \\fancyfoot[C]{\\thepage}\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>

## Mathematics Packages

### amsmath

Extended math environments and commands.

<LatexSource filename="amsmath-package.tex" source={"\\usepackage{amsmath}\n\n% Provides environments:\n\\begin{align}\n  f(x) &= x^2 + 2x + 1 \\\\\n  &= (x + 1)^2\n\\end{align}\n\n\\begin{gather}\n  a = b + c \\\\\n  d = e + f\n\\end{gather}\n\n\\begin{split}\n  (a + b)^3 &= a^3 + 3a^2b \\\\\n  &\\quad + 3ab^2 + b^3\n\\end{split}\n\n% Commands\n\\text{text in math}\n\\tfrac{a}{b}  % Text-style fraction\n\\dfrac{a}{b}  % Display-style fraction\n\\binom{n}{k}  % Binomial coefficient"} />

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

### amssymb

Additional mathematical symbols.

<LatexSource filename="amssymb-package.tex" source={"\\usepackage{amssymb}\n\n% Provides symbols like:\n\\mathbb{R}    % Real numbers\n\\mathbb{Z}    % Integers\n\\mathbb{N}    % Natural numbers\n\\varnothing   % Empty set\n\\therefore    % Therefore\n\\because      % Because\n\\blacksquare  % QED symbol\n\\leqslant     % Less or equal (slanted)\n\\geqslant     % Greater or equal (slanted)"} />

<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_reference_packages">
  <LatexPreview src="/images/rendered/learn-reference-packages-05/page-1.svg" alt="Compiled PDF page 1 from amssymb-package.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>

### amsthm

Theorem environments.

<LatexSource filename="amsthm-package.tex" source={"\\usepackage{amsthm}\n\n% Define theorem environments\n\\newtheorem{theorem}{Theorem}[section]\n\\newtheorem{lemma}[theorem]{Lemma}\n\\newtheorem{corollary}[theorem]{Corollary}\n\n\\theoremstyle{definition}\n\\newtheorem{definition}[theorem]{Definition}\n\n\\theoremstyle{remark}\n\\newtheorem{remark}[theorem]{Remark}\n\n% Usage\n\\begin{theorem}[Fermat's Last Theorem]\nNo three positive integers $a$, $b$, and $c$ satisfy...\n\\end{theorem}\n\n\\begin{proof}\nThe proof is left as an exercise.\n\\end{proof}"} />

<RenderedOutput title="Rendered output">
  <LatexPreview src="/images/rendered/learn-reference-packages-06/page-1.svg" alt="Compiled PDF page 1 from amsthm-package.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>

### mathtools

Enhanced version of amsmath.

<LatexSource filename="mathtools-package.tex" source={"\\usepackage{mathtools}\n\n% Additional features\n\\begin{align}\n  f(x) &= \\begin{cases}\n    x^2 & \\text{if } x > 0 \\\\\n    0 & \\text{otherwise}\n  \\end{cases}\n\\end{align}\n\n% Better spacing\n\\coloneqq     % :=\n\\Coloneqq     % ::=\n\\eqqcolon     % =:\n\n% Paired delimiters\n\\DeclarePairedDelimiter\\abs{\\lvert}{\\rvert}\n\\DeclarePairedDelimiter\\norm{\\lVert}{\\rVert}\n\n% Usage\n\\abs{x}      % Absolute value\n\\abs*{x}     % Auto-sizing\n\\norm{v}     % Vector norm"} />

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

## Graphics and Figures

### graphicx

Standard package for including graphics.

<LatexSource filename="graphicx-package.tex" source={"\\usepackage{graphicx}\n\n% Include images\n\\includegraphics{image.png}\n\\includegraphics[width=5cm]{image.pdf}\n\\includegraphics[height=3cm]{image.jpg}\n\\includegraphics[scale=0.5]{image.eps}\n\\includegraphics[width=0.8\\textwidth]{image.svg}\n\n% Rotation and scaling\n\\includegraphics[angle=90]{image.png}\n\\rotatebox{45}{Rotated text}\n\\scalebox{2}{Scaled text}\n\\resizebox{5cm}{3cm}{Resized content}\n\n% Figure environment\n\\begin{figure}[htbp]\n  \\centering\n  \\includegraphics[width=\\textwidth]{plot.pdf}\n  \\caption{Important results}\n  \\label{fig:results}\n\\end{figure}"} />

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

### subcaption

Create subfigures and subtables.

<LatexSource filename="subcaption-package.tex" source={"\\usepackage{subcaption}\n\n\\begin{figure}\n  \\centering\n  \\begin{subfigure}{0.45\\textwidth}\n    \\includegraphics[width=\\textwidth]{image1.png}\n    \\caption{First subplot}\n    \\label{fig:sub1}\n  \\end{subfigure}\n  \\hfill\n  \\begin{subfigure}{0.45\\textwidth}\n    \\includegraphics[width=\\textwidth]{image2.png}\n    \\caption{Second subplot}\n    \\label{fig:sub2}\n  \\end{subfigure}\n  \\caption{Combined figure}\n  \\label{fig:combined}\n\\end{figure}\n\n% Reference subfigures\nSee Figure~\\ref{fig:sub1} and~\\ref{fig:sub2}."} />

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

### tikz

Powerful graphics creation.

<LatexSource filename="tikz-package.tex" source={"\\usepackage{tikz}\n\\usetikzlibrary{arrows.meta, positioning, shapes}\n\n% Simple drawing\n\\begin{tikzpicture}\n  \\draw (0,0) -- (2,1) -- (1,2) -- cycle;\n  \\node at (1,1) {Center};\n\\end{tikzpicture}\n\n% Complex diagram\n\\begin{tikzpicture}[\n  node distance=2cm,\n  every node/.style={draw, circle}\n]\n  \\node (A) {A};\n  \\node (B) [right=of A] {B};\n  \\node (C) [below=of A] {C};\n\n  \\draw[->] (A) -- (B);\n  \\draw[->] (A) -- (C);\n  \\draw[->] (B) -- (C);\n\\end{tikzpicture}"} />

<RenderedOutput title="Rendered output">
  <LatexPreview src="/images/rendered/learn-reference-packages-10/page-1.svg" alt="Compiled PDF page 1 from tikz-package.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>

## Tables

### booktabs

Professional table formatting.

<LatexSource filename="booktabs-package.tex" source={"\\usepackage{booktabs}\n\n\\begin{table}[htbp]\n  \\centering\n  \\caption{Professional table}\n  \\begin{tabular}{lcc}\n    \\toprule\n    Item & Quantity & Price \\\\\n    \\midrule\n    Apples & 5 & \\$2.50 \\\\\n    Oranges & 3 & \\$1.80 \\\\\n    Bananas & 6 & \\$3.00 \\\\\n    \\midrule\n    Total & 14 & \\$7.30 \\\\\n    \\bottomrule\n  \\end{tabular}\n\\end{table}"} />

<RenderedOutput title="Rendered output">
  <LatexPreview src="/images/rendered/learn-reference-packages-11/page-1.svg" alt="Compiled PDF page 1 from booktabs-package.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>

### array

Enhanced array and tabular environments.

<LatexSource filename="array-package.tex" source={"\\usepackage{array}\n\n% New column types\n\\newcolumntype{C}{>{\\centering\\arraybackslash}X}\n\\newcolumntype{R}{>{\\raggedleft\\arraybackslash}X}\n\n% Advanced tables\n\\begin{tabular}{>{\\bfseries}l c r}\n  \\hline\n  Bold Header & Center & Right \\\\\n  \\hline\n  Row 1 & Data & Values \\\\\n  Row 2 & More & Data \\\\\n  \\hline\n\\end{tabular}"} />

<RenderedOutput title="Rendered output">
  <LatexPreview src="/images/rendered/learn-reference-packages-12/page-1.svg" alt="Compiled PDF page 1 from array-package.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>

### longtable

Tables spanning multiple pages.

<LatexSource filename="longtable-package.tex" source={"\\usepackage{longtable}\n\n\\begin{longtable}{lcc}\n  \\caption{Long table spanning pages} \\\\\n  \\toprule\n  Column 1 & Column 2 & Column 3 \\\\\n  \\midrule\n  \\endfirsthead\n\n  \\multicolumn{3}{c}{{\\tablename\\ \\thetable{} -- continued}} \\\\\n  \\toprule\n  Column 1 & Column 2 & Column 3 \\\\\n  \\midrule\n  \\endhead\n\n  \\midrule\n  \\multicolumn{3}{r}{{Continued on next page}} \\\\\n  \\endfoot\n\n  \\bottomrule\n  \\endlastfoot\n\n  % Table content\n  Data & More & Values \\\\\n  % ... many rows\n\\end{longtable}"} />

<RenderedOutput title="Rendered output">
  <LatexPreview src="/images/rendered/learn-reference-packages-13/page-1.svg" alt="Compiled PDF page 1 from longtable-package.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>

## Bibliography and Citations

### biblatex

Modern bibliography management.

<LatexSource filename="biblatex-package.tex" source={"\\usepackage[style=authoryear,backend=biber]{biblatex}\n\\addbibresource{references.bib}\n\n% Citation commands\n\\cite{key}              % (Author, Year)\n\\parencite{key}         % (Author, Year)\n\\textcite{key}          % Author (Year)\n\\citeauthor{key}        % Author\n\\citeyear{key}          % Year\n\\footcite{key}          % Footnote citation\n\\fullcite{key}          % Full citation\n\n% Multiple citations\n\\parencite{key1,key2,key3}\n\n% Bibliography\n\\printbibliography"} />

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

### natbib

Traditional bibliography package.

<LatexSource filename="natbib-package.tex" source={"\\usepackage[authoryear,round]{natbib}\n\n% Citation styles\n\\citet{key}     % Author (Year)\n\\citep{key}     % (Author, Year)\n\\citealt{key}   % Author Year\n\\citealp{key}   % Author, Year\n\\citeauthor{key}% Author\n\\citeyear{key}  % Year\n\n% With page numbers\n\\citep[p.~25]{key}\n\\citep[see][p.~25]{key}\n\n% Bibliography\n\\bibliographystyle{plainnat}\n\\bibliography{references}"} />

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

## Lists

### enumitem

Customizable lists.

<LatexSource filename="enumitem-package.tex" source={"\\usepackage{enumitem}\n\n% Customized itemize\n\\begin{itemize}[label=\\textbullet, itemsep=0pt]\n  \\item First item\n  \\item Second item\n\\end{itemize}\n\n% Customized enumerate\n\\begin{enumerate}[label=(\\alph*), start=3]\n  \\item Third item (c)\n  \\item Fourth item (d)\n\\end{enumerate}\n\n% Inline lists\n\\begin{enumerate*}[label=(\\roman*)]\n  \\item One \\item Two \\item Three\n\\end{enumerate*}\n\n% Description lists\n\\begin{description}[style=nextline]\n  \\item[Long term] Description on next line\n  \\item[Short] Inline description\n\\end{description}"} />

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

## Code and Verbatim

### listings

Code listings with syntax highlighting.

<LatexSource filename="listings-package.tex" source={"\\usepackage{listings}\n\\usepackage{xcolor}\n\n% Configure style\n\\lstset{\n  language=Python,\n  basicstyle=\\ttfamily\\small,\n  keywordstyle=\\color{blue},\n  commentstyle=\\color{green},\n  stringstyle=\\color{red},\n  numbers=left,\n  numberstyle=\\tiny,\n  breaklines=true,\n  frame=single\n}\n\n% Inline code\n\\lstinline{print(\"Hello\")}\n\n% Code block\n\\begin{lstlisting}[caption=Python example]\ndef fibonacci(n):\n    if n <= 1:\n        return n\n    return fibonacci(n-1) + fibonacci(n-2)\n\\end{lstlisting}\n\n% External file\n\\lstinputlisting[language=C]{code.c}"} />

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

### minted

Advanced syntax highlighting.

<LatexSource filename="minted-package.tex" source={"\\usepackage{minted}\n\n% Inline code\n\\mintinline{python}{print(\"Hello\")}\n\n% Code block\n\\begin{minted}[linenos,bgcolor=gray!10]{python}\ndef quicksort(arr):\n    if len(arr) <= 1:\n        return arr\n    pivot = arr[len(arr) // 2]\n    left = [x for x in arr if x < pivot]\n    middle = [x for x in arr if x == pivot]\n    right = [x for x in arr if x > pivot]\n    return quicksort(left) + middle + quicksort(right)\n\\end{minted}\n\n% External file\n\\inputminted{javascript}{script.js}"} />

<RenderedOutput title="Expected effect">
  <Info>
    This code depends on minted's external syntax-highlighting process. The documentation renderer deliberately disables shell escape, so the secure preview pipeline explains the effect instead of executing an external process.
  </Info>
</RenderedOutput>

### verbatim

Enhanced verbatim environments.

<LatexSource filename="verbatim-package.tex" source={"\\usepackage{verbatim}\n\n% Basic verbatim\n\\begin{verbatim}\nRaw text with $special% characters&\n\\end{verbatim}\n\n% Comment out sections\n\\begin{comment}\nThis entire section is commented out\nand will not appear in the output.\n\\end{comment}\n\n% Verbatim input from file\n\\verbatiminput{file.txt}"} />

<RenderedOutput title="Rendered output">
  <LatexPreview src="/images/rendered/learn-reference-packages-19/page-1.svg" alt="Compiled PDF page 1 from verbatim-package.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>

## Fonts and Typography

### fontspec

Modern font selection (XeLaTeX/LuaLaTeX).

<LatexSource filename="fontspec-package.tex" source={"\\usepackage{fontspec}\n\n% Set main fonts\n\\setmainfont{Times New Roman}\n\\setsansfont{Arial}\n\\setmonofont{Courier New}\n\n% Font features\n\\setmainfont[\n  Ligatures=TeX,\n  Numbers=OldStyle\n]{Minion Pro}\n\n% Custom font families\n\\newfontfamily\\myfont{Comic Sans MS}\n{\\myfont This text uses Comic Sans}"} />

<RenderedOutput title="Expected effect">
  <Info>
    This example configures a system font. The visible result depends on fonts installed in the reader's compilation environment, so the code box describes the intended configuration instead of showing a misleading substitute font.
  </Info>
</RenderedOutput>

### microtype

Typography refinements.

<LatexSource filename="microtype-package.tex" source={"\\usepackage{microtype}\n\n% Automatic improvements:\n% - Character protrusion\n% - Font expansion\n% - Kerning adjustments\n% - Tracking adjustments\n\n% Manual adjustments\n\\textls[200]{Letter spaced text}\n\\microtypesetup{expansion=false}"} />

<RenderedOutput title="Rendered output">
  <LatexPreview src="/images/rendered/learn-reference-packages-21/page-1.svg" alt="Compiled PDF page 1 from microtype-package.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>

## Cross-references

### hyperref

Hyperlinks and PDF features.

<LatexSource filename="hyperref-package.tex" source={"\\usepackage{hyperref}\n\n% Configuration\n\\hypersetup{\n  colorlinks=true,\n  linkcolor=blue,\n  filecolor=magenta,\n  urlcolor=cyan,\n  citecolor=green,\n  pdfauthor={Author Name},\n  pdftitle={Document Title},\n  pdfsubject={Subject},\n  pdfkeywords={keyword1, keyword2}\n}\n\n% Usage\n\\href{https://example.com}{Link text}\n\\url{https://example.com}\n\\nolinkurl{https://example.com}\n\n% Internal links\n\\hyperref[label]{text}\n\\autoref{label}  % Automatic reference type"} />

<RenderedOutput title="Expected effect">
  <Info>
    This excerpt is part of a multi-pass cross-reference or bibliography workflow. A trustworthy final page requires the surrounding project and its auxiliary files, so this standalone code box documents the workflow without claiming a complete rendered result.
  </Info>
</RenderedOutput>

### cleveref

Intelligent cross-referencing.

<LatexSource filename="cleveref-package.tex" source={"\\usepackage{cleveref}\n\n% Better references\n\\cref{eq:equation}     % Equation (1)\n\\Cref{fig:figure}      % Figure 1\n\\cref{sec:section}     % Section 2.1\n\n% Multiple references\n\\cref{eq:1,eq:2,eq:3}  % Equations (1) to (3)\n\\cref{fig:a,fig:b}     % Figures 1 and 2\n\n% Custom names\n\\crefname{algorithm}{algorithm}{algorithms}\n\\Crefname{algorithm}{Algorithm}{Algorithms}"} />

<RenderedOutput title="Expected effect">
  <Info>
    This excerpt is part of a multi-pass cross-reference or bibliography workflow. A trustworthy final page requires the surrounding project and its auxiliary files, so this standalone code box documents the workflow without claiming a complete rendered result.
  </Info>
</RenderedOutput>

## Specialized Packages

### siunitx

Scientific units and numbers.

<LatexSource filename="siunitx-package.tex" source={"\\usepackage{siunitx}\n\n% Numbers\n\\num{123456.789}        % 123,456.789\n\\num{1.23e-4}          % 1.23 × 10⁻⁴\n\n% Units\n\\si{\\meter\\per\\second}  % m/s\n\\si{\\kilo\\gram}        % kg\n\\si{\\degree\\celsius}    % °C\n\n% Numbers with units\n\\SI{9.81}{\\meter\\per\\second\\squared}  % 9.81 m/s²\n\\SI{25}{\\degree\\celsius}              % 25 °C\n\n% Ranges\n\\SIrange{10}{20}{\\celsius}            % 10 °C to 20 °C\n\\numrange{1.2}{3.4}                   % 1.2 to 3.4\n\n% Tables\n\\begin{tabular}{S[table-format=3.2]}\n  \\toprule\n  {Values} \\\\\n  \\midrule\n  1.23 \\\\\n  45.67 \\\\\n  890.12 \\\\\n  \\bottomrule\n\\end{tabular}"} />

<RenderedOutput title="Rendered output">
  <LatexPreview src="/images/rendered/learn-reference-packages-24/page-1.svg" alt="Compiled PDF page 1 from siunitx-package.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>

### algorithm2e

Algorithm pseudocode.

<LatexSource filename="algorithm2e-package.tex" source={"\\usepackage[ruled,vlined]{algorithm2e}\n\n\\begin{algorithm}[H]\n  \\SetAlgoLined\n  \\KwData{Array $A$ of $n$ elements}\n  \\KwResult{Sorted array $A$}\n\n  \\For{$i \\leftarrow 1$ \\KwTo $n-1$}{\n    $key \\leftarrow A[i]$\\;\n    $j \\leftarrow i-1$\\;\n\n    \\While{$j \\geq 0$ \\KwAnd $A[j] > key$}{\n      $A[j+1] \\leftarrow A[j]$\\;\n      $j \\leftarrow j-1$\\;\n    }\n    $A[j+1] \\leftarrow key$\\;\n  }\n\n  \\caption{Insertion Sort}\n  \\label{alg:insertion-sort}\n\\end{algorithm}"} />

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

### mhchem

Chemical formulas and equations.

<LatexSource filename="mhchem-package.tex" source={"\\usepackage{mhchem}\n\n% Chemical formulas\n\\ce{H2O}              % Water\n\\ce{CaCl2}            % Calcium chloride\n\\ce{H2SO4}            % Sulfuric acid\n\n% Chemical equations\n\\ce{2H2 + O2 -> 2H2O}\n\\ce{CaCO3 + 2HCl -> CaCl2 + H2O + CO2}\n\n% Reaction arrows\n\\ce{A <=>> B}         % Equilibrium\n\\ce{A ->[catalyst] B} % Catalyst\n\\ce{A ->[\\Delta] B}   % Heat\n\n% States of matter\n\\ce{H2O(l)}           % Liquid\n\\ce{NaCl(s)}          % Solid\n\\ce{CO2(g)}           % Gas\n\\ce{Na+(aq)}          % Aqueous"} />

<RenderedOutput title="Rendered output">
  <LatexPreview src="/images/rendered/learn-reference-packages-26/page-1.svg" alt="Compiled PDF page 1 from mhchem-package.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>

## Layout and Formatting

### multicol

Multiple column layouts.

<LatexSource filename="multicol-package.tex" source={"\\usepackage{multicol}\n\n% Two-column text\n\\begin{multicols}{2}\n  This text will be formatted in two columns.\n  LaTeX automatically balances the columns.\n\\end{multicols}\n\n% Three columns with separator\n\\begin{multicols}{3}[\\section{Three Column Section}]\n  Content in three columns with a section header.\n\\end{multicols}\n\n% Column break\n\\begin{multicols}{2}\n  First column content.\n  \\columnbreak\n  Second column content.\n\\end{multicols}"} />

<RenderedOutput title="Rendered output">
  <LatexPreview src="/images/rendered/learn-reference-packages-27/page-1.svg" alt="Compiled PDF page 1 from multicol-package.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>

### setspace

Line spacing control.

<LatexSource filename="setspace-package.tex" source={"\\usepackage{setspace}\n\n% Document-wide spacing\n\\singlespacing\n\\onehalfspacing\n\\doublespacing\n\\setstretch{1.5}\n\n% Local spacing\n\\begin{spacing}{1.8}\n  This paragraph has 1.8 line spacing.\n\\end{spacing}\n\n\\begin{singlespace}\n  This paragraph is single-spaced.\n\\end{singlespace}\n\n\\begin{doublespace}\n  This paragraph is double-spaced.\n\\end{doublespace}"} />

<RenderedOutput title="Rendered output">
  <LatexPreview src="/images/rendered/learn-reference-packages-28/page-1.svg" alt="Compiled PDF page 1 from setspace-package.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>

### parskip

Paragraph spacing without indentation.

<LatexSource filename="parskip-package.tex" source={"\\usepackage{parskip}\n\n% Automatically sets:\n% - \\parindent to 0pt\n% - \\parskip to appropriate spacing\n% - Adjusts list environments\n\n% Manual control\n\\setlength{\\parskip}{1em}\n\\setlength{\\parindent}{0pt}"} />

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

## Package Management Tips

### Loading Order

<Warning>
  **Important package loading order:**

  1. **Font encoding**: `inputenc`, `fontenc`
  2. **Language**: `babel`, `polyglossia`
  3. **Fonts**: `lmodern`, `fontspec`
  4. **Math**: `amsmath`, `amssymb`, `mathtools`
  5. **Graphics**: `graphicx`, `tikz`
  6. **Tables**: `booktabs`, `longtable`
  7. **Bibliography**: `biblatex`, `natbib`
  8. **Cross-references**: `cleveref`, `hyperref` (load last)
</Warning>

### Common Conflicts

<LatexSource filename="example.tex" source={"% Avoid these combinations:\n% \\usepackage{subfigure}  % Old package\n% \\usepackage{subcaption} % Use this instead\n\n% \\usepackage{cite}       % Basic citations\n% \\usepackage{natbib}     % Use this for advanced citations\n\n% \\usepackage{hyperref}\n% \\usepackage{cleveref}   % Load cleveref AFTER hyperref"} />

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

<LatexSource filename="example.tex" source={"% Recommended safe order:\n\\usepackage[utf8]{inputenc}\n\\usepackage[T1]{fontenc}\n\\usepackage[english]{babel}\n\\usepackage{lmodern}\n\\usepackage{microtype}\n\n\\usepackage{amsmath}\n\\usepackage{amssymb}\n\\usepackage{graphicx}\n\\usepackage{booktabs}\n\n\\usepackage[style=authoryear]{biblatex}\n\\usepackage{hyperref}\n\\usepackage{cleveref}"} />

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

## Quick Reference

### Most Used Packages

<CardGroup cols={3}>
  <Card title="Essential" icon="star">
    `amsmath` `graphicx` `hyperref` `geometry` `babel`
  </Card>

  <Card title="Typography" icon="font">
    `microtype` `setspace` `parskip` `fontspec` `lmodern`
  </Card>

  <Card title="Tables" icon="table">
    `booktabs` `array` `longtable` `multirow` `tabularx`
  </Card>

  <Card title="Bibliography" icon="book">
    `biblatex` `natbib` `cite` `apacite` `chicago`
  </Card>

  <Card title="Math" icon="square-root-variable">
    `amssymb` `amsthm` `mathtools` `siunitx` `physics`
  </Card>

  <Card title="Code" icon="code">
    `listings` `minted` `verbatim` `algorithm2e` `pseudocode`
  </Card>
</CardGroup>

## Deep-Dive Guides

* [BibLaTeX guide](/learn/latex/bibliography/biblatex-guide)
* [Natbib guide](/learn/latex/bibliography/natbib-guide)
* [Choosing citation styles](/learn/latex/bibliography/choosing-citation-styles)
* [Table of contents](/learn/latex/document-structure/table-of-contents)
* [Glossaries and acronyms](/learn/latex/document-structure/glossaries)
* [Indexes](/learn/latex/document-structure/indexes)
* [Hyperlinks](/learn/latex/document-structure/hyperlinks)
* [Align and multline environments](/learn/latex/mathematics/align-and-multline-environments)
* [Operators and spacing](/learn/latex/mathematics/operators-and-spacing)
* [Fractions and binomials](/learn/latex/mathematics/fractions-binomials)
* [Plotting with pgfplots](/learn/latex/figures/plotting-with-pgfplots)
* [Language setup pages](/learn/latex/languages/french)

***

<Info>
  **Need help choosing packages?** Check our [Package Management Guide](/learn/latex/package-management) for recommendations based on document type and field.
</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=card&utm_campaign=docs_open_app&utm_content=reference_packages_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>
