如何使用 doclicense 包以当前语言显示许可证信息?

如何使用 doclicense 包以当前语言显示许可证信息?

我正在使用模板,我想使用doclicense包并希望它根据当前语言显示许可证信息。不幸的是,出于某种原因,它没有按预期运行。

最小类文件示例testclass.cls如下所示:

\ProvidesClass{testclass}
\LoadClass{article}
\RequirePackage[brazilian,english]{babel}
\RequirePackage[
    type={CC},
    modifier={by},
    version={4.0},
]{doclicense}

\def\@keytest{
    \iflanguage{english}{test}{
    \iflanguage{portuguese}{TESTE}{not found}
    }}

\newcommand{\showtest}{%
 \@keytest\par 
 \doclicenseText\par
 \doclicenseIcon
}

文件.tex如下:

\documentclass[brazilian,english]{testclass}
\usepackage[utf8]{inputenc}

\title{Teste}
\author{Eu}

\begin{document}
\selectlanguage{brazilian}
\maketitle

\showtest
\end{document}

上述代码将语言设置为的结果english为:

使用英语的结果

将语言设置为的结果brazilian为:

使用巴西的结果

请注意,文章的日期和测试变量(keytest)的值已相应改变,但许可证文本却没有改变。

答案1

doclicense 没有更改文档语言的代码。它将使用\languagename加载包时设置的任何语言。

如果您想要巴西语,您可以手动加载语言定义。请注意,它们包含空行和空格,因此请在段落之间执行此操作:

\documentclass{article}
\RequirePackage[brazilian,english]{babel}
\RequirePackage[
    type={CC},
    modifier={by},
    version={4.0},
]{doclicense}

\begin{document}
\selectlanguage{brazilian}
\doclicenseText\par
\doclicenseIcon


\makeatletter\input{doclicense-brazilian.ldf}\makeatother
\doclicenseText\par
\doclicenseIcon
\end{document}

在此处输入图片描述

答案2

使用提供的提示@ulrike-fischer,我已将解决方案嵌入到中newcommand

\documentclass{article}
\RequirePackage[brazilian,english]{babel}
\RequirePackage[
    type={CC},
    modifier={by},
    version={4.0},
]{doclicense}

\newcommand{\tlprintlicense}{
    \iflanguage{english}{\makeatletter\input{doclicense-english.ldf}\makeatother\doclicenseText\par\doclicenseIcon}{
    \iflanguage{french}{\makeatletter\input{doclicense-french.ldf}\makeatother\doclicenseText\par\doclicenseIcon}{
    \iflanguage{german}{\makeatletter\input{doclicense-german.ldf}\makeatother\doclicenseText\par\doclicenseIcon}{
    \iflanguage{portuguese}{\makeatletter\input{doclicense-brazilian.ldf}\makeatother\doclicenseText\par\doclicenseIcon}{\doclicenseText\par\doclicenseIcon}
    }}}}

\begin{document}
\selectlanguage{brazilian}
\tlprintlicense

\selectlanguage{english}
\tlprintlicense
\end{document}

相关内容