Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
SDAPS Class and Package repository
==================================

Version: 1.9.9
Version: 2.0

This repository contains LaTeX classes and packages to create machine readable
questionnaires. Metadata is generated for the whole document and it is
Expand Down
2 changes: 1 addition & 1 deletion build.lua
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ uploadconfig = {
repository = "https://github.com/sdaps/sdaps-class/",
bugtracker = "https://github.com/sdaps/sdaps-class/issues",
update = true,
version = "1.9.9",
version = "2.0",
description = [[
This module contains LaTeX classes and packages to create machine readable
questionnaires. Metadata is generated for the whole document and it is
Expand Down
75 changes: 34 additions & 41 deletions sdapsbase.dtx
Original file line number Diff line number Diff line change
Expand Up @@ -603,6 +603,24 @@
\tl_set:NV #2 \l__sdaps_tmpa_tl
}

\cs_new_protected_nopar:Nn \_sdaps_get_var:N
{
\sdaps_context_get:nN { _implicit_var } \l__sdaps_tmpa_tl
\tl_if_eq:VnTF \l__sdaps_tmpa_tl { \q_no_value } {
% Just return the current variable
\sdaps_context_get:nN { _var } #1
} {
% Prepend explicit variable name
\sdaps_context_get:nN { _var } \l__sdaps_tmpb_tl
\tl_if_eq:VnF \l__sdaps_tmpb_tl { \q_no_value } {
\tl_put_left:Nn \l__sdaps_tmpa_tl { _ }
\tl_put_left:NV \l__sdaps_tmpa_tl \l__sdaps_tmpb_tl
}

\tl_set:NV #1 \l__sdaps_tmpa_tl
}
}

\cs_new_protected_nopar:Nn \_sdaps_box_inc_object_id:
{
\bool_if:NT \g_sdaps_write_enable_bool {
Expand Down Expand Up @@ -685,52 +703,23 @@
\cs_generate_variant:Nn \sdaps_set_questionnaire_id:n { V }


\cs_new_protected_nopar:Nn \__sdaps_append_override_options:Nnn
\cs_new_protected_nopar:Nn \__sdaps_append_override_options:Nn
{
% Global definition
% First generic for all items
\prop_get:NnNT \g__sdaps_overrides_prop { * } \l__sdaps_tmpa_tl {
\tl_put_right:Nn #1 {,}
\tl_put_right:NV #1 \l__sdaps_tmpa_tl
}
\tl_if_empty:nF { #2 } {
% Items with same variable name
% Global (non-questionnaire ID specific) definition
\prop_get:NnNT \g__sdaps_overrides_prop { #2 } \l__sdaps_tmpa_tl {
\tl_put_right:Nn #1 {,}
\tl_put_right:NV #1 \l__sdaps_tmpa_tl
}
\tl_if_empty:nF { #3 } {
% Items with same variable name and value
\prop_get:NnNT \g__sdaps_overrides_prop { #2&#3 } \l__sdaps_tmpa_tl {
\tl_put_right:Nn #1 {,}
\tl_put_right:NV #1 \l__sdaps_tmpa_tl
}
}
}


% Local (questionnaire ID specific) definition
% First generic for all items
\prop_get:NnNT \g__sdaps_id_overrides_prop { * } \l__sdaps_tmpa_tl {
\tl_put_right:Nn #1 {,}
\tl_put_right:NV #1 \l__sdaps_tmpa_tl
}
\tl_if_empty:nF { #2 } {
% Items with same variable name
% Local (questionnaire ID specific) definition
\prop_get:NnNT \g__sdaps_id_overrides_prop { #2 } \l__sdaps_tmpa_tl {
\tl_put_right:Nn #1 {,}
\tl_put_right:NV #1 \l__sdaps_tmpa_tl
}
\tl_if_empty:nF { #3 } {
% Items with same variable name and value
\prop_get:NnNT \g__sdaps_id_overrides_prop { #2&#3 } \l__sdaps_tmpa_tl {
\tl_put_right:Nn #1 {,}
\tl_put_right:NV #1 \l__sdaps_tmpa_tl
}
}
}
}
\cs_generate_variant:Nn \__sdaps_append_override_options:Nnn { NVn }
\cs_generate_variant:Nn \__sdaps_append_override_options:Nn { NV }

% \end{macrocode}
%
Expand All @@ -749,6 +738,7 @@
\int_set:Nn \g__sdaps_textbox_num_int 0

\tl_new:N \l_sdaps_var_tl
\tl_new:N \l_sdaps_boxtype_tl
\dim_new:N \l_sdaps_x_dim
\dim_new:N \l_sdaps_y_dim
\dim_new:N \l_sdaps_width_dim
Expand Down Expand Up @@ -934,18 +924,21 @@
{
\group_begin:%

\_sdaps_generate_var:nN { #1 } \l_sdaps_var_tl

\sdaps_context_get:nN { checkboxtype } \l__sdaps_tmpa_tl
\tl_if_eq:VnTF \l__sdaps_tmpa_tl { multichoice } {
\sdaps_context_get:nN { checkboxtype } \l_sdaps_boxtype_tl
\tl_if_eq:VnTF \l_sdaps_boxtype_tl { multichoice } {
\_sdaps_generate_var:nN { #1 } \l_sdaps_var_tl
\tl_set:Nn \l_sdaps_parse_unknown_tl { box }
\tl_set:Nx \l__sdaps_tmpa_tl { \l_sdaps_var_tl }
} {
\_sdaps_get_var:N \l_sdaps_var_tl
\tl_set:Nn \l_sdaps_parse_unknown_tl { ellipse }
%\tl_set:Nx \l__sdaps_tmpa_tl { \l_sdaps_var_tl&#2 }
\tl_set:Nx \l__sdaps_tmpa_tl { \l_sdaps_var_tl&#2 }
}

\__sdaps_append_from_context:nN { * } \l_sdaps_parse_unknown_tl
\__sdaps_append_from_context:VN \l__sdaps_tmpa_tl \l_sdaps_parse_unknown_tl
\__sdaps_append_override_options:NVn \l_sdaps_parse_unknown_tl \l_sdaps_var_tl { #2 }
\__sdaps_append_from_context:VN \l_sdaps_boxtype_tl \l_sdaps_parse_unknown_tl
\__sdaps_append_override_options:NV \l_sdaps_parse_unknown_tl \l__sdaps_tmpa_tl

\keys_set_known:nVN { sdaps / checkbox } \l_sdaps_parse_unknown_tl \l_sdaps_parse_unknown_tl

Expand Down Expand Up @@ -1074,7 +1067,7 @@

\__sdaps_append_from_context:nN { * } \l_sdaps_parse_unknown_tl
\__sdaps_append_from_context:VN \l__sdaps_tmpa_tl \l_sdaps_parse_unknown_tl
\__sdaps_append_override_options:NVn \l_sdaps_parse_unknown_tl \l_sdaps_var_tl { }
\__sdaps_append_override_options:NV \l_sdaps_parse_unknown_tl \l_sdaps_var_tl

\keys_set_known:nVN { sdaps / textbox } \l_sdaps_parse_unknown_tl \l_sdaps_parse_unknown_tl

Expand Down Expand Up @@ -1777,7 +1770,7 @@
\bool_gset:Nn \g__sdaps_last_page_bool \c_false_bool

% TODO: We really want to make sure nobody modifies the values after \sdaps_begin:
\sdaps_info_write:x{SDAPSVersion=1.9.9}
\sdaps_info_write:x{SDAPSVersion=2.0}
\sdaps_info_write:x{Duplex=\bool_if:NTF \g_sdaps_twoside_bool {true} {false}}
\sdaps_info_write:x{PrintQuestionnaireId=\bool_if:NTF \g_sdaps_print_questionnaire_id_bool {1} {0}}
\sdaps_info_write:x{
Expand Down
5 changes: 4 additions & 1 deletion sphinx/extensions/texdomain.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,16 @@
import re
from sphinx import addnodes
from sphinx.domains import Domain, ObjType
from sphinx.locale import l_, _
from sphinx.locale import get_translation
from sphinx.directives import ObjectDescription
from sphinx.roles import XRefRole
from sphinx.util.nodes import make_refnode
from sphinx.util.docfields import Field, GroupedField, TypedField
from docutils import nodes

# Copied from sphinx.locale, and changed back __ to l_
_ = get_translation('sphinx')
l_ = get_translation('sphinx', 'console')

class desc_texenvcontent(nodes.Part, nodes.TextElement):
"""Node for a general parameter list."""
Expand Down
26 changes: 8 additions & 18 deletions sphinx/sdapsbase.rst
Original file line number Diff line number Diff line change
Expand Up @@ -233,20 +233,11 @@ There is only one command to set the overrides string:

:arg overrides: A key=value argument with all the override definitions.

Each of the override definitions will be appened to the items keys if it is
matching. Matching happens first based on the questionnaire ID with ``*``
being allowed as a wildcard, and then based on variable name and value. The
second level (name and value) is either just the variable name or the variable
name and value separated by an ``&`` character.

This gives six matches with increasing priority:

* wildcard questionnaire ID, wildcard target
* wildcard questionnaire ID, matching variable
* wildcard questionnaire ID, matching variable, matching value
* matching questionnaire ID, wildcard target
* matching questionnaire ID, matching variable
* matching questionnaire ID, matching variable, matching value
This only allows overriding a specific box based on the questoinnaire it is
on. On the first level, a match against the questionnaire ID happens
(or `*`). For single choice boxes, the boxes are addressed by using the
question variable and value separated by `&`. Otherwise they are addressed
using the variable only.

.. sdaps:: Overriding checkbox color and pre-filled value based on
questionnaire ID and variables.
Expand All @@ -257,12 +248,11 @@ There is only one command to set the overrides string:
\sdaps_overrides_init:n{
% For all questoinnaires independent of their ID
*={
% For all elements which use the overrides
*={fill=green},
% Specific element with that variable name
flower_bob_alice={draw_check=true},
% Specific element with variable "var" and value 1
var&1={draw_check=true},

% If we had a single choice (option) question:
variable&1={draw_check=true},
},
% Specific questionnaire ID
testid={
Expand Down
9 changes: 4 additions & 5 deletions testfiles/base.lvt
Original file line number Diff line number Diff line change
Expand Up @@ -88,24 +88,21 @@
\ExplSyntaxOn
\sdaps_overrides_init:n{
*={
*={},
var1={},
var2&val1={},
},
qid1={
*={},
var1={},
var2&val1={},
},
testoverrideqid={
*={height=5mm},
testvar={height=10mm},
3_testvar={height=12.5mm},
testvar&testval={height=15mm},
3&testval={height=15mm},

prefix_1={height=7mm},
prefix_testvar={height=10mm},
prefix_testvar&testval={height=15mm},
prefix&testval={height=15mm},
},
}
\ExplSyntaxOff
Expand Down Expand Up @@ -190,6 +187,7 @@

\sdaps_checkbox:nn { _testvar } {} {}~

\sdaps_context_set:n { checkboxtype=singlechoice }
\sdaps_checkbox:nn { testvar } { testval } {}
}

Expand All @@ -205,6 +203,7 @@

\sdaps_checkbox:nn { _testvar } {} {}~

\sdaps_context_set:n { checkboxtype=singlechoice }
\sdaps_checkbox:nn { testvar } { testval } {}
}

Expand Down
16 changes: 8 additions & 8 deletions testfiles/base.tlg
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ TEST 1: Initialize SDAPS
encoded: \startC ,32,49,89,23,00,01,85,\stop ,
black-white: 21123223212121133121214131213121222222212212421123311120
[1
[1]SDAPSVersion=1.9.9
[1]SDAPSVersion=2.0
[2]Duplex=false
[3]PrintQuestionnaireId=0
[4]PageSize=597.50793pt,845.04694pt
Expand Down Expand Up @@ -53,16 +53,16 @@ encoded: \startC ,32,49,89,23,00,03,97,\stop ,
black-white: 21123223212121133121214131213121222212122341111323311120
[3
[14]QObject-Choice=3. A choice question
[15]Box[3]=Checkbox,3,89.62619pt,746.31589pt,9.95845pt,14.22636pt,box,1.00374pt,3_1,1
[15]Box[3]=Checkbox,3,89.62619pt,744.18193pt,9.95845pt,9.95845pt,box,1.00374pt,3_1,1
[16]Box[3]=Checkbox,3,103.23462pt,753.42908pt,9.95845pt,28.45274pt,box,1.00374pt,testvar,2
[17]Box[3]=Checkbox,3,116.84305pt,756.98567pt,9.95845pt,35.56593pt,box,1.00374pt,3_testvar,3
[18]Box[3]=Checkbox,3,130.45148pt,760.54227pt,9.95845pt,42.67912pt,box,1.00374pt,testvar,testval
[18]Box[3]=Checkbox,3,130.45148pt,760.54227pt,9.95845pt,42.67912pt,ellipse,1.00374pt,3,testval
[19]Variable[3]=3
[20]QObject-Choice=4. A choice question
[21]Box[4]=Checkbox,3,89.62619pt,705.48206pt,9.95845pt,19.91692pt,box,1.00374pt,prefix_1,1
[22]Box[4]=Checkbox,3,103.23462pt,709.74997pt,9.95845pt,28.45274pt,box,1.00374pt,prefix_testvar,2
[23]Box[4]=Checkbox,3,116.84305pt,709.74997pt,9.95845pt,28.45274pt,box,1.00374pt,prefix_testvar,3
[24]Box[4]=Checkbox,3,130.45148pt,716.86316pt,9.95845pt,42.67912pt,box,1.00374pt,prefix_testvar,testval
[24]Box[4]=Checkbox,3,130.45148pt,716.86316pt,9.95845pt,42.67912pt,ellipse,1.00374pt,prefix,testval
[25]Variable[4]=prefix
[26]Pages=3
]
Expand Down Expand Up @@ -153,12 +153,12 @@ black-white: 21123223212121133121214131213121222212231222321123311120
[64]QObject-Choice=8. A choice question
[65]Box[8]=Checkbox,7,89.62619pt,758.29315pt,9.95845pt,9.95845pt,box,1.00374pt,8_1,1
[66]Box[8]=Checkbox,7,99.58463pt,758.29315pt,9.95845pt,9.95845pt,box,2.00749pt,8_2,2
[67]Box[8]=Checkbox,7,89.62619pt,744.69315pt,9.95845pt,9.95845pt,ellipse,1.00374pt,8_3,3
[68]Box[8]=Checkbox,7,99.58463pt,744.69315pt,9.95845pt,9.95845pt,ellipse,2.00749pt,8_4,4
[67]Box[8]=Checkbox,7,89.62619pt,744.69315pt,9.95845pt,9.95845pt,ellipse,1.00374pt,8,3
[68]Box[8]=Checkbox,7,99.58463pt,744.69315pt,9.95845pt,9.95845pt,ellipse,2.00749pt,8,4
[69]Box[8]=Checkbox,7,89.62619pt,731.09314pt,9.95845pt,9.95845pt,box,1.00374pt,8_5,5
[70]Box[8]=Checkbox,7,99.58463pt,731.09314pt,9.95845pt,9.95845pt,box,1.00374pt,8_6,6
[71]Box[8]=Checkbox,7,89.62619pt,717.49313pt,9.95845pt,9.95845pt,ellipse,1.00374pt,8_7,7
[72]Box[8]=Checkbox,7,99.58463pt,717.49313pt,9.95845pt,9.95845pt,ellipse,2.00749pt,8_8,8
[71]Box[8]=Checkbox,7,89.62619pt,717.49313pt,9.95845pt,9.95845pt,ellipse,1.00374pt,8,7
[72]Box[8]=Checkbox,7,99.58463pt,717.49313pt,9.95845pt,9.95845pt,ellipse,2.00749pt,8,8
[73]Variable[8]=8
[74]Pages=7
]
Expand Down
12 changes: 6 additions & 6 deletions testfiles/base.xetex.tlg
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ TEST 1: Initialize SDAPS
encoded: \startC ,32,49,89,23,00,01,85,\stop ,
black-white: 21123223212121133121214131213121222222212212421123311120
[1
[1]SDAPSVersion=1.9.9
[1]SDAPSVersion=2.0
[2]Duplex=false
[3]PrintQuestionnaireId=0
[4]PageSize=597.50793pt,845.04694pt
Expand Down Expand Up @@ -53,7 +53,7 @@ encoded: \startC ,32,49,89,23,00,03,97,\stop ,
black-white: 21123223212121133121214131213121222212122341111323311120
[3
[14]QObject-Choice=3. A choice question
[15]Box[3]=Checkbox,3,89.62619pt,746.31589pt,9.95845pt,14.22636pt,box,1.00374pt,3_1,1
[15]Box[3]=Checkbox,3,89.62619pt,744.18193pt,9.95845pt,9.95845pt,box,1.00374pt,3_1,1
[16]Box[3]=Checkbox,3,103.23097pt,753.42908pt,9.95845pt,28.45274pt,box,1.00374pt,testvar,2
[17]Box[3]=Checkbox,3,116.83575pt,756.98567pt,9.95845pt,35.56593pt,box,1.00374pt,3_testvar,3
[18]Box[3]=Checkbox,3,130.44054pt,760.54227pt,9.95845pt,42.67912pt,box,1.00374pt,testvar,testval
Expand Down Expand Up @@ -153,12 +153,12 @@ black-white: 21123223212121133121214131213121222212231222321123311120
[64]QObject-Choice=8. A choice question
[65]Box[8]=Checkbox,7,89.62619pt,758.29706pt,9.95845pt,9.95845pt,box,1.00374pt,8_1,1
[66]Box[8]=Checkbox,7,99.58463pt,758.29706pt,9.95845pt,9.95845pt,box,2.00749pt,8_2,2
[67]Box[8]=Checkbox,7,89.62619pt,744.69705pt,9.95845pt,9.95845pt,ellipse,1.00374pt,8_3,3
[68]Box[8]=Checkbox,7,99.58463pt,744.69705pt,9.95845pt,9.95845pt,ellipse,2.00749pt,8_4,4
[67]Box[8]=Checkbox,7,89.62619pt,744.69705pt,9.95845pt,9.95845pt,ellipse,1.00374pt,8,3
[68]Box[8]=Checkbox,7,99.58463pt,744.69705pt,9.95845pt,9.95845pt,ellipse,2.00749pt,8,4
[69]Box[8]=Checkbox,7,89.62619pt,731.09705pt,9.95845pt,9.95845pt,box,1.00374pt,8_5,5
[70]Box[8]=Checkbox,7,99.58463pt,731.09705pt,9.95845pt,9.95845pt,box,1.00374pt,8_6,6
[71]Box[8]=Checkbox,7,89.62619pt,717.49704pt,9.95845pt,9.95845pt,ellipse,1.00374pt,8_7,7
[72]Box[8]=Checkbox,7,99.58463pt,717.49704pt,9.95845pt,9.95845pt,ellipse,2.00749pt,8_8,8
[71]Box[8]=Checkbox,7,89.62619pt,717.49704pt,9.95845pt,9.95845pt,ellipse,1.00374pt,8,7
[72]Box[8]=Checkbox,7,99.58463pt,717.49704pt,9.95845pt,9.95845pt,ellipse,2.00749pt,8,8
[73]Variable[8]=8
[74]Pages=7
]
Expand Down
Loading