\textwidth 的分数作为图像宽度

\textwidth 的分数作为图像宽度

我想将图像的宽度指定为预定义长度的一小部分,如下所示:

\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

Mathematica 图形

\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表示框 的第wi个的两倍。在你的情况下,使用d0

\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该函数使用常规编程算法(如,,,,,...)评估其参数,并+接受单个参数。-*/^

相关内容