如何将 Java 源代码从多个文件夹导入到 LaTeX

如何将 Java 源代码从多个文件夹导入到 LaTeX

我想将所有 Java 源代码添加到附录中。但我有 20 个项目。是否可以只告诉 LaTeX 包含不同项目的文件夹在哪里,然后 LaTeX 会从那里收集所有源代码?并为每个部分和子部分提供文件的名称?

哇喔。我最近用 Java 编写了很多程序,我想将不同的项目包含到我的附录中。

我确实在 Netbeans 中编写了我的 Java 项目。项目结构如下:

文件夹和文件

紫色文件夹(项目 XYZ)应为部分的名称。子部分的名称应为包的名称(如果没有子部分,则为文件的名称),子子部分应为文件的名称。

我找到了一个关于如何对单个文件执行此操作的示例。但我不想为每个项目单独添加所有文件。我有大约 20 个项目,其中包含许多包和许多文件。这将花费数年时间。

所以我想问一下:有没有办法只提供包含所有项目的文件夹或每个单独项目的路径,然后 LaTeX 从那里收集所有文件?

这里我讲过的例子关于:

\documentclass{article}
\usepackage{pgffor}
\usepackage{listings}
\begin{document}

\foreach \java in  {hello, hello} {
   \begin{figure}[htpb]
        \lstinputlisting[language=java]{\java.java}
        \caption{Source code for \textsf{\java.java}}
     \label{fig:\java}
   \end{figure}
}

\end{document}

答案1

我确实编写了一个小 Java 程序。如果您有更好的解决方案,请告诉我!无论是关于优化我的 Java 代码、有替代解决方案还是其他任何事情:请告诉我。谢谢。

这是代码:

package dir;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class Dir {

    private static String fileType;
    private static String fileName;
    private static String pathName;
    private static String folderName;
    private static String oldFolderName = "";

    public static void main(String[] args) {
        File currentDir = new File(".");
        content(currentDir);
    }

    public static void content(File dir) {
        try {
            File[] files = dir.listFiles();
            for (File file : files) {
                if (file.isDirectory()) {
                    pathName = file.getName();
                    if (pathName.equals("src")) {
                        pathName = "main";
                    }
                    content(file);
                } else {
                    fileType = Files.probeContentType(Paths.get(file.getAbsolutePath()));

                    if (fileType.equals("text/x-java")) {
                        fileName = file.getName();
                        folderName = file.getParentFile().getName();

                        if(folderName.equals("src")){
                            folderName = file.getParentFile().getParentFile().getName();
                        }else{
                            folderName = file.getParentFile().getParentFile().getParentFile().getName();
                        }

                        if(!folderName.equals(oldFolderName)){
                            System.out.println("\\section{" + folderName + "}");
                        }

                        if(!pathName.equals("")){
                        System.out.println("\\subsection{" + pathName + "}");
                        }


                        System.out.println("\\subsubsection{" + fileName + "}");
                        System.out.println("\\lstinputlisting[language=java]{" + file.getCanonicalPath() + "}");
                        System.out.println("");
                        pathName = "";
                        oldFolderName = folderName;
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

相关内容