File indexing completed on 2024-11-24 04:34:43
0001 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 0002 <html> 0003 <!-- This document is an unofficial reference manual for LaTeX, a 0004 document preparation system, version of November 2018. 0005 0006 This manual was originally translated from LATEX.HLP v1.0a in the 0007 VMS Help Library. The pre-translation version was written by 0008 George D. Greenwade of Sam Houston State University. The 0009 LaTeX 2.09 version was written by Stephen Gilmore. The 0010 LaTeX2e version was adapted from this by Torsten Martinsen. Karl 0011 Berry made further updates and additions, and gratefully acknowledges 0012 using Hypertext Help with LaTeX, by Sheldon Green, and 0013 LaTeX Command Summary (for LaTeX 2.09) by 0014 L. Botway and C. Biemesderfer (published by the TeX Users 0015 Group as TeXniques number 10), as reference material. We also 0016 gratefully acknowledge additional material appearing in 0017 latex2e-reference by Martin Herbert Dietze. (From these references no 0018 text was directly copied.) 0019 0020 Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013, 0021 2014, 2015, 2016, 2017, 2018 Karl Berry. 0022 0023 Copyright 1988, 1994, 2007 Stephen Gilmore. 0024 0025 Copyright 1994, 1995, 1996 Torsten Martinsen. 0026 0027 Permission is granted to make and distribute verbatim copies of 0028 this manual provided the copyright notice and this permission notice 0029 are preserved on all copies. 0030 0031 0032 Permission is granted to copy and distribute modified versions of this 0033 manual under the conditions for verbatim copying, provided that the entire 0034 resulting derived work is distributed under the terms of a permission 0035 notice identical to this one. 0036 0037 Permission is granted to copy and distribute translations of this manual 0038 into another language, under the above conditions for modified versions. --> 0039 <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ --> 0040 <head> 0041 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 0042 <title>\write18 (LaTeX2e unofficial reference manual (November 2018))</title> 0043 0044 <meta name="description" content="\write18 (LaTeX2e unofficial reference manual (November 2018))"> 0045 <meta name="keywords" content="\write18 (LaTeX2e unofficial reference manual (November 2018))"> 0046 <meta name="resource-type" content="document"> 0047 <meta name="distribution" content="global"> 0048 <meta name="Generator" content="makeinfo"> 0049 <link href="index.html#Top" rel="start" title="Top"> 0050 <link href="IndexDocument.html#Index" rel="index" title="Index"> 0051 <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> 0052 <link href="_005cwrite.html#g_t_005cwrite" rel="up" title="\write"> 0053 <link href="Command-line.html#Command-line" rel="next" title="Command line"> 0054 <link href="_005cwlog.html#g_t_005cwlog" rel="prev" title="\wlog"> 0055 <style type="text/css"> 0056 <!-- 0057 /* $Id: latex2e.css 690 2018-09-15 15:20:19Z jimhefferon $ 0058 Minor css for latexrefman. Public domain. 0059 Originally written by Jim Hefferon and Karl Berry, 2018. */ 0060 0061 /* So you can style for yourself */ 0062 @import url("/css/latexreflocal.css"); 0063 0064 0065 0066 a.summary-letter {text-decoration: none} 0067 blockquote.indentedblock {margin-right: 0em} 0068 blockquote.smallindentedblock {margin-right: 0em; font-size: smaller} 0069 blockquote.smallquotation {font-size: smaller} 0070 div.display {margin-left: 3.2em} 0071 div.example {margin-left: 3.2em} 0072 div.lisp {margin-left: 3.2em} 0073 div.smalldisplay {margin-left: 3.2em} 0074 div.smallexample {margin-left: 3.2em} 0075 div.smalllisp {margin-left: 3.2em} 0076 kbd {font-style: oblique} 0077 pre.display {font-family: inherit} 0078 pre.format {font-family: inherit} 0079 pre.menu-comment {font-family: serif} 0080 pre.menu-preformatted {font-family: serif} 0081 pre.smalldisplay {font-family: inherit; font-size: smaller} 0082 pre.smallexample {font-size: smaller} 0083 pre.smallformat {font-family: inherit; font-size: smaller} 0084 pre.smalllisp {font-size: smaller} 0085 span.nolinebreak {white-space: nowrap} 0086 span.roman {font-family: initial; font-weight: normal} 0087 span.sansserif {font-family: sans-serif; font-weight: normal} 0088 ul.no-bullet {list-style: none} 0089 BODY { 0090 margin-top: 1em; 0091 margin-left: 1em; /* auto results in two-digit <ol> lost off left */ 0092 margin-right: 1em; 0093 margin-bottom: 1em; 0094 /* the idea is to use the whole window, unless it is ridiculously 0095 wide, probably with too-small fonts, too. */ 0096 max-width: 64em; 0097 } 0098 0099 /* Because we want @math{... @code ...} to be upright, not slanted, 0100 and Texinfo won't fix it. */ 0101 code {font-style:normal; font-family:monospace; } 0102 0103 /* We put a link to our own home page at the bottom. */ 0104 div.referenceinfo {font-size:small;} 0105 0106 --> 0107 </style> 0108 0109 0110 </head> 0111 0112 <body lang="en"> 0113 <a name="g_t_005cwrite18"></a> 0114 <div class="header"> 0115 <p> 0116 Previous: <a href="_005cwlog.html#g_t_005cwlog" accesskey="p" rel="prev">\wlog</a>, Up: <a href="_005cwrite.html#g_t_005cwrite" accesskey="u" rel="up">\write</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="IndexDocument.html#Index" title="Index" rel="index">Index</a>]</p> 0117 </div> 0118 <hr> 0119 <a name="g_t_005cwrite18-1"></a> 0120 <h4 class="subsection">27.5.3 <code>\write18</code></h4> 0121 0122 <a name="index-_005cwrite18"></a> 0123 <a name="index-external-commands"></a> 0124 <a name="index-commands_002c-run-from-LaTeX"></a> 0125 0126 <p>Synopsis: 0127 </p> 0128 <div class="example"> 0129 <pre class="example">\write18{<var>shell_command</var>} 0130 </pre></div> 0131 0132 <p>Issue a command to the operating system shell. The operating system 0133 runs the command and LaTeX’s execution is blocked until that 0134 finishes. 0135 </p> 0136 <a name="index-package_002c-Asymptote-3"></a> 0137 <a name="index-Asymptote-package-3"></a> 0138 0139 <p>This 0140 </p> 0141 <div class="example"> 0142 <pre class="example">\usepackage{graphicx} % in preamble 0143 ... 0144 \newcommand{\fignum}{1} 0145 \immediate\write18{cd pix && asy figure\fignum} 0146 \includegraphics{pix\figure\fignum.pdf} 0147 </pre></div> 0148 0149 <p>will run <samp>Asymptote</samp> on <samp>pix/figure1.asy</samp>, so that the 0150 document can later read in the resulting graphic 0151 (see <a href="_005cincludegraphics.html#g_t_005cincludegraphics">\includegraphics</a>). Like any <code>\write</code>, here LaTeX 0152 expands macros in <var>shell_command</var> so that <code>\fignum</code> is replaced 0153 by ‘<samp>1</samp>’. 0154 </p> 0155 <p>Another example is that you can automatically run BibTeX at the start 0156 of each LaTeX run (see <a href="Using-BibTeX.html#Using-BibTeX">Using BibTeX</a>) by including 0157 <code>\immediate\write18{bibtex8 \jobname}</code> as the first line of the 0158 file. Note that <code>\jobname</code> gives the base name of the current 0159 file. 0160 </p> 0161 <p>You sometimes need to do a multi-step process to get the information 0162 that you want. This will insert into the input a list of all PDF files 0163 in the current directory. 0164 </p> 0165 <div class="example"> 0166 <pre class="example">\immediate\write18{ls *.pdf > tmp.dat} 0167 \input{tmp.dat} 0168 </pre></div> 0169 0170 <p>The standard behaviour of any <code>\write</code> is to wait until a page is 0171 being shipped out before expanding the macros or writing to the stream 0172 (see <a href="_005cwrite.html#g_t_005cwrite">\write</a>). But sometimes you want it done now. For this, use 0173 <code>\immediate\write18{<var>shell_command</var>}</code>. 0174 </p> 0175 <p>There are obvious security issues with allowing system commands inside a 0176 LaTeX file. If you download a file off the net and it contains 0177 commands to delete all your files then you would be annoyed. The 0178 standard settings in modern distributions turn off full shell 0179 access. You can turn it on, if you are sure the shell commands are safe, 0180 by compiling with <code>latex --shell-escape <var>filename</var></code> for TeX 0181 Live or MacTeX or <code>latex --enable-write18 <var>filename</var></code> for 0182 MiKTeX (see <a href="Command-line-options.html#Command-line-options">Command line options</a>). 0183 </p> 0184 <p>In the place of full shell access, modern distributions by default use a 0185 restricted version that allows some commands to work, such as those that 0186 run Metafont to generate missing fonts, even if you do not use the 0187 <code>shell-escape</code> or <code>enable-write18</code> option. By default this 0188 list of allowed commands is short and features only commands that are 0189 under the control of the distribution maintainers (see <a href="Command-line-options.html#Command-line-options">Command line options</a>). 0190 </p> 0191 <p>Some packages need to run external system commands. For instance 0192 <samp>sagetex</samp> allows you to have the mathematics software system 0193 <i>Sage</i> do calculations or draw graphs and then incorporate that output 0194 in your document. For this you must compile with full <code>\write18</code> 0195 capability turned on. 0196 </p> 0197 0198 0199 0200 <hr/><div class='referenceinfo'> <a href='https://latexref.xyz/'> <i>Unofficial LaTeX2e reference manual</i></a></div> 0201 </body> 0202 </html>