PHP 8.2.31
Preview: latex.php Size: 4.61 KB
/home/nshryvcy/himaltourism.com/wp-content/plugins/jetpack/modules/latex.php

<?php
/**
 * Module Name: Beautiful Math
 * Module Description: Use the LaTeX markup language to write mathematical equations and formulas
 * Sort Order: 12
 * First Introduced: 1.1
 * Requires Connection: No
 * Auto Activate: No
 * Module Tags: Writing
 * Feature: Writing
 * Additional Search Queries: latex, math, equation, equations, formula, code
 *
 * @package automattic/jetpack
 */

/**
 * LaTeX support.
 *
 * Backward compatibility requires support for both "[latex][/latex]", and
 * "$latex $" shortcodes.
 *
 * $latex e^{\i \pi} + 1 = 0$  ->  [latex]e^{\i \pi} + 1 = 0[/latex]
 * $latex [a, b]$              ->  [latex][a, b][/latex]
 */

/**
 * Markup LaTeX content.
 *
 * @param string $content Post or comment contents to markup.
 */
function latex_markup( $content ) {
	$textarr = wp_html_split( $content );

	$regex = '%
		\$latex(?:=\s*|\s+)
		((?:
			[^$]+ # Not a dollar
		|
			(?<=(?<!\\\\)\\\\)\$ # Dollar preceded by exactly one slash
		)+)
		(?<!\\\\)\$ # Dollar preceded by zero slashes
	%ix';

	foreach ( $textarr as &$element ) {
		if ( '' === $element || '<' === $element[0] ) {
			continue;
		}

		if ( false === stripos( $element, '$latex' ) ) {
			continue;
		}

		$element = preg_replace_callback( $regex, 'latex_src', $element );
	}

	return implode( '', $textarr );
}

/**
 * Process LaTeX string to rendered image.
 *
 * @param array $matches Matched regex results.
 */
function latex_src( $matches ) {
	$latex = $matches[1];

	$bg = latex_get_default_color( 'bg' );
	$fg = latex_get_default_color( 'text', '000' );
	$s  = 0;

	$latex = latex_entity_decode( $latex );
	if ( preg_match( '/.+(&fg=[0-9a-f]{6}).*/i', $latex, $fg_matches ) ) {
		$fg    = substr( $fg_matches[1], 4 );
		$latex = str_replace( $fg_matches[1], '', $latex );
	}
	if ( preg_match( '/.+(&bg=[0-9a-f]{6}).*/i', $latex, $bg_matches ) ) {
		$bg    = substr( $bg_matches[1], 4 );
		$latex = str_replace( $bg_matches[1], '', $latex );
	}
	if ( preg_match( '/.+(&s=[0-9-]{1,2}).*/i', $latex, $s_matches ) ) {
		$s     = (int) substr( $s_matches[1], 3 );
		$latex = str_replace( $s_matches[1], '', $latex );
	}

	return latex_render( $latex, $fg, $bg, $s );
}

/**
 * Get the default color for an attribute.
 *
 * @param string $color Attribute to color (e.g. bg).
 * @param string $default_color Default fallback color to use.
 */
function latex_get_default_color( $color, $default_color = 'ffffff' ) {
	global $themecolors;
	return isset( $themecolors[ $color ] ) ? $themecolors[ $color ] : $default_color;
}

/**
 * Decode special characters in a LaTeX string.
 *
 * @param string $latex Character encoded content.
 */
function latex_entity_decode( $latex ) {
	return str_replace( array( '&lt;', '&gt;', '&quot;', '&#039;', '&#038;', '&amp;', "\n", "\r" ), array( '<', '>', '"', "'", '&', '&', ' ', ' ' ), $latex );
}

/**
 * Returns the URL for the server-side rendered image of LaTeX.
 *
 * @param string $latex LaTeX string.
 * @param string $fg Foreground color.
 * @param string $bg Background color.
 * @param int    $s Matches.
 *
 * @return string Image URL for the rendered LaTeX.
 */
function latex_render( $latex, $fg, $bg, $s = 0 ) {
	$url = add_query_arg(
		urlencode_deep(
			array(
				'latex' => $latex,
				'bg'    => $bg,
				'fg'    => $fg,
				's'     => $s,
				'c'     => '20201002', // cache buster. Added 2020-10-02 after server migration caused faulty rendering.
			)
		),
		( is_ssl() ? 'https://' : 'http://' ) . 's0.wp.com/latex.php'
	);

	$alt = str_replace( '\\', '&#92;', esc_attr( $latex ) );

	return sprintf(
		'<img src="%1$s" alt="%2$s" class="latex" />',
		esc_url( $url ),
		$alt
	);
}

/**
 * The shortcode way. The attributes are the same as the old ones - 'fg' and 'bg', instead of foreground
 * and background, and 's' is for the font size.
 *
 * Example: [latex s=4 bg=00f fg=ff0]\LaTeX[/latex]
 *
 * @param array  $atts Shortcode attributes.
 * @param string $content Content to format.
 */
