我想将图像的宽度指定为预定义长度的一小部分,如下所示:
\documentclass{article}
\usepackage[demo]{graphicx}
\begin{document}
\includegraphics[width=1/3*\textwidth]{}
\end{document}
然而,这是行不通的:
Illegal unit of measure (pt inserted). \includegraphics[width=1/3*\textwidth]{}
答案1
使用以下方式编译lualatex
\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{luacode}
\begin{document}
\newcommand\w{\directlua{tex.sprint(1/3)}}
This is my graph, it has width of \w and it looks very nice
\includegraphics[width=\w\textwidth]{}
\end{document}
答案2
非正式地,长度计算使用因数乘法因为没有分配符号。由于任何除法都可以表示为某种乘法,所以这应该不是问题。因此,.5\textwidth
表示 的一半(1/2)\textwidth
,而2\wd0
表示框 的第w
i个的两倍。在你的情况下,使用d
0
\includegraphics[width=0.3333\textwidth]{<img>}
您可以使用以下方式执行各种计算calc
甚至 LaTeX3:
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\cs_new_eq:NN \calc \fp_eval:n
\ExplSyntaxOff
\begin{document}
\newlength{\mylen}
\setlength{\mylen}{\textwidth}
\verb|\mylen|: \the\mylen
\setlength{\mylen}{\calc{1/3}\textwidth}
\verb|1/3\mylen|: \the\mylen
\end{document}
上面的 LaTeX3 语法创建了\calc
一个new
c
控制s
序列(或宏),它等同eq
于\fp_eval:n
一个fl
浮动p
点函数,eval
该函数使用常规编程算法(如,,,,,...)评估其参数,并+
接受单个参数。-
*
/
^