在 Tex 文件中复制/粘贴图像的宏

在 Tex 文件中复制/粘贴图像的宏

我正在编写一个包含大量图像的文档,这些图像基本上是从其他 PDF 中提取的。

我现在要做的是复制图像,将其粘贴到 MSPaint 中,然后将其保存到用于 \includegraphics{path} 的路径文件夹中。

有没有办法可以简单地完成这项额外的工作,只需复制图像并将其直接从剪贴板粘贴到编辑器中即可?我确信没有直接的方法,但是是否有任何技巧可以将路径或图像转换为 \includegraphics 命令?

我注意到,如果将剪贴板中的图像粘贴到 tex 编辑器中,则不会发生任何事情。有没有办法至少将该图像转换为文件路径?

我画出了我心中的想法,但如果我梦见了独角兽,请纠正我: ![宏观草图

或者有人知道有什么更快的方法吗?当你有很多图片的时候,这很糟糕。

编辑:读完哈米德的回答后,我意识到这是关于设置一个宏:

  1. 将图像从剪贴板保存到文件
  2. 读取名称并包含在预设代码中 (\begin{figure} \includegraphics{path_created_by_macro} \end{figure})
  3. 在编辑器中写入此内容。

答案1

如果您在 Linux 中工作,则可以使用如下 bash 脚本:

#!/bin/bash
for f in `ls  ./myImageDIR/*.png;`
do
  echo '
  \begin{figure}
        \includegraphics{'$f'}
  \end{figure}' 
done

并遵循以下提示:如何从 LaTeX 执行 shell 脚本?,编译文件test.tex

\documentclass{article}
\usepackage{graphicx}
\immediate\write18{./my-shell-script.sh > scriptoutput.tex}
\begin{document}
\input{scriptoutput.tex}
\end{document}

使用命令行:

pdflatex -shell-escape -enable-write18 test.tex

如果需要添加一些文字:

\documentclass{article}
\usepackage{graphicx}
\begin{document}
text ...
\immediate\write18{./InsertOneImageLatex.sh  firstPicture}
\input{firstPicture.tex}
...other text...
\immediate\write18{./InsertOneImageLatex.sh  SecondPicture}
\input{SecondPicture.tex}
\end{document}

InsertOneImageLatex.sh

#!/bin/bash
echo '
\begin{figure}
        \includegraphics{'./myImageDIR/$1.png'}
\end{figure}' > $1.tex; 

答案2

您可以使用 TeXstudio。只需将图像拖放到其中即可。此外,第一次使用时您可能需要在向导中预设一些参数。

如果图像数量非常多,您也可以编写一些脚本,使用 TeXstudio 中的 javascript 一次性导入所有图像。

答案3

扩展 Arianna Angeletti 的答案,如果图像位于父文件夹内的单独子文件夹中,则以下 bash 脚本将为每个子文件夹中的所有图像创建一个包含 latex 代码的文本文件。此脚本必须在父文件夹内执行(父文件夹本身不得包含图片)。可以根据需要格式化用于插入图像的 latex。文件名不得包含空格。

#!/bin/bash
#Find all directories in a parent folder
read -p "Enter image file extension (jpg, png, pdf, ...) " ext
DIRS=()
for i in * ; do 
  if [[ -d "$i" ]] && DIRS+=("$i") ; then
    echo "$i" 
  fi
done
# Create a latex code for each image in the subfolder 
#and write the latex code in a file figureFileNames.txt
for dir in "${DIRS[@]}" ; do
   arr=$(cd $dir && ls *.$ext) 
   for f in $arr;
    do
        postfix=".${ext}"
        f=$f
        f=${f%"$postfix"}
        echo '
        \begin{figure}
        \includegraphics{'$f'}
        \end{figure}' >> $dir/figureFileNames.txt
    done 
done

相关内容