function latex_shortcode( $atts, $content = '' ) {
	$attr = shortcode_atts(
		array(
			's'  => 0,
			'bg' => latex_get_default_color( 'bg' ),
			'fg' => latex_get_default_color( 'text', '000' ),
		),
		$atts,
		'latex'
	);

	return latex_render( latex_entity_decode( $content ), $attr['fg'], $attr['bg'], $attr['s'] );
}

/**
 * LaTeX needs to be untexturized.
 *
 * @param array $shortcodes Array of shortcodes not to texturize.
 */
function latex_no_texturize( $shortcodes ) {
	$shortcodes[] = 'latex';
	return $shortcodes;
}
add_filter( 'no_texturize_shortcodes', 'latex_no_texturize' );

add_filter( 'the_content', 'latex_markup', 9 ); // Before wptexturize.
add_filter( 'comment_text', 'latex_markup', 9 ); // Before wptexturize.
add_shortcode( 'latex', 'latex_shortcode' );

Directory Contents

Dirs: 42 × Files: 53

Name Size Perms Modified Actions
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
carousel DIR
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
comments DIR
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
- drwxr-xr-x 2023-04-04 05:35:21
Edit Download
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
- drwxr-xr-x 2023-04-04 05:35:21
Edit Download
gravatar DIR
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
likes DIR
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
markdown DIR
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
masterbar DIR
- drwxr-xr-x 2023-04-04 05:35:21
Edit Download
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
photon DIR
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
- drwxr-xr-x 2023-04-04 05:35:21
Edit Download
protect DIR
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
scan DIR
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
seo-tools DIR
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
- drwxr-xr-x 2023-04-04 05:35:21
Edit Download
- drwxr-xr-x 2023-04-04 05:35:21
Edit Download
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
site-icon DIR
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
sitemaps DIR
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
sso DIR
- drwxr-xr-x 2023-04-04 05:35:21
Edit Download
stats DIR
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
- drwxr-xr-x 2023-04-04 05:35:21
Edit Download
widgets DIR
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
wordads DIR
- drwxr-xr-x 2023-04-04 05:35:21
Edit Download
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
wpcom-tos DIR
- drwxr-xr-x 2023-04-04 05:35:20
Edit Download
644 B lrw-r--r-- 2023-04-04 05:35:21
Edit Download
564 B lrw-r--r-- 2023-04-04 05:35:21
Edit Download
7.98 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
993 B lrw-r--r-- 2023-04-04 05:35:21
Edit Download
7.47 KB lrw-r--r-- 2023-04-04 05:35:21
Edit Download
12.27 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
1.53 KB lrw-r--r-- 2023-04-04 05:35:21
Edit Download
1.37 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
2.39 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
2.44 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
501 B lrw-r--r-- 2023-04-04 05:35:20
Edit Download
3.72 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
11.81 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
8.14 KB lrw-r--r-- 2023-04-04 05:35:21
Edit Download
484 B lrw-r--r-- 2023-04-04 05:35:21
Edit Download
4.61 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
1.12 KB lrw-r--r-- 2023-04-04 05:35:21
Edit Download
21.35 KB lrw-r--r-- 2023-04-04 05:35:21
Edit Download
1007 B lrw-r--r-- 2023-04-04 05:35:21
Edit Download
1.56 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
2.93 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
46.44 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
28.17 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
3.51 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
7.94 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
12.09 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
781 B lrw-r--r-- 2023-04-04 05:35:20
Edit Download
19.84 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
596 B lrw-r--r-- 2023-04-04 05:35:20
Edit Download
533 B lrw-r--r-- 2023-04-04 05:35:20
Edit Download
28.83 KB lrw-r--r-- 2023-04-04 05:35:21
Edit Download
4.55 KB lrw-r--r-- 2023-04-04 05:35:21
Edit Download
2.12 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
1.17 KB lrw-r--r-- 2023-04-04 05:35:21
Edit Download
1.52 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
1.61 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
6.06 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
4.37 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
1.28 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
38.12 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
51.87 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
31.93 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
2.52 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
1.05 KB lrw-r--r-- 2023-04-04 05:35:21
Edit Download
1.70 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
830 B lrw-r--r-- 2023-04-04 05:35:21
Edit Download
1007 B lrw-r--r-- 2023-04-04 05:35:20
Edit Download
297 B lrw-r--r-- 2023-04-04 05:35:21
Edit Download
475 B lrw-r--r-- 2023-04-04 05:35:21
Edit Download
2.85 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download
631 B lrw-r--r-- 2023-04-04 05:35:20
Edit Download
577 B lrw-r--r-- 2023-04-04 05:35:20
Edit Download
1.91 KB lrw-r--r-- 2023-04-04 05:35:20
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